1
0

Accepting request 77125 from X11:XOrg

- update:
  * randr1_1-sig11.diff
    removed accidentally forgotten debugging code.
  * u_OS-acpi-Reconnect-to-acpid-when-it-gets-restarted.patch
    made socket non-blocking. Idea taken from a pach for SLES11.

- don't look for 10-evdev.conf for anything older than 11.3
  (this includes SLE-11).

- remove use-last-screen.patch:
  This patch has been rejected upstream. We will try to resolve
  this issue differently by not providing any screen, monitor or
  device section.

- remove disable-fbblt-opt.diff:
  We are unable to reproduce this issue any more.
  So let's remove the workaround and start from scratch
  when issue resurfaces and find a proper fix. 

- fixed bug-197858_dpms.diff:
  removed pieces that have been solved differently today.

- remove moblin-use_preferred_mode_for_all_outputs.diff:
  remove moblin specific patches.

- rename edit_data_sanity_check.diff -> edid_data_sanity_check.diff

- remove p_xkills_wrong_client.diff:
  made obsolete by commit b7f3618f.

OBS-URL: https://build.opensuse.org/request/show/77125
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/xorg-x11-server?expand=0&rev=216
This commit is contained in:
Sascha Peilicke 2011-07-27 08:07:36 +00:00 committed by Git OBS Bridge
commit 7e34effb77
27 changed files with 454 additions and 993 deletions

View File

@ -1,121 +0,0 @@
>From fedf91eeabcfdd6d26b52529a16a64f744aa42ad Mon Sep 17 00:00:00 2001
From: Matthieu Herrb <matthieu.herrb@laas.fr>
Date: Mon, 28 Jun 2010 23:54:13 +0200
Subject: [PATCH] Workaround for CVE-2010-2240.
By limiting the address space that the X server can use,
it prevents stack and mmap()ed areas to become so close that
the stack will grow over a mmaped area.
Credits: Rafal Wojtczuk <rafal@invisiblethingslab.com>
---
doc/Xserver.man.pre | 7 +++++++
include/opaque.h | 3 +++
os/osinit.c | 24 ++++++++++++++++++++++++
os/utils.c | 16 ++++++++++++++++
4 files changed, 50 insertions(+), 0 deletions(-)
diff --git a/doc/Xserver.man.pre b/doc/Xserver.man.pre
index ce3b3a1..91c595f 100644
--- a/doc/Xserver.man.pre
+++ b/doc/Xserver.man.pre
@@ -285,6 +285,13 @@ sets the stack space limit of the server to the specified number of kilobytes.
A value of zero makes the stack size as large as possible. The default value
of \-1 leaves the stack space limit unchanged.
.TP 8
+.B \-la \fIkilobytes\fP
+sets the address space limit of the server to the specified number of
+kilobytes.
+A value of zero makes address space as large as possible.
+The default value is 1572864 (1.5GB) on 32 bit architectures and
+10485760 (10GB) on 64 bit architectures.
+.TP 8
.B \-logo
turns on the X Window System logo display in the screen-saver.
There is currently no way to change this from a client.
diff --git a/include/opaque.h b/include/opaque.h
index b3c7c70..4208d03 100644
--- a/include/opaque.h
+++ b/include/opaque.h
@@ -67,6 +67,9 @@ extern _X_EXPORT int limitStackSpace;
#ifdef RLIMIT_NOFILE
extern _X_EXPORT int limitNoFile;
#endif
+#ifdef RLIMIT_AS
+extern _X_EXPORT int limitAddressSpace;
+#endif
extern _X_EXPORT Bool defeatAccessControl;
extern _X_EXPORT long maxBigRequestSize;
extern _X_EXPORT Bool party_like_its_1989;
diff --git a/os/osinit.c b/os/osinit.c
index 32747df..723fb14 100644
--- a/os/osinit.c
+++ b/os/osinit.c
@@ -96,6 +96,14 @@ int limitStackSpace = -1;
#ifdef RLIMIT_NOFILE
int limitNoFile = -1;
#endif
+#ifdef RLIMIT_AS
+#ifdef _XSERVER64
+#define XORG_AS_LIMIT 10737418240LL
+#else
+#define XORG_AS_LIMIT 1610612736
+#endif
+long limitAddressSpace = XORG_AS_LIMIT;
+#endif
static OsSigWrapperPtr OsSigWrapper = NULL;
@@ -301,6 +309,22 @@ OsInit(void)
}
}
#endif
+#ifdef RLIMIT_AS
+ if (limitAddressSpace >= 0)
+ {
+ struct rlimit rlim;
+
+ if (!getrlimit(RLIMIT_AS, &rlim))
+ {
+ if ((limitAddressSpace > 0)
+ && (limitAddressSpace < rlim.rlim_max))
+ rlim.rlim_cur = limitAddressSpace;
+ else
+ rlim.rlim_cur = rlim.rlim_max;
+ (void)setrlimit(RLIMIT_AS, &rlim);
+ }
+ }
+#endif
LockServer();
been_here = TRUE;
}
diff --git a/os/utils.c b/os/utils.c
index 51455cc..4af0cb3 100644
--- a/os/utils.c
+++ b/os/utils.c
@@ -745,6 +745,22 @@ ProcessCommandLine(int argc, char *argv[])
UseMsg();
}
#endif
+#ifdef RLIMIT_AS
+ else if ( strcmp( argv[i], "-la") == 0)
+ {
+ if (getuid() != geteuid()) {
+ FatalError("The '-la' option can only be used by root.\n");
+ }
+ if(++i < argc)
+ {
+ limitAddressSpace = atol(argv[i]);
+ if (limitAddressSpace > 0)
+ limitAddressSpace *= 1024;
+ }
+ else
+ UseMsg();
+ }
+#endif
else if ( strcmp ( argv[i], "-nolock") == 0)
{
#if !defined(WIN32) && !defined(__CYGWIN__)
--
1.7.0.5

View File

@ -1,73 +0,0 @@
--- xorg-server-1.9.0/dix/window.c.orig 2010-08-23 16:07:24.000000000 +0200
+++ xorg-server-1.9.0/dix/window.c 2010-08-23 16:14:09.000000000 +0200
@@ -535,6 +535,48 @@ RealChildHead(WindowPtr pWin)
return NullWindow;
}
+static int
+TreeDepth(WindowPtr pWin)
+{
+ int depth = 1;
+ int max_depth = 1;
+ WindowPtr pChild;
+
+ if (!(pChild = pWin))
+ return 0;
+ while (1)
+ {
+ if (pChild->firstChild)
+ {
+ ++depth;
+ pChild = pChild->firstChild;
+ continue;
+ } else if (depth > max_depth)
+ max_depth = depth;
+ while (!pChild->nextSib && (pChild != pWin)) {
+ --depth;
+ pChild = pChild->parent;
+ }
+ if (pChild == pWin)
+ break;
+ pChild = pChild->nextSib;
+ }
+ return max_depth;
+}
+
+static int
+WindowDepth(WindowPtr pWin)
+{
+ int depth = 0;
+ while (pWin) {
+ ++depth;
+ pWin = pWin->parent;
+ }
+ return depth;
+}
+
+#define MAX_TREE_DEPTH 256
+
/*****
* CreateWindow
* Makes a window in response to client request
@@ -555,6 +597,11 @@ CreateWindow(Window wid, WindowPtr pPare
PixmapFormatRec *format;
WindowOptPtr ancwopt;
+ if (WindowDepth(pParent) >= MAX_TREE_DEPTH - 1) {
+ *error = BadAlloc;
+ return NullWindow;
+ }
+
if (class == CopyFromParent)
class = pParent->drawable.class;
@@ -2434,6 +2481,9 @@ ReparentWindow(WindowPtr pWin, WindowPtr
int bw = wBorderWidth (pWin);
ScreenPtr pScreen;
+ if (WindowDepth(pParent) + TreeDepth(pWin) >= MAX_TREE_DEPTH)
+ return BadAlloc;
+
pScreen = pWin->drawable.pScreen;
if (TraverseTree(pWin, CompareWIDs, (pointer)&pParent->drawable.id) == WT_STOPWALKING)
return BadMatch;

View File

@ -1,31 +0,0 @@
From 107688407c7ebc71323dc1203ed5b92276026e1e Mon Sep 17 00:00:00 2001
From: Luc Verhaegen <libv@skynet.be>
Date: Wed, 2 Apr 2008 20:09:26 +0200
Subject: [PATCH] Default bitmap fonts should typically be set as unscaled.
It is generally not desired to have bitmap fonts scale. Even so
DEFAULT_FONT_PATH had the misc, 100dpi and 75dpi paths without the
:unscaled specifier.
Now the default font path has this per default, xorgconfig and
--configure will only use these as :unscaled too.
Since SUSE has been specifying :unscaled for its bitmap fonts for
about a decade or so, and since adding the default font path to the
.conf fontpath was only introduced a year ago, this lack of scaled
bitmap fonts will not have any new side-effects.
Reported by Mike Fabian, debugged and fixed with the help of Mike
Fabian and Stefan Dirsch.
================================================================================
--- xorg-server-1.7.99/configure.ac
+++ xorg-server-1.7.99/configure.ac
@@ -509,7 +509,7 @@
dnl Uses --default-font-path if set, otherwise checks for /etc/X11/fontpath.d,
dnl otherwise uses standard subdirectories of FONTROOTDIR. When cross
dnl compiling, assume default font path uses standard FONTROOTDIR directories.
-DEFAULT_FONT_PATH="${FONTMISCDIR}/,${FONTTTFDIR}/,${FONTOTFDIR}/,${FONTTYPE1DIR}/,${FONT100DPIDIR}/,${FONT75DPIDIR}/"
+DEFAULT_FONT_PATH="${FONTMISCDIR}:unscaled,${FONTTTFDIR}/,${FONTOTFDIR}/,${FONTTYPE1DIR}/,${FONT100DPIDIR}/,${FONT75DPIDIR}/"
if test "$cross_compiling" != yes; then
AC_CHECK_FILE([${sysconfdir}/X11/fontpath.d],
[DEFAULT_FONT_PATH='catalogue:${sysconfdir}/X11/fontpath.d'],

View File

@ -67,39 +67,3 @@ Index: hw/xfree86/common/xf86Events.c
return ih;
}
--- os/WaitFor.c
+++ os/WaitFor.c
@@ -142,6 +142,7 @@
* For more info on ClientsWithInput, see ReadRequestFromClient().
* pClientsReady is an array to store ready client->index values into.
*****************/
+volatile fd_set tmp_set;
int
WaitForSomething(int *pClientsReady)
@@ -279,10 +280,9 @@
if (expired)
return 0;
}
- }
+ }
else
- {
- fd_set tmp_set;
+ {
if (*checkForInput[0] == *checkForInput[1]) {
if (timers)
@@ -317,6 +317,12 @@
QueueWorkProc(EstablishNewConnections, NULL,
(pointer)&LastSelectMask);
+#ifdef DPMSExtension
+ XFD_ANDSET(&tmp_set, &devicesReadable, &EnabledDevices);
+ if (XFD_ANYSET (&tmp_set) && (DPMSPowerLevel != DPMSModeOn))
+ DPMSSet(serverClient, DPMSModeOn);
+#endif
+
if (XFD_ANYSET (&devicesReadable) || XFD_ANYSET (&clientsReadable))
break;
/* check here for DDXes that queue events during Block/Wakeup */

View File

@ -1,24 +0,0 @@
Index: fb/fbblt.c
================================================================================
--- fb/fbblt.c
+++ fb/fbblt.c
@@ -76,6 +76,11 @@
}
#endif
+/*
+ * Disable optimization (introduced by ajax) due to a general vesa
+ * driver crash later in memcpy
+*/
+#if 0
if (alu == GXcopy && pm == FB_ALLONES && !reverse &&
!(srcX & 7) && !(dstX & 7) && !(width & 7)) {
int i;
@@ -97,6 +102,7 @@
return;
}
+#endif
FbInitializeMergeRop(alu, pm);
destInvarient = FbDestInvarientMergeRop();

View File

@ -1,11 +0,0 @@
--- hw/xfree86/parser/Makefile.am.orig 2010-06-06 03:16:52.000000000 +0200
+++ hw/xfree86/parser/Makefile.am 2010-08-23 14:05:50.000000000 +0200
@@ -34,7 +34,7 @@
$(INTERNAL_SOURCES)
libxf86config_a_CFLAGS = $(AM_CFLAGS)
-AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS) \
+AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS) -fPIC \
-DSYSCONFDIR=\"$(sysconfdir)\" \
-DDATADIR=\"$(datadir)\"

