From 50bab4cf0c7312d28b58eeb6cc7e9c254819253a2b6e1945ea4b2e8dcb87b9c9 Mon Sep 17 00:00:00 2001 From: OBS User autobuild Date: Thu, 10 Sep 2009 10:54:30 +0000 Subject: [PATCH] Accepting request 20273 from X11:XOrg Copy from X11:XOrg/xorg-x11-server based on submit request 20273 from user sndirsch OBS-URL: https://build.opensuse.org/request/show/20273 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/xorg-x11-server?expand=0&rev=139 --- ...fault-on-resume-with-intel-KMS-due-t.patch | 68 +++++++++++++++++++ bug534768-prefer_local_symbols.patch | 25 +++++++ ...in-use_preferred_mode_for_all_outputs.diff | 19 ++++++ xorg-x11-server.changes | 17 +++++ xorg-x11-server.spec | 8 ++- 5 files changed, 136 insertions(+), 1 deletion(-) create mode 100644 0001-Fix-sporadic-segfault-on-resume-with-intel-KMS-due-t.patch create mode 100644 bug534768-prefer_local_symbols.patch create mode 100644 moblin-use_preferred_mode_for_all_outputs.diff diff --git a/0001-Fix-sporadic-segfault-on-resume-with-intel-KMS-due-t.patch b/0001-Fix-sporadic-segfault-on-resume-with-intel-KMS-due-t.patch new file mode 100644 index 0000000..7316b55 --- /dev/null +++ b/0001-Fix-sporadic-segfault-on-resume-with-intel-KMS-due-t.patch @@ -0,0 +1,68 @@ +From 1efa035209aea97d452d829e29af2e5f1ac94272 Mon Sep 17 00:00:00 2001 +From: Matthias Hopf +Date: Fri, 4 Sep 2009 17:32:45 +0200 +Subject: [PATCH] Work around sporadic segfault on resume with intel/KMS due to cursor->bits == NULL. + +Apparently SavedCursor is sometime tried to be set while already being set. +--- + hw/xfree86/modes/xf86Cursors.c | 8 ++++++++ + hw/xfree86/ramdac/xf86Cursor.c | 17 ++++++++++------- + 2 files changed, 18 insertions(+), 7 deletions(-) + +diff --git a/hw/xfree86/modes/xf86Cursors.c b/hw/xfree86/modes/xf86Cursors.c +index 8c5a94c..3436636 100644 +--- a/hw/xfree86/modes/xf86Cursors.c ++++ b/hw/xfree86/modes/xf86Cursors.c +@@ -461,6 +461,10 @@ xf86_use_hw_cursor (ScreenPtr screen, CursorPtr cursor) + xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(scrn); + xf86CursorInfoPtr cursor_info = xf86_config->cursor_info; + ++ if (xf86_config->cursor == cursor) { ++ xf86DrvMsg(index, X_ERROR, "Trying to set already set cursor.\n"); ++ return FALSE; ++ } + if (xf86_config->cursor) + FreeCursor (xf86_config->cursor, None); + xf86_config->cursor = cursor; +@@ -480,6 +484,10 @@ xf86_use_hw_cursor_argb (ScreenPtr screen, CursorPtr cursor) + xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(scrn); + xf86CursorInfoPtr cursor_info = xf86_config->cursor_info; + ++ if (xf86_config->cursor == cursor) { ++ xf86DrvMsg(index, X_ERROR, "Trying to set already set cursor.\n"); ++ return FALSE; ++ } + if (xf86_config->cursor) + FreeCursor (xf86_config->cursor, None); + xf86_config->cursor = cursor; +diff --git a/hw/xfree86/ramdac/xf86Cursor.c b/hw/xfree86/ramdac/xf86Cursor.c +index 6b71f46..7aa7039 100644 +--- a/hw/xfree86/ramdac/xf86Cursor.c ++++ b/hw/xfree86/ramdac/xf86Cursor.c +@@ -209,13 +209,16 @@ xf86CursorEnableDisableFBAccess( + xf86CursorScreenPtr ScreenPriv = (xf86CursorScreenPtr)dixLookupPrivate( + &pScreen->devPrivates, xf86CursorScreenKey); + +- if (!enable && ScreenPriv->CurrentCursor != NullCursor) { +- CursorPtr currentCursor = ScreenPriv->CurrentCursor; +- xf86CursorSetCursor(pDev, pScreen, NullCursor, ScreenPriv->x, +- ScreenPriv->y); +- ScreenPriv->isUp = FALSE; +- ScreenPriv->SWCursor = TRUE; +- ScreenPriv->SavedCursor = currentCursor; ++ if (!enable) { ++ if (ScreenPriv->CurrentCursor != NullCursor) { ++ CursorPtr currentCursor = ScreenPriv->CurrentCursor; ++ xf86CursorSetCursor(pDev, pScreen, NullCursor, ScreenPriv->x, ++ ScreenPriv->y); ++ ScreenPriv->isUp = FALSE; ++ ScreenPriv->SWCursor = TRUE; ++ ScreenPriv->SavedCursor = currentCursor; ++ } else ++ ScreenPriv->SavedCursor = NULL; + } + + if (ScreenPriv->EnableDisableFBAccess) +-- +1.6.0.2 + diff --git a/bug534768-prefer_local_symbols.patch b/bug534768-prefer_local_symbols.patch new file mode 100644 index 0000000..c98a95c --- /dev/null +++ b/bug534768-prefer_local_symbols.patch @@ -0,0 +1,25 @@ +Index: xorg-server-1.6.3.901/hw/xfree86/loader/dlloader.c +=================================================================== +--- xorg-server-1.6.3.901.orig/hw/xfree86/loader/dlloader.c ++++ xorg-server-1.6.3.901/hw/xfree86/loader/dlloader.c +@@ -120,7 +120,7 @@ DLFindSymbol(const char *name) + } + + if (!global_scope) +- global_scope = dlopen(NULL, DLOPEN_LAZY | DLOPEN_GLOBAL); ++ global_scope = dlopen(NULL, DLOPEN_LAZY | DLOPEN_GLOBAL | RTLD_DEEPBIND); + + if (global_scope) + return DLFindSymbolLocal(global_scope, name); +@@ -136,9 +136,9 @@ DLLoadModule(loaderPtr modrec, int flags + int dlopen_flags; + + if (flags & LD_FLAG_GLOBAL) +- dlopen_flags = DLOPEN_LAZY | DLOPEN_GLOBAL; ++ dlopen_flags = DLOPEN_LAZY | DLOPEN_GLOBAL | RTLD_DEEPBIND; + else +- dlopen_flags = DLOPEN_LAZY; ++ dlopen_flags = DLOPEN_LAZY | RTLD_DEEPBIND; + dlfile = dlopen(modrec->name, dlopen_flags); + if (dlfile == NULL) { + ErrorF("dlopen: %s\n", dlerror()); diff --git a/moblin-use_preferred_mode_for_all_outputs.diff b/moblin-use_preferred_mode_for_all_outputs.diff new file mode 100644 index 0000000..f872dc4 --- /dev/null +++ b/moblin-use_preferred_mode_for_all_outputs.diff @@ -0,0 +1,19 @@ +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"); diff --git a/xorg-x11-server.changes b/xorg-x11-server.changes index f1f717f..be28fe8 100644 --- a/xorg-x11-server.changes +++ b/xorg-x11-server.changes @@ -1,3 +1,20 @@ +------------------------------------------------------------------- +Wed Sep 9 23:29:33 CEST 2009 - sndirsch@suse.de + +- moblin-use_preferred_mode_for_all_outputs.diff + * use each outputs preferred mode (bnc #537488) + +------------------------------------------------------------------- +Tue Sep 8 17:28:32 CEST 2009 - mhopf@novell.com + +- Prefer locally defined symbols in modules (bnc #534768). + +------------------------------------------------------------------- +Fri Sep 4 18:11:09 CEST 2009 - mhopf@novell.com + +- 0001-Fix-sporadic-segfault-on-resume-with-intel-KMS-due-t.patch: + Fixes segfaults with intel and KMS upon resume (only occuring sporadically). + ------------------------------------------------------------------- Thu Aug 27 18:26:05 CEST 2009 - eich@suse.de diff --git a/xorg-x11-server.spec b/xorg-x11-server.spec index 2c28d04..9028298 100644 --- a/xorg-x11-server.spec +++ b/xorg-x11-server.spec @@ -33,7 +33,7 @@ BuildRequires: libjpeg-devel Url: http://xorg.freedesktop.org/ %define EXPERIMENTAL 0 Version: 7.4 -Release: 51 +Release: 52 License: GPL v2 or later ; MIT License (or similar) BuildRoot: %{_tmppath}/%{name}-%{version}-build Group: System/X11/Servers/XF86_4 @@ -133,8 +133,11 @@ Patch168: moblin-xserver-no-root-2.patch Patch169: moblin-xorg-x11-nonroot-vesa.patch %if %moblin Patch170: xserver-boottime.patch +Patch171: moblin-use_preferred_mode_for_all_outputs.diff %endif Patch190: 0001-Unclaim-PCI-slot-if-driver-probing-fails.patch +Patch191: 0001-Fix-sporadic-segfault-on-resume-with-intel-KMS-due-t.patch +Patch200: bug534768-prefer_local_symbols.patch %description This package contains the X.Org Server. @@ -271,9 +274,12 @@ popd %patch169 -p1 %if %moblin %patch170 -p1 +%patch171 -p1 %endif # %patch190 -p1 +%patch191 -p1 +%patch200 -p1 %build pushd xorg-docs-*