diff --git a/N_driver-autoconfig.diff b/N_driver-autoconfig.diff index 65deab7..0280455 100644 --- a/N_driver-autoconfig.diff +++ b/N_driver-autoconfig.diff @@ -8,17 +8,7 @@ Index: hw/xfree86/common/xf86pciBus.c =================================================================== --- hw/xfree86/common/xf86pciBus.c.orig +++ hw/xfree86/common/xf86pciBus.c -@@ -1107,7 +1107,8 @@ videoPtrToDriverList(struct pci_device * - driverList[0] = "ast"; - break; - case 0x1002: -- driverList[0] = "ati"; -+ driverList[0] = "amdgpu"; -+ driverList[1] = "ati"; - break; - case 0x102c: - driverList[0] = "chips"; -@@ -1139,6 +1141,13 @@ videoPtrToDriverList(struct pci_device * +@@ -1185,6 +1185,13 @@ xf86VideoPtrToDriverList(struct pci_devi driverList[0] = "neomagic"; break; case 0x10de: @@ -32,7 +22,7 @@ Index: hw/xfree86/common/xf86pciBus.c case 0x12d2: { int idx = 0; -@@ -1150,7 +1159,8 @@ videoPtrToDriverList(struct pci_device * +@@ -1196,7 +1203,8 @@ xf86VideoPtrToDriverList(struct pci_devi break; } case 0x1106: diff --git a/U_xfree86-Take-the-input-lock-for-xf86RecolorCursor.patch b/U_xfree86-Take-the-input-lock-for-xf86RecolorCursor.patch new file mode 100644 index 0000000..5f3334e --- /dev/null +++ b/U_xfree86-Take-the-input-lock-for-xf86RecolorCursor.patch @@ -0,0 +1,76 @@ +From 7198a6d4e74f684cb383b3e0f70dd2bae405e6e7 Mon Sep 17 00:00:00 2001 +From: Chris Wilson +Date: Mon, 16 Jan 2017 22:17:36 +0000 +Subject: [PATCH xserver] xfree86: Take the input lock for xf86RecolorCursor + +xf86RecolorCursor() may be called directly from XRecolorCursor as well +as from xf86ScreenSetCursor(). In the latter case, the input lock is +already held, but not for the former and so we need to add a wrapper +function that acquires the input lock before performing +xf86RecolorCursor() + +References: https://bugs.freedesktop.org/show_bug.cgi?id=99358 +--- + hw/xfree86/ramdac/xf86HWCurs.c | 24 ++++++++++++++++++------ + 1 file changed, 18 insertions(+), 6 deletions(-) + +diff --git a/hw/xfree86/ramdac/xf86HWCurs.c b/hw/xfree86/ramdac/xf86HWCurs.c +index 4481320..55d5861 100644 +--- a/hw/xfree86/ramdac/xf86HWCurs.c ++++ b/hw/xfree86/ramdac/xf86HWCurs.c +@@ -22,6 +22,9 @@ + + #include "servermd.h" + ++static void ++xf86RecolorCursor_locked(xf86CursorScreenPtr ScreenPriv, CursorPtr pCurs); ++ + static CARD32 + xf86ReverseBitOrder(CARD32 v) + { +@@ -204,7 +207,7 @@ xf86ScreenSetCursor(ScreenPtr pScreen, CursorPtr pCurs, int x, int y) + if (!xf86DriverLoadCursorImage (infoPtr, bits)) + return FALSE; + +- xf86RecolorCursor(pScreen, pCurs, 1); ++ xf86RecolorCursor_locked (ScreenPriv, pCurs); + + (*infoPtr->SetCursorPosition) (infoPtr->pScrn, x, y); + +@@ -312,12 +315,9 @@ xf86MoveCursor(ScreenPtr pScreen, int x, int y) + input_unlock(); + } + +-void +-xf86RecolorCursor(ScreenPtr pScreen, CursorPtr pCurs, Bool displayed) ++static void ++xf86RecolorCursor_locked(xf86CursorScreenPtr ScreenPriv, CursorPtr pCurs) + { +- xf86CursorScreenPtr ScreenPriv = +- (xf86CursorScreenPtr) dixLookupPrivate(&pScreen->devPrivates, +- xf86CursorScreenKey); + xf86CursorInfoPtr infoPtr = ScreenPriv->CursorInfoPtr; + + /* recoloring isn't applicable to ARGB cursors and drivers +@@ -357,6 +357,18 @@ xf86RecolorCursor(ScreenPtr pScreen, CursorPtr pCurs, Bool displayed) + } + } + ++void ++xf86RecolorCursor(ScreenPtr pScreen, CursorPtr pCurs, Bool displayed) ++{ ++ xf86CursorScreenPtr ScreenPriv = ++ (xf86CursorScreenPtr) dixLookupPrivate(&pScreen->devPrivates, ++ xf86CursorScreenKey); ++ ++ input_lock(); ++ xf86RecolorCursor_locked (ScreenPriv, pCurs); ++ input_unlock(); ++} ++ + /* These functions assume that MaxWidth is a multiple of 32 */ + static unsigned char * + RealizeCursorInterleave0(xf86CursorInfoPtr infoPtr, CursorPtr pCurs) +-- +2.10.2 + diff --git a/xorg-x11-server.changes b/xorg-x11-server.changes index 7011b48..23f250f 100644 --- a/xorg-x11-server.changes +++ b/xorg-x11-server.changes @@ -1,3 +1,19 @@ +------------------------------------------------------------------- +Fri Feb 10 13:01:24 UTC 2017 - sndirsch@suse.com + +- U_xfree86-Take-the-input-lock-for-xf86RecolorCursor.patch + * fixes random crashes in X in multihead mode if one of the + monitors is vertically oriented (bnc #1023845) + +------------------------------------------------------------------- +Fri Feb 3 11:40:11 UTC 2017 - sndirsch@suse.com + +- N_driver-autoconfig.diff: + No longer try to load "amdgpu" DDX by default for all GPUs with + ATI vendor ID; this is now handled instead by an "OutputClass" + section via kernel driver match, which has been added as config + file to xf86-video-amdgpu driver package (bnc#1023385) + ------------------------------------------------------------------- Thu Jan 26 15:34:57 UTC 2017 - sndirsch@suse.com diff --git a/xorg-x11-server.spec b/xorg-x11-server.spec index 6a4de03..4b94e7a 100644 --- a/xorg-x11-server.spec +++ b/xorg-x11-server.spec @@ -210,6 +210,7 @@ Patch1000: n_xserver-optimus-autoconfig-hack.patch Patch1162: b_cache-xkbcomp-output-for-fast-start-up.patch Patch1211: b_0001-Prevent-XSync-Alarms-from-senslessly-calling-CheckTr.patch Patch1222: b_sync-fix.patch +Patch1223: U_xfree86-Take-the-input-lock-for-xf86RecolorCursor.patch %description This package contains the X.Org Server. @@ -347,6 +348,8 @@ sh %{SOURCE92} --verify . %{SOURCE91} ### patch222 might not be applicable anymore #%patch1222 -p1 +%patch1223 -p1 + %build test -e source-file-list || \ find -L . -type f \! -name '*.orig' \! -path ./source-file-list > \