View File

@ -1,18 +0,0 @@
Index: hw/xfree86/common/xf86Helper.c
================================================================================
--- hw/xfree86/common/xf86Helper.c
+++ hw/xfree86/common/xf86Helper.c
@@ -2183,6 +2183,13 @@
&errmaj, &errmin);
if (!ret)
LoaderErrorMsg(pScrn->name, name, errmaj, errmin);
+
+ /* "drm" module has been merged into "dri" module, but some drivers
+ are still trying to load it explictely and fail if it doesn't exist :-( */
+ if (!ret && !strcmp(name,"drm")) {
+ ret = (pointer) -1;
+ }
+
return ret;
}

View File

@ -1,19 +0,0 @@
--- configure.ac
+++ configure.ac
@@ -505,11 +505,15 @@
XORG_FONTSUBDIR(FONTTYPE1DIR, fonttype1dir, Type1)
XORG_FONTSUBDIR(FONT75DPIDIR, font75dpidir, 75dpi)
XORG_FONTSUBDIR(FONT100DPIDIR, font100dpidir, 100dpi)
+XORG_FONTSUBDIR(FONTURWDIR, fonturwdir, URW)
+XORG_FONTSUBDIR(FONTCYRILLICDIR, fontcyrillicdir, cyrillic)
+XORG_FONTSUBDIR(FONTSGIDIR, fontsgidir, misc/sgi)
+XORG_FONTSUBDIR(FONTTRUETYPEDIR, fonttruetypedir, truetype)
dnl Uses --default-font-path if set, otherwise checks for /etc/X11/fontpath.d,
dnl otherwise uses standard subdirectories of FONTROOTDIR. When cross
dnl compiling, assume default font path uses standard FONTROOTDIR directories.
-DEFAULT_FONT_PATH="${FONTMISCDIR}:unscaled,${FONTTTFDIR}/,${FONTOTFDIR}/,${FONTTYPE1DIR}/,${FONT100DPIDIR}/,${FONT75DPIDIR}/"
+DEFAULT_FONT_PATH="${FONTMISCDIR}:unscaled,${FONTTTFDIR}/,${FONTOTFDIR}/,${FONTTYPE1DIR}/,${FONT100DPIDIR}:unscaled,${FONT75DPIDIR}:unscaled,${FONTURWDIR}/,${FONTCYRILLICDIR}:unscaled,${FONTSGIDIR}:unscaled,${FONTTRUETYPEDIR}/"
if test "$cross_compiling" != yes; then
AC_CHECK_FILE([${sysconfdir}/X11/fontpath.d],
[DEFAULT_FONT_PATH='catalogue:${sysconfdir}/X11/fontpath.d'],

View File

@ -1,19 +0,0 @@
diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c
index 69f687b..5aae114 100644
--- a/hw/xfree86/modes/xf86Crtc.c
+++ b/hw/xfree86/modes/xf86Crtc.c
@@ -2365,13 +2365,7 @@ xf86InitialConfiguration (ScrnInfoPtr scrn, Bool canGrow)
xf86CollectEnabledOutputs(scrn, config, enabled);
- if (xf86TargetUserpref(scrn, config, modes, enabled, width, height))
- xf86DrvMsg(i, X_INFO, "Using user preference for initial modes\n");
- else if (xf86TargetPreferred(scrn, config, modes, enabled, width, height))
- xf86DrvMsg(i, X_INFO, "Using exact sizes for initial modes\n");
- else if (xf86TargetAspect(scrn, config, modes, enabled, width, height))
- xf86DrvMsg(i, X_INFO, "Using fuzzy aspect match for initial modes\n");
- else if (xf86TargetFallback(scrn, config, modes, enabled, width, height))
+ if (xf86TargetFallback(scrn, config, modes, enabled, width, height))
xf86DrvMsg(i, X_INFO, "Using sloppy heuristic for initial modes\n");
else
xf86DrvMsg(i, X_WARNING, "Unable to find initial modes\n");

View File

@ -1,15 +0,0 @@
Index: hw/xfree86/common/xf86Configure.c
================================================================================
--- hw/xfree86/common/xf86Configure.c
+++ hw/xfree86/common/xf86Configure.c
@@ -64,8 +64,8 @@
static char *DFLT_MOUSE_DEV = "/dev/sysmouse";
static char *DFLT_MOUSE_PROTO = "auto";
#elif defined(linux)
-static char DFLT_MOUSE_DEV[] = "/dev/input/mice";
-static char DFLT_MOUSE_PROTO[] = "auto";
+static char* DFLT_MOUSE_DEV = "/dev/input/mice";
+static char* DFLT_MOUSE_PROTO = "auto";
#else
static char *DFLT_MOUSE_DEV = "/dev/mouse";
static char *DFLT_MOUSE_PROTO = "auto";

View File

@ -1,52 +0,0 @@
Index: hw/xfree86/common/xf86Configure.c
================================================================================
--- hw/xfree86/common/xf86Configure.c
+++ hw/xfree86/common/xf86Configure.c
@@ -250,23 +250,35 @@
/* Crude mechanism to auto-detect mouse (os dependent) */
{
- int fd;
+ int fd = -1;
#ifdef WSCONS_SUPPORT
- fd = open("/dev/wsmouse", 0);
- if (fd >= 0) {
- DFLT_MOUSE_DEV = "/dev/wsmouse";
- DFLT_MOUSE_PROTO = "wsmouse";
- close(fd);
- } else {
- ErrorF("cannot open /dev/wsmouse\n");
+ if (fd == -1) {
+ fd = open("/dev/wsmouse", 0);
+ if (fd != -1) {
+ DFLT_MOUSE_DEV = "/dev/wsmouse";
+ DFLT_MOUSE_PROTO = "wsmouse";
+ close(fd);
+ } else {
+ ErrorF("cannot open /dev/wsmouse\n");
+ }
}
#endif
#ifndef __SCO__
- fd = open(DFLT_MOUSE_DEV, 0);
- if (fd != -1) {
- foundMouse = TRUE;
- close(fd);
+ if (fd == -1) {
+ fd = open(DFLT_MOUSE_DEV, 0);
+# ifdef linux
+ if (fd == -1) {
+ char *name = "/dev/input/mice";
+ fd = open(name, 0);
+ if (fd != -1)
+ DFLT_MOUSE_DEV = name;
+ }
+# endif
+ if (fd != -1) {
+ foundMouse = TRUE;
+ close(fd);
+ }
}
#else
foundMouse = TRUE;

View File

@ -1,13 +0,0 @@
Index: os/connection.c
================================================================================
--- os/connection.c
+++ os/connection.c
@@ -999,7 +999,7 @@
do {
r = Select (curclient + 1, &tmask, NULL, NULL, &notime);
} while (r < 0 && (errno == EINTR || errno == EAGAIN));
- if (r < 0)
+ if (r < 0 && (errno == EBADF))
if (ConnectionTranslation[curclient] > 0)
CloseDownClient(clients[ConnectionTranslation[curclient]]);
mask &= ~((fd_mask)1 << curoff);

View File

@ -1,121 +0,0 @@
Index: hw/xfree86/os-support/linux/lnx_acpi.c
================================================================================
--- hw/xfree86/os-support/linux/lnx_acpi.c
+++ hw/xfree86/os-support/linux/lnx_acpi.c
@@ -32,8 +32,10 @@
#define ACPI_VIDEO_HEAD_INVALID (~0u - 1)
#define ACPI_VIDEO_HEAD_END (~0u)
+static PMClose doLnxACPIOpen(void);
static void lnxCloseACPI(void);
static pointer ACPIihPtr = NULL;
+static OsTimerPtr acpiTimer = NULL;
PMClose lnxACPIOpen(void);
/* in milliseconds */
@@ -52,6 +54,22 @@
#define LINE_LENGTH 80
+static CARD32
+lnxACPICheckTimer(OsTimerPtr timer, CARD32 now, pointer arg)
+{
+#if DEBUG
+ ErrorF("ACPI: trying to reopen\n");
+#endif
+ if (doLnxACPIOpen()) {
+#if DEBUG
+ ErrorF("ACPI: successfully reopened\n");
+#endif
+ acpiTimer = NULL;
+ return 0;
+ }
+ return 5000;
+}
+
static int
lnxACPIGetEventFromOs(int fd, pmEvent *events, int num)
{
@@ -127,15 +145,14 @@
}
}
-PMClose
-lnxACPIOpen(void)
+static PMClose
+doLnxACPIOpen(void)
{
int fd;
struct sockaddr_un addr;
int r = -1;
static int warned = 0;
- DebugF("ACPI: OSPMOpen called\n");
if (ACPIihPtr || !xf86Info.pmFlag)
return NULL;
@@ -164,6 +181,27 @@
return lnxCloseACPI;
}
+PMClose
+lnxACPIPoll(void)
+{
+ TimerSet(NULL, 0, 5000, lnxACPICheckTimer, NULL);
+ return lnxCloseACPI;
+}
+
+PMClose
+lnxACPIOpen(void)
+{
+ PMClose ret;
+#ifdef DEBUG
+ ErrorF("ACPI: OSPMOpen called\n");
+#endif
+ if (!(ret = doLnxACPIOpen()))
+ xf86MsgVerb(X_WARNING,3,"Open ACPI failed (%s) (%s)\n", ACPI_SOCKET,
+ strerror(errno));
+
+ return ret;
+}
+
static void
lnxCloseACPI(void)
{
@@ -175,5 +213,11 @@
shutdown(fd, 2);
close(fd);
ACPIihPtr = NULL;
+ xf86PMGetEventFromOs = NULL;
+ xf86PMConfirmEventToOs = NULL;
+ if (acpiTimer) {
+ TimerCancel(acpiTimer);
+ acpiTimer = NULL;
+ }
}
}
--- hw/xfree86/os-support/linux/lnx_apm.c
+++ hw/xfree86/os-support/linux/lnx_apm.c
@@ -12,6 +12,7 @@
#ifdef HAVE_ACPI
extern PMClose lnxACPIOpen(void);
+extern PMClose lnxACPIPoll(void);
#endif
#ifdef HAVE_APM
@@ -149,6 +150,14 @@
ret = lnxAPMOpen();
#endif
+#ifdef HAVE_ACPI
+ /* if we can neither open ACPI nor APM poll for an ACPI service to
+ become available */
+
+ if (!ret && !xf86acpiDisableFlag)
+ ret = lnxACPIPoll();
+#endif
+
return ret;
}

View File

@ -1,13 +0,0 @@
Index: include/miscstruct.h
================================================================================
--- include/miscstruct.h
+++ include/miscstruct.h
@@ -50,7 +50,7 @@
#include "misc.h"
#include <X11/Xprotostr.h>
-#include <pixman.h>
+#include <pixman-1/pixman.h>
typedef xPoint DDXPointRec;

View File

@ -0,0 +1,290 @@
From 142ba992065dd9c37a9d06dc6e96cfc9adfb6be0 Mon Sep 17 00:00:00 2001
From: Egbert Eich <eich@suse.de>
Date: Tue, 5 Jul 2011 06:56:43 +0200
Subject: [PATCH] OS/acpi: Reconnect to acpid when it gets restarted.
Patch-mainline: To be upstreamed
On Linux the Xserver connects to the ACPI daemon to
receive power management events. If this daemon isn't
started when the server starts or goes down the connection
is lost.
When this happens we add a timer which periodically
tries to reconnect.
Signed-off-by: Egbert Eich <eich@suse.de>
---
hw/xfree86/os-support/linux/lnx_acpi.c | 68 ++++++++++++++++++++++++++-----
hw/xfree86/os-support/linux/lnx_apm.c | 9 ++++
2 files changed, 66 insertions(+), 11 deletions(-)
diff --git a/hw/xfree86/os-support/linux/lnx_acpi.c b/hw/xfree86/os-support/linux/lnx_acpi.c
index 5fad194..8dd6881 100644
--- a/hw/xfree86/os-support/linux/lnx_acpi.c
+++ b/hw/xfree86/os-support/linux/lnx_acpi.c
@@ -32,9 +32,12 @@
#define ACPI_VIDEO_HEAD_INVALID (~0u - 1)
#define ACPI_VIDEO_HEAD_END (~0u)
+static PMClose doLnxACPIOpen(void);
static void lnxCloseACPI(void);
static pointer ACPIihPtr = NULL;
+static OsTimerPtr acpiTimer = NULL;
PMClose lnxACPIOpen(void);
+PMClose lnxACPIPoll(void);
/* in milliseconds */
#define ACPI_REOPEN_DELAY 1000
@@ -52,6 +55,22 @@ lnxACPIReopen(OsTimerPtr timer, CARD32 time, pointer arg)
#define LINE_LENGTH 80
+static CARD32
+lnxACPICheckTimer(OsTimerPtr timer, CARD32 now, pointer arg)
+{
+#if DEBUG
+ ErrorF("ACPI: trying to reopen\n");
+#endif
+ if (doLnxACPIOpen()) {
+#if DEBUG
+ ErrorF("ACPI: successfully reopened\n");
+#endif
+ acpiTimer = NULL;
+ return 0;
+ }
+ return 10000;
+}
+
static int
lnxACPIGetEventFromOs(int fd, pmEvent *events, int num)
{
@@ -127,33 +146,35 @@ lnxACPIConfirmEventToOs(int fd, pmEvent event)
}
}
-PMClose
-lnxACPIOpen(void)
+static PMClose
+doLnxACPIOpen(void)
{
- int fd;
+ int fd = -1;
struct sockaddr_un addr;
int r = -1;
static int warned = 0;
- DebugF("ACPI: OSPMOpen called\n");
if (ACPIihPtr || !xf86Info.pmFlag)
return NULL;
DebugF("ACPI: Opening device\n");
- if ((fd = socket(AF_UNIX, SOCK_STREAM, 0)) > -1) {
+ fd = socket(AF_UNIX, SOCK_STREAM, 0);
+ if (fd > -1) {
memset(&addr, 0, sizeof(addr));
addr.sun_family = AF_UNIX;
strcpy(addr.sun_path, ACPI_SOCKET);
- if ((r = connect(fd, (struct sockaddr*)&addr, sizeof(addr))) == -1) {
- if (!warned)
+ r = connect(fd, (struct sockaddr*)&addr, sizeof(addr));
+ if (r == -1) {
+ if (errno != warned)
xf86MsgVerb(X_WARNING,3,"Open ACPI failed (%s) (%s)\n",
ACPI_SOCKET, strerror(errno));
- warned = 1;
- shutdown(fd, 2);
+ warned = errno;
+ shutdown(fd, SHUT_RDWR);
close(fd);
return NULL;
}
- }
+ } else
+ return NULL;
xf86PMGetEventFromOs = lnxACPIGetEventFromOs;
xf86PMConfirmEventToOs = lnxACPIConfirmEventToOs;
@@ -164,6 +185,25 @@ lnxACPIOpen(void)
return lnxCloseACPI;
}
+PMClose
+lnxACPIPoll(void)
+{
+ TimerSet(NULL, 0, 10000, lnxACPICheckTimer, NULL);
+ return lnxCloseACPI;
+}
+
+PMClose
+lnxACPIOpen(void)
+{
+ PMClose ret;
+#ifdef DEBUG
+ ErrorF("ACPI: OSPMOpen called\n");
+#endif
+ ret = doLnxACPIOpen();
+
+ return ret;
+}
+
static void
lnxCloseACPI(void)
{
@@ -172,8 +212,14 @@ lnxCloseACPI(void)
DebugF("ACPI: Closing device\n");
if (ACPIihPtr) {
fd = xf86RemoveGeneralHandler(ACPIihPtr);
- shutdown(fd, 2);
+ shutdown(fd, SHUT_RDWR);
close(fd);
ACPIihPtr = NULL;
+ xf86PMGetEventFromOs = NULL;
+ xf86PMConfirmEventToOs = NULL;
+ if (acpiTimer) {
+ TimerCancel(acpiTimer);
+ acpiTimer = NULL;
+ }
}
}
diff --git a/hw/xfree86/os-support/linux/lnx_apm.c b/hw/xfree86/os-support/linux/lnx_apm.c
index 54c6989..c8b254f 100644
--- a/hw/xfree86/os-support/linux/lnx_apm.c
+++ b/hw/xfree86/os-support/linux/lnx_apm.c
@@ -12,6 +12,7 @@
#ifdef HAVE_ACPI
extern PMClose lnxACPIOpen(void);
+extern PMClose lnxACPIPoll(void);
#endif
#ifdef HAVE_APM
@@ -149,6 +150,14 @@ xf86OSPMOpen(void)
ret = lnxAPMOpen();
#endif
+#ifdef HAVE_ACPI
+ /* if we can neither open ACPI nor APM poll for an ACPI service to
+ become available */
+
+ if (!ret && !xf86acpiDisableFlag)
+ ret = lnxACPIPoll();
+#endif
+
return ret;
}
--
1.6.0.2
From 3f35d15f7c7eb202de36e2d1040f27ef7b38c1d2 Mon Sep 17 00:00:00 2001
From: Egbert Eich <eich@freedesktop.org>
Date: Thu, 7 Jul 2011 09:01:35 +0200
Subject: [PATCH] OS/ACPI: Make socket to read from acpid non-blocking.
If acpid for some reason does not service a connect() this
function may hang forever stalling the Xserver. To prevent
this make the socket non-blocking. If connect returns
EINPROGRESS use select() and getsockopt() to check for
completion of the connect request.
select() gets a different timeout depending if it is called
during startup or to do a reconnect.
Signed-off-by: Egbert Eich <eich@freedesktop.org>
---
hw/xfree86/os-support/linux/lnx_acpi.c | 34 +++++++++++++++++++++++++++----
1 files changed, 29 insertions(+), 5 deletions(-)
diff --git a/hw/xfree86/os-support/linux/lnx_acpi.c b/hw/xfree86/os-support/linux/lnx_acpi.c
index 8dd6881..f0e6eb4 100644
--- a/hw/xfree86/os-support/linux/lnx_acpi.c
+++ b/hw/xfree86/os-support/linux/lnx_acpi.c
@@ -32,7 +32,7 @@
#define ACPI_VIDEO_HEAD_INVALID (~0u - 1)
#define ACPI_VIDEO_HEAD_END (~0u)
-static PMClose doLnxACPIOpen(void);
+static PMClose doLnxACPIOpen(struct timeval *);
static void lnxCloseACPI(void);
static pointer ACPIihPtr = NULL;
static OsTimerPtr acpiTimer = NULL;
@@ -58,10 +58,11 @@ lnxACPIReopen(OsTimerPtr timer, CARD32 time, pointer arg)
static CARD32
lnxACPICheckTimer(OsTimerPtr timer, CARD32 now, pointer arg)
{
+ struct timeval timeval = { 0, 0 };
#if DEBUG
ErrorF("ACPI: trying to reopen\n");
#endif
- if (doLnxACPIOpen()) {
+ if (doLnxACPIOpen(&timeval)) {
#if DEBUG
ErrorF("ACPI: successfully reopened\n");
#endif
@@ -147,7 +148,7 @@ lnxACPIConfirmEventToOs(int fd, pmEvent event)
}
static PMClose
-doLnxACPIOpen(void)
+doLnxACPIOpen(struct timeval *tv_p)
{
int fd = -1;
struct sockaddr_un addr;
@@ -158,13 +159,34 @@ doLnxACPIOpen(void)
return NULL;
DebugF("ACPI: Opening device\n");
- fd = socket(AF_UNIX, SOCK_STREAM, 0);
+ fd = socket(AF_UNIX, SOCK_STREAM | SOCK_NONBLOCK, 0);
if (fd > -1) {
memset(&addr, 0, sizeof(addr));
addr.sun_family = AF_UNIX;
strcpy(addr.sun_path, ACPI_SOCKET);
r = connect(fd, (struct sockaddr*)&addr, sizeof(addr));
if (r == -1) {
+ int sock_errno = errno;
+ if (sock_errno == EINPROGRESS) {
+ fd_set fds;
+ int result;
+ do {
+ FD_ZERO(&fds);
+ FD_SET(fd, &fds);
+ result = select(fd + 1, NULL, &fds, NULL, tv_p);
+ } while (result < 0 && errno == EINTR);
+ if (result < 0)
+ sock_errno = errno;
+ else if (result > 0) {
+ int sock_errno;
+ socklen_t size = sizeof(sock_errno);
+ if (0 > getsockopt(fd, SOL_SOCKET, SO_ERROR, &sock_errno,
+ &size))
+ sock_errno = errno;
+ if (!sock_errno)
+ goto success;
+ }
+ }
if (errno != warned)
xf86MsgVerb(X_WARNING,3,"Open ACPI failed (%s) (%s)\n",
ACPI_SOCKET, strerror(errno));
@@ -176,6 +198,7 @@ doLnxACPIOpen(void)
} else
return NULL;
+ success:
xf86PMGetEventFromOs = lnxACPIGetEventFromOs;
xf86PMConfirmEventToOs = lnxACPIConfirmEventToOs;
ACPIihPtr = xf86AddGeneralHandler(fd,xf86HandlePMEvents,NULL);
@@ -196,10 +219,11 @@ PMClose
lnxACPIOpen(void)
{
PMClose ret;
+ struct timeval timeval = { 0, 30000 };
#ifdef DEBUG
ErrorF("ACPI: OSPMOpen called\n");
#endif
- ret = doLnxACPIOpen();
+ ret = doLnxACPIOpen(&timeval);
return ret;
}
--
1.7.3.4

View File

@ -1,56 +0,0 @@
From ee0e658bb6cb0d1290072090f1de90ff44145365 Mon Sep 17 00:00:00 2001
From: Dan Nicholson <dbn.lists@gmail.com>
Date: Thu, 16 Dec 2010 06:01:06 -0800
Subject: [PATCH] xfree86: Use last Screen section found to prefer xorg.conf
Allowing multiple .conf files with xorg.conf.d works well for InputClass
where any section in xorg.conf would override settings from previous
.conf files typically installed by the distro. This does not work well
with Screen sections where the first section found has been used when
the Layout doesn't specify a Screen. Instead, use the last Screen
section found to give preference to xorg.conf and match the InputScreen
semantics.
Signed-off-by: Dan Nicholson <dbn.lists@gmail.com>
---
hw/xfree86/common/xf86Config.c | 10 ++++++++--
1 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/hw/xfree86/common/xf86Config.c b/hw/xfree86/common/xf86Config.c
index 5800700..b2fc8e3 100644
--- a/hw/xfree86/common/xf86Config.c
+++ b/hw/xfree86/common/xf86Config.c
@@ -1678,7 +1678,7 @@ configLayout(serverLayoutPtr servlayoutp, XF86ConfLayoutPtr conf_layout,
}
/*
- * No layout section, so find the first Screen section and set that up as
+ * No layout section, so find the last Screen section and set that up as
* the only active screen.
*/
static Bool
@@ -1697,7 +1697,7 @@ configImpliedLayout(serverLayoutPtr servlayoutp, XF86ConfScreenPtr conf_screen,
/*
* which screen section is the active one?
*
- * If there is a -screen option, use that one, otherwise use the first
+ * If there is a -screen option, use that one, otherwise use the last
* one.
*/
@@ -1710,6 +1710,12 @@ configImpliedLayout(serverLayoutPtr servlayoutp, XF86ConfScreenPtr conf_screen,
}
conf_screen = s;
from = X_CMDLINE;
+ } else if (conf_screen) {
+ /* Use the last Screen in the list */
+ s = conf_screen;
+ while (s->list.next)
+ s = s->list.next;
+ conf_screen = s;
}
/* We have exactly one screen */
--
1.7.2.3

View File

@ -1,21 +0,0 @@
Index: hw/kdrive/Makefile.am
================================================================================
--- hw/kdrive/Makefile.am
+++ hw/kdrive/Makefile.am
@@ -1,5 +1,5 @@
if BUILD_KDRIVEFBDEVLIB
-FBDEV_SUBDIRS = fbdev
+FBDEV_SUBDIRS =
endif
if XFAKESERVER
@@ -16,8 +16,7 @@
SERVER_SUBDIRS = \
$(FBDEV_SUBDIRS) \
- $(XEPHYR_SUBDIRS) \
- $(XFAKE_SUBDIRS)
+ $(XEPHYR_SUBDIRS)
SUBDIRS = \
src \

View File

@ -1,29 +0,0 @@
--- man/Makefile.am.orig 2010-09-14 01:25:46.000000000 +0200
+++ man/Makefile.am 2010-11-12 13:28:31.000000000 +0100
@@ -23,12 +23,8 @@
miscmandir = $(MISC_MAN_DIR)
miscman_PRE = \
- Consortium.man \
Xsecurity.man \
- Standards.man \
- X.man \
- XOrgFoundation.man \
- XProjectTeam.man
+ X.man
miscman_DATA = $(miscman_PRE:man=@MISC_MAN_SUFFIX@)
--- Makefile.am.orig 2010-11-12 13:45:19.000000000 +0100
+++ Makefile.am 2010-11-12 13:45:32.000000000 +0100
@@ -20,9 +20,7 @@
#
# Process this file with autoconf to create configure.
-SUBDIRS = general man specs
-
-dist_doc_DATA = MAINTAINERS
+SUBDIRS = man
MAINTAINERCLEANFILES = ChangeLog INSTALL
EXTRA_DIST = \

View File

@ -1,11 +0,0 @@
--- config/Makefile.am.orig 2010-06-11 04:14:57.000000000 +0200
+++ config/Makefile.am 2010-08-23 15:47:19.000000000 +0200
@@ -9,7 +9,7 @@
libconfig_la_SOURCES += udev.c
libconfig_la_LIBADD = $(UDEV_LIBS)
-xorgconfddir = $(datadir)/X11/$(XF86CONFIGDIR)
+xorgconfddir = $(sysconfdir)/X11/$(XF86CONFIGDIR)
xorgconfd_DATA = 10-evdev.conf
else

View File

@ -1,52 +0,0 @@
Index: xorg-server-1.6.3/hw/xfree86/os-support/linux/lnx_init.c
===================================================================
Index: xorg-server-1.6.3/hw/xfree86/os-support/linux/lnx_video.c
===================================================================
--- xorg-server-1.6.3.orig/hw/xfree86/os-support/linux/lnx_video.c
+++ xorg-server-1.6.3/hw/xfree86/os-support/linux/lnx_video.c
@@ -51,6 +51,7 @@
#define MAP_FAILED ((void *)-1)
#endif
+extern Bool NoHwAccess;
static Bool ExtendedEnabled = FALSE;
#ifdef __ia64__
@@ -509,6 +510,9 @@ xf86EnableIO(void)
int fd;
unsigned int ioBase_phys;
#endif
+ /* Fake it... */
+ if (NoHwAccess)
+ return TRUE;
if (ExtendedEnabled)
return TRUE;
--- xorg-server-1.9.0/hw/xfree86/os-support/linux/lnx_init.c.orig 2010-06-10 16:07:55.000000000 +0200
+++ xorg-server-1.9.0/hw/xfree86/os-support/linux/lnx_init.c 2010-08-23 15:38:45.000000000 +0200
@@ -42,6 +42,7 @@ static Bool KeepTty = FALSE;
static int VTnum = -1;
static Bool VTSwitch = TRUE;
static Bool ShareVTs = FALSE;
+Bool NoHwAccess = FALSE;
static int activeVT = -1;
static int vtPermSave[4];
@@ -377,6 +378,11 @@ xf86ProcessArgument(int argc, char *argv
ShareVTs = TRUE;
return 1;
}
+ if (!strcmp(argv[i], "-nohwaccess"))
+ {
+ NoHwAccess = TRUE;
+ return(1);
+ }
if ((argv[i][0] == 'v') && (argv[i][1] == 't'))
{
if (sscanf(argv[i], "vt%2d", &VTnum) == 0)
@@ -398,4 +404,5 @@ xf86UseMsg(void)
ErrorF("don't detach controlling tty (for debugging only)\n");
ErrorF("-novtswitch don't immediately switch to new VT\n");
ErrorF("-sharevts share VTs with another X server\n");
+ ErrorF("-nohwaccess don't access hardware ports directly\n");
}

View File

@ -1,122 +0,0 @@
--- hw/xfree86/parser/InputClass.c.orig 2010-08-13 07:53:48.000000000 +0200
+++ hw/xfree86/parser/InputClass.c 2010-08-23 15:55:16.000000000 +0200
@@ -65,6 +65,47 @@ xf86ConfigSymTabRec InputClassTab[] =
#define TOKEN_SEP "|"
+/*
+ * Tokenize a string into a NULL terminated array of strings. Always returns
+ * an allocated array unless an error occurs.
+ */
+char**
+m_xstrtokenize(const char *str, const char *separators)
+{
+ char **list, **nlist;
+ char *tok, *tmp;
+ unsigned num = 0, n;
+
+ if (!str)
+ return NULL;
+ list = calloc(1, sizeof(*list));
+ if (!list)
+ return NULL;
+ tmp = strdup(str);
+ if (!tmp)
+ goto error;
+ for (tok = strtok(tmp, separators); tok; tok = strtok(NULL, separators)) {
+ nlist = realloc(list, (num + 2) * sizeof(*list));
+ if (!nlist)
+ goto error;
+ list = nlist;
+ list[num] = strdup(tok);
+ if (!list[num])
+ goto error;
+ list[++num] = NULL;
+ }
+ free(tmp);
+ return list;
+
+error:
+ free(tmp);
+ for (n = 0; n < num; n++)
+ free(list[n]);
+ free(list);
+ return NULL;
+}
+
+
static void
add_group_entry(struct list *head, char **values)
{
@@ -125,49 +166,49 @@ xf86parseInputClassSection(void)
if (xf86getSubToken(&(ptr->comment)) != STRING)
Error(QUOTE_MSG, "MatchProduct");
add_group_entry(&ptr->match_product,
- xstrtokenize(val.str, TOKEN_SEP));
+ m_xstrtokenize(val.str, TOKEN_SEP));
break;
case MATCH_VENDOR:
if (xf86getSubToken(&(ptr->comment)) != STRING)
Error(QUOTE_MSG, "MatchVendor");
add_group_entry(&ptr->match_vendor,
- xstrtokenize(val.str, TOKEN_SEP));
+ m_xstrtokenize(val.str, TOKEN_SEP));
break;
case MATCH_DEVICE_PATH:
if (xf86getSubToken(&(ptr->comment)) != STRING)
Error(QUOTE_MSG, "MatchDevicePath");
add_group_entry(&ptr->match_device,
- xstrtokenize(val.str, TOKEN_SEP));
+ m_xstrtokenize(val.str, TOKEN_SEP));
break;
case MATCH_OS:
if (xf86getSubToken(&(ptr->comment)) != STRING)
Error(QUOTE_MSG, "MatchOS");
add_group_entry(&ptr->match_os,
- xstrtokenize(val.str, TOKEN_SEP));
+ m_xstrtokenize(val.str, TOKEN_SEP));
break;
case MATCH_PNPID:
if (xf86getSubToken(&(ptr->comment)) != STRING)
Error(QUOTE_MSG, "MatchPnPID");
add_group_entry(&ptr->match_pnpid,
- xstrtokenize(val.str, TOKEN_SEP));
+ m_xstrtokenize(val.str, TOKEN_SEP));
break;
case MATCH_USBID:
if (xf86getSubToken(&(ptr->comment)) != STRING)
Error(QUOTE_MSG, "MatchUSBID");
add_group_entry(&ptr->match_usbid,
- xstrtokenize(val.str, TOKEN_SEP));
+ m_xstrtokenize(val.str, TOKEN_SEP));
break;
case MATCH_DRIVER:
if (xf86getSubToken(&(ptr->comment)) != STRING)
Error(QUOTE_MSG, "MatchDriver");
add_group_entry(&ptr->match_driver,
- xstrtokenize(val.str, TOKEN_SEP));
+ m_xstrtokenize(val.str, TOKEN_SEP));
break;
case MATCH_TAG:
if (xf86getSubToken(&(ptr->comment)) != STRING)
Error(QUOTE_MSG, "MatchTag");
add_group_entry(&ptr->match_tag,
- xstrtokenize(val.str, TOKEN_SEP));
+ m_xstrtokenize(val.str, TOKEN_SEP));
break;
case MATCH_IS_KEYBOARD:
if (xf86getSubToken(&(ptr->comment)) != STRING)
--- hw/xfree86/parser/Layout.c
+++ hw/xfree86/parser/Layout.c
@@ -449,7 +449,10 @@
/* add all AutoServerLayout devices to the server layout */
while (input)
{
- if (xf86CheckBoolOption(input->inp_option_lst, "AutoServerLayout", FALSE))
+ Bool asl_value = FALSE;
+ char *s = xf86findOptionValue(input->inp_option_lst ,"AutoServerLayout");
+ Bool asl_found = xf86getBoolValue(&asl_value, s);
+ if (asl_found == TRUE && asl_value == TRUE)
{
XF86ConfInputrefPtr iref = layout->lay_input_lst;

View File

@ -1,14 +0,0 @@
Index: xorg-server-1.6.3.901/hw/xfree86/common/xf86AutoConfig.c
================================================================================
--- xorg-server-1.7.99/hw/xfree86/common/xf86AutoConfig.c
+++ xorg-server-1.7.99/hw/xfree86/common/xf86AutoConfig.c
@@ -535,7 +535,8 @@
#if !defined(__linux__) && defined(__sparc__)
matches[i++] = xnfstrdup("wsfb");
#else
- matches[i++] = xnfstrdup("vesa");
+ if (geteuid() == 0)
+ matches[i++] = xnfstrdup("vesa");
#endif
}
}

View File

@ -1,3 +1,140 @@
-------------------------------------------------------------------
Fri Jul 8 08:20:41 UTC 2011 - eich@suse.de
- update:
* randr1_1-sig11.diff
removed accidentally forgotten debugging code.
* u_OS-acpi-Reconnect-to-acpid-when-it-gets-restarted.patch
made socket non-blocking. Idea taken from a pach for SLES11.
-------------------------------------------------------------------
Thu Jul 7 16:02:13 UTC 2011 - eich@suse.de
- don't look for 10-evdev.conf for anything older than 11.3
(this includes SLE-11).
-------------------------------------------------------------------
Thu Jul 7 10:10:34 UTC 2011 - eich@suse.de
- remove use-last-screen.patch:
This patch has been rejected upstream. We will try to resolve
this issue differently by not providing any screen, monitor or
device section.
-------------------------------------------------------------------
Thu Jul 7 10:08:05 UTC 2011 - eich@suse.de
- remove disable-fbblt-opt.diff:
We are unable to reproduce this issue any more.
So let's remove the workaround and start from scratch
when issue resurfaces and find a proper fix.
-------------------------------------------------------------------
Wed Jul 6 09:04:30 UTC 2011 - eich@suse.de
- fixed bug-197858_dpms.diff:
removed pieces that have been solved differently today.
-------------------------------------------------------------------
Wed Jul 6 07:48:17 UTC 2011 - eich@suse.de
- remove moblin-use_preferred_mode_for_all_outputs.diff:
remove moblin specific patches.
-------------------------------------------------------------------
Tue Jul 5 13:54:21 UTC 2011 - eich@suse.de
- rename edit_data_sanity_check.diff -> edid_data_sanity_check.diff
-------------------------------------------------------------------
Tue Jul 5 13:44:54 UTC 2011 - eich@suse.de
- remove p_xkills_wrong_client.diff:
made obsolete by commit b7f3618f.
-------------------------------------------------------------------
Tue Jul 5 12:45:46 UTC 2011 - eich@suse.de
- remove xorg-server-1.8.0.diff:
issue is now resolved in spec file.
-------------------------------------------------------------------
Tue Jul 5 05:11:47 UTC 2011 - eich@suse.de
- fix zap_warning_fix.diff:
recover from noisy people.
-------------------------------------------------------------------
Tue Jul 5 05:09:40 UTC 2011 - eich@suse.de
- remove p_xorg_acpi.diff
add u_OS-acpi-Reconnect-to-acpid-when-it-gets-restarted.patch
removed redundant error message.
-------------------------------------------------------------------
Mon Jul 4 17:01:40 UTC 2011 - eich@suse.de
- remove mouse.diff:
Never understood what this patch was good for.
-------------------------------------------------------------------
Mon Jul 4 16:58:46 UTC 2011 - eich@suse.de
- remove p_bug96328.diff:
/dev/input/mice is the default mouse for X -configure
on Linux for a long time already.
-------------------------------------------------------------------
Mon Jul 4 12:19:43 UTC 2011 - eich@suse.de
- remove xephyr.diff:
solved by configure options in spec file.
-------------------------------------------------------------------
Mon Jul 4 12:10:14 UTC 2011 - eich@suse.de
- remove libdrm.diff:
not needed any more, drivers seem to be fixed.
-------------------------------------------------------------------
Mon Jul 4 11:32:31 UTC 2011 - eich@suse.de
- remove xorg-docs.diff:
solved in spec file.
-------------------------------------------------------------------
Mon Jul 4 10:06:49 UTC 2011 - eich@suse.de
- remove pixman.diff:
Doesn't seem to be needed any more.
-------------------------------------------------------------------
Mon Jul 4 05:58:11 UTC 2011 - eich@suse.de
- remove xorg-x11-nonroot-vesa.patch, org-server-nohwaccess.diff:
There are other things missing to make those patches useful.
-------------------------------------------------------------------
Fri Jul 1 14:18:49 UTC 2011 - eich@suse.de
- remove: xserver-1.6.1-nouveau.patch.
This patch was only cosmetic.
-------------------------------------------------------------------
Fri Jul 1 13:41:18 UTC 2011 - eich@suse.de
- remove: CVE-2010-2240-address_space_limit.patch
CVE-2010-2240-tree_depth_limit.patch
These security issues have been handled in the Linux kernel in a
much more general fashion.
-------------------------------------------------------------------
Fri Jul 1 11:37:33 UTC 2011 - eich@suse.de
- remove: bitmap_always_unscaled.diff
missing_font_paths.diff
This has now been solved in the spec file directly.
-------------------------------------------------------------------
Thu May 26 14:47:53 UTC 2011 - mhopf@novell.com

View File

@ -17,8 +17,6 @@
# norootforbuild
%define moblin 0
Name: xorg-x11-server
%define dirsuffix 1.9.3
%define vnc 1
@ -55,17 +53,10 @@ Source4: xorgcfg.tar.bz2
Source5: modprobe.nvidia
Source7: xorg-docs-1.6.tar.bz2
Source8: xorg-backtrace
Patch1: fpic.diff
Patch2: p_default-module-path.diff
Patch6: pu_fixes.diff
Patch8: p_bug96328.diff
Patch13: p_xorg_acpi.diff
Patch14: p_xkills_wrong_client.diff
Patch13: u_OS-acpi-Reconnect-to-acpid-when-it-gets-restarted.patch
Patch16: p_xnest-ignore-getimage-errors.diff
Patch23: disable-fbblt-opt.diff
Patch27: mouse.diff
Patch29: xephyr.diff
Patch36: libdrm.diff
%if %vnc
### Dan Nicholson <dbn.lists@gmail.com>
#http://people.freedesktop.org/~dbn/xorg-server-xf4vnc.patch
@ -82,13 +73,10 @@ Patch50: xorg-server-xf4vnc-fixes_1_9.diff
Patch51: xorg-server-xf4vnc-fix-keyboard-layout-handling.diff
%endif
Patch45: bug-197858_dpms.diff
Patch67: xorg-docs.diff
Patch77: fbdevhw.diff
Patch79: edit_data_sanity_check.diff
Patch93: pixman.diff
Patch79: edid_data_sanity_check.diff
Patch101: zap_warning_xserver.diff
Patch103: confine_to_shape.diff
Patch104: bitmap_always_unscaled.diff
Patch106: randr1_1-sig11.diff
Patch112: fix-dpi-values.diff
Patch123: vidmode-sig11.diff
@ -98,36 +86,24 @@ Patch128: pci-legacy-mem-fallback.diff
Patch129: bug474071-fix1.diff
Patch143: autoconfig_fallback_fbdev_first.diff
Patch145: driver-autoconfig.diff
Patch147: xserver-1.6.1-nouveau.patch
Patch162: cache-xkbcomp-output-for-fast-start-up.patch
Patch163: xserver-bg-none-root.patch
Patch164: xorg-detect-psb.patch
Patch168: xorg-server-nohwaccess.diff
Patch169: xorg-x11-nonroot-vesa.patch
Patch200: bug534768-prefer_local_symbols.patch
Patch202: 0001-Check-harder-for-primary-PCI-device.patch
Patch203: 0001-Fix-segfault-when-killing-X-with-ctrl-alt-backspace.patch
Patch204: missing_font_paths.diff
Patch205: xorg-server-1.8.0.diff
Patch206: fix_fglrx_screendepth_issue.patch
Patch207: xorg-server-option_libxf86config.diff
Patch210: pio_ia64.diff
Patch211: 0001-Prevent-XSync-Alarms-from-senslessly-calling-CheckTr.patch
Patch213: xorg-server-xdmcp.patch
Patch217: CVE-2010-2240-address_space_limit.patch
Patch218: CVE-2010-2240-tree_depth_limit.patch
Patch220: Use-external-tool-for-creating-backtraces-on-crashes.patch
Patch221: commit-5c6a2f9.diff
Patch222: sync-fix.patch
Patch223: use-last-screen.patch
Patch224: pad-size-of-system-memory-copy-for-1x1-pixmaps
Patch225: xorg-server-stop-cpu-eating.diff
Patch226: record-avoid-crash-when-calling-RecordFlushReplyBuff.patch
Patch227: Replace-malloc-with-calloc-to-initialize-the-buffers.patch
Patch228: EXA-mixed-ModifyPixmapHeader-pitch-fixes.-bug-33929.patch
%if %moblin
Patch300: moblin-use_preferred_mode_for_all_outputs.diff
%endif
%description
This package contains the X.Org Server.
@ -187,17 +163,10 @@ An X Window System server for Virtual Network Computing (VNC).
%prep
%setup -q -n xorg-server-%{dirsuffix} -a4 -a7
%patch1
%patch2
%patch6
%patch8 -p0
%patch13
%patch14
%patch13 -p1
%patch16 -p2
%patch23
%patch27
%patch29
%patch36 -p0
%if %vnc
%patch39 -p1
%patch40 -p0
@ -214,14 +183,11 @@ chmod 755 hw/vnc/symlink-vnc.sh
%endif
%patch45 -p0
pushd xorg-docs-*
%patch67
popd
%patch77
%patch79 -p1
%patch93
%patch101 -p1
%patch103
%patch104 -p1
%patch106 -p1
%patch112 -p0
%patch123 -p0
@ -233,37 +199,25 @@ pushd hw/xfree86/os-support/bus
popd
%patch143 -p0
%patch145 -p0
%patch147 -p1
%patch162 -p1
%patch163 -p1
%patch164 -p1
%patch168 -p1
%patch169 -p1
%patch200 -p1
%patch202 -p1
%patch203 -p1
%patch204 -p0
%patch205 -p0
%patch206 -p0
%patch207 -p0
%patch210 -p1
%patch211 -p1
%patch213 -p1
%patch217 -p1
%patch218 -p1
# Disable backtrace generation patch for now
#%patch220 -p1
%patch221 -p1
%patch222 -p1
%patch223 -p1
%patch224 -p1
%patch225 -p1
%patch226 -p1
%patch227 -p1
%patch228 -p1
%if %moblin
%patch300 -p1
%endif
%build
pushd xorg-docs-*
@ -285,6 +239,8 @@ autoreconf -fi
--enable-kdrive \
--enable-kdrive-evdev \
--enable-xephyr \
--disable-xfake \
--disable-xfbdev \
--enable-record \
--enable-xcsecurity \
--with-sha1=libcrypto \
@ -305,7 +261,12 @@ autoreconf -fi
--with-os-vendor="SUSE LINUX" \
--with-fontrootdir="/usr/share/fonts" \
--with-xkb-path="/usr/share/X11/xkb" \
--with-xkb-output="/var/lib/xkb/compiled"
--with-xkb-output="/var/lib/xkb/compiled" \
--with-default-font-path="/usr/share/fonts/misc:unscaled,\
/usr/share/fonts/Type1/,/usr/share/fonts/100dpi:unscaled,\
/usr/share/fonts/75dpi:unscaled,/usr/share/fonts/URW/,\
/usr/share/fonts/cyrillic:unscaled,\
/usr/share/fonts/truetype/,built-ins"
make %{?jobs:-j %jobs}
make -C hw/kdrive %{?jobs:-j %jobs}
@ -324,6 +285,12 @@ chmod u-s $RPM_BUILD_ROOT/usr/bin/Xorg
mkdir -p $RPM_BUILD_ROOT/var/lib/X11
ln -snf ../../../usr/bin/Xorg $RPM_BUILD_ROOT/var/lib/X11/X
ln -snf ../../var/lib/X11/X $RPM_BUILD_ROOT/usr/bin/X
%if %suse_version > 1120
%ifnarch s390 s390x
mkdir -p $RPM_BUILD_ROOT/etc/X11/xorg.conf.d
cp $RPM_BUILD_ROOT/%{_datadir}/X11/xorg.conf.d/10-evdev.conf $RPM_BUILD_ROOT/etc/X11/xorg.conf.d/
%endif
%endif
mkdir -p $RPM_BUILD_ROOT/usr/%{_lib}/xorg/modules/updates/{fonts,input,linux,drivers,multimedia,extensions}
install -m 644 $RPM_SOURCE_DIR/README.updates $RPM_BUILD_ROOT/usr/%{_lib}/xorg/modules/updates
mkdir -p $RPM_BUILD_ROOT/etc/modprobe.d
@ -394,6 +361,9 @@ exit 0
%ifnarch s390 s390x
%if %suse_version > 1120
%dir /etc/X11/xorg.conf.d
%config(noreplace) /etc/X11/xorg.conf.d/10-evdev.conf
%dir %{_datadir}/X11/xorg.conf.d
%{_datadir}/X11/xorg.conf.d/10-evdev.conf
%endif
%dir /etc/modprobe.d
%dir /var/lib/X11
@ -403,15 +373,17 @@ exit 0
%dir /usr/%{_lib}/xorg
/usr/%{_lib}/xorg/protocol.txt
%{_mandir}/man1/*
%{_mandir}/man7/*
%doc %{_datadir}/doc/xorg-docs/
%exclude %{_mandir}/man1/Xdmx.1*
%exclude %{_mandir}/man1/Xephyr.1*
%exclude %{_mandir}/man1/Xnest.1*
%{_mandir}/man7/*
%exclude %{_mandir}/man7/Standards.7*
%exclude %{_mandir}/man7/Consortium.7*
%exclude %{_mandir}/man7/XProjectTeam.7*
%exclude %{_mandir}/man7/XOrgFoundation.7*
/var/lib/xkb/compiled/README.compiled
%ifnarch s390 s390x
%if %suse_version > 1120
/etc/X11/xorg.conf.d/10-evdev.conf
%endif
/etc/modprobe.d/50-nvidia.conf
%verify(not mode) /usr/bin/Xorg
/usr/bin/X

View File

@ -1,67 +0,0 @@
Also, don't treat DRI setup failure as an error for nouveau.
---
diff --git a/glx/glxdri.c b/glx/glxdri.c
index 21e44d1..30b820c 100644
--- a/glx/glxdri.c
+++ b/glx/glxdri.c
@@ -968,6 +968,7 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
const __DRIconfig **driConfigs;
const __DRIextension **extensions;
int i;
+ int from = X_ERROR;
if (!xf86LoaderCheckSymbol("DRIQueryDirectRenderingCapable") ||
!DRIQueryDirectRenderingCapable(pScreen, &isCapable) ||
@@ -1047,7 +1048,9 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
screen->driver = dlopen(filename, RTLD_LAZY | RTLD_LOCAL);
if (screen->driver == NULL) {
- LogMessage(X_ERROR, "AIGLX error: dlopen of %s failed (%s)\n",
+ if (!strcmp(driverName, "nouveau"))
+ from = X_INFO;
+ LogMessage(from, "AIGLX error: dlopen of %s failed (%s)\n",
filename, dlerror());
goto handle_error;
}
@@ -1184,7 +1187,7 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
free(screen);
- LogMessage(X_ERROR, "AIGLX: reverting to software rendering\n");
+ LogMessage(from, "AIGLX: reverting to software rendering\n");
return NULL;
}
diff --git a/glx/glxdri2.c b/glx/glxdri2.c
index 0f998de..a244809 100644
--- a/glx/glxdri2.c
+++ b/glx/glxdri2.c
@@ -676,6 +676,7 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
const __DRIextension **extensions;
const __DRIconfig **driConfigs;
int i;
+ int from = X_ERROR;
screen = calloc(1, sizeof *screen);
if (screen == NULL)
@@ -702,7 +703,9 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
screen->driver = dlopen(filename, RTLD_LAZY | RTLD_LOCAL);
if (screen->driver == NULL) {
- LogMessage(X_ERROR, "AIGLX error: dlopen of %s failed (%s)\n",
+ if (!strcmp(driverName, "nouveau"))
+ from = X_INFO;
+ LogMessage(from, "AIGLX error: dlopen of %s failed (%s)\n",
filename, dlerror());
goto handle_error;
}
@@ -793,7 +796,7 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
free(screen);
- LogMessage(X_ERROR, "AIGLX: reverting to software rendering\n");
+ LogMessage(from, "AIGLX: reverting to software rendering\n");
return NULL;
}

View File

@ -44,7 +44,7 @@ Index: xorg-server-1.6.3.901/hw/xfree86/common/xf86Config.c
+ gettimeofday(&NewZap, NULL);
+
+ if ((NewZap.tv_sec - LastZap.tv_sec) >= 2) {
+ xf86OSRingBell(100, 1000, 500);
+ xf86OSRingBell(30, 1000, 50);
+ LastZap = NewZap;
+ break;
+ }