1
0

Accepting request 624084 from X11:XOrg

- u_modesetting-Fix-cirrus-24bpp-breakage.patch
  * Fix breakage of cirrus 24bpp support on modesetting driver
    (bsc#1101699)

- Remove /var/lib/X11 and its symlink, it is no longer needed and
  doesn't work with transaction-updates (FATE#325524).
- Move README.compiled to another location and use tmpfiles to
  copy it at runtime.

- U_modesetting-use-drmmode_bo_import-for-rotate_fb.patch
  * fixes rotation in modesetting driver (regression with
    xorg-server 1.20.0, fdo#106715)
  * might also fix boo#1099812 ...

- U_xkb-Fix-heap-overflow-caused-by-optimized-away-min.patch
  * Fix heap overflow caused by unexpected optimization, which was
    possible because of relying on undefined behavior.
    (boo#1099113)

- U_Xext-shm-Refuse-to-work-for-remote-clients.patch
  * Avoid access to System V shared memory segment on the X server
    side for clients forwarded via SSH. Also prevent them from
    hanging while waiting for the reply from the ShmCreateSegment
    request. (boo#1097227)

- Remove n_add-dummy-xf86DisableRandR.patch
  * After upgrade to 1.20.0 the API officially no longer includes
    xf86DisableRandR, so there is no need to add it back.

- Update to version 1.20.0:
  New features:
  + RANDR 1.6, which enables leasing RANDR resources to a client for its 
    exclusive use (e.g. head mounted displays)
  + Depth 30 support in glamor and the modesetting driver
  + A meson-based build system, parallel to autotools
  + Pageflipping support for PRIME output sinks
  + OutputClass device matching for xorg.conf
  + Input grab and tablet support in Xwayland
- Remove upstream patches:
  + u_xorg-x11-server-reproducible.patch
     Solved slightly different
  + u_os-inputthread-Force-unlock-when-stopping-thread.patch
  + u_xfree86-add-default-modes-for-16-9-and-16-10.patch
  + U_xwayland-Don-t-process-cursor-warping-without-an-xwl.patch
  + U_xwayland-Give-up-cleanly-on-Wayland-socket-errors.patch
  + U_xwayland-avoid-race-condition-on-new-keymap.patch
  + U_xwayland-remove-dirty-window-unconditionally-on-unre.patch
  + U_0001-animcur-Use-fixed-size-screen-private.patch
  + U_0002-animcur-Return-the-next-interval-directly-from-the-t.patch
  + U_0003-animcur-Run-the-timer-from-the-device-not-the-screen.patch
  + U_0004-animcur-Fix-transitions-between-animated-cursors.patch
  + U_xfree86-Remove-broken-RANDR-disabling-logic-v4.patch
- Adapt patches to work with the new release:
  + N_zap_warning_xserver.diff
  + N_fix_fglrx_screendepth_issue.patch
  + n_xserver-optimus-autoconfig-hack.patch
  + u_Use-better-fallbacks-to-generate-cookies-if-arc4rand.patch
  + u_xorg-wrapper-build-Build-position-independent-code.patch

OBS-URL: https://build.opensuse.org/request/show/624084
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/xorg-x11-server?expand=0&rev=359
This commit is contained in:
Dominique Leuenberger 2018-07-22 21:38:18 +00:00 committed by Git OBS Bridge
commit c38be27738
29 changed files with 324 additions and 1408 deletions

View File

@ -23,15 +23,18 @@ Index: hw/xfree86/common/xf86AutoConfig.c
#define BUILTIN_LAYOUT_SECTION_PRE \
"Section \"ServerLayout\"\n" \
"\tIdentifier\t\"Builtin Default Layout\"\n"
@@ -153,7 +160,10 @@ xf86AutoConfig(void)
for (p = deviceList; *p; p++) {
snprintf(buf, sizeof(buf), BUILTIN_DEVICE_SECTION, *p, 0, *p);
@@ -187,8 +187,12 @@ xf86AutoConfig(void)
snprintf(buf, sizeof(buf), BUILTIN_DEVICE_SECTION,
md.matches[i], 0, md.matches[i]);
AppendToConfig(buf);
- snprintf(buf, sizeof(buf), BUILTIN_SCREEN_SECTION, *p, 0, *p, 0);
+ if( strcmp(*p, "fglrx") == 0 )
+ snprintf(buf, sizeof(buf), BUILTIN_SCREEN_SECTION_FOR_FGLRX, *p, 0, *p, 0);
+ else
+ snprintf(buf, sizeof(buf), BUILTIN_SCREEN_SECTION, *p, 0, *p, 0);
- snprintf(buf, sizeof(buf), BUILTIN_SCREEN_SECTION,
- md.matches[i], 0, md.matches[i], 0);
+ if (strcmp(md.matches[i], "fglrx") == 0)
+ snprintf(buf, sizeof(buf), BUILTIN_SCREEN_SECTION_FOR_FGLRX,
+ md.matches[i], 0, md.matches[i], 0);
+ else
+ snprintf(buf, sizeof(buf), BUILTIN_SCREEN_SECTION,
+ md.matches[i], 0, md.matches[i], 0);
AppendToConfig(buf);
}

View File

@ -83,7 +83,7 @@ Index: xorg-server-1.12.1/hw/xfree86/common/xf86Globals.c
+ .ZapWarning = TRUE,
.dontZoom = FALSE,
.notrapSignals = FALSE,
.caughtSignal = FALSE,
.currentScreen = NULL,
Index: xorg-server-1.12.1/hw/xfree86/common/xf86Privstr.h
===================================================================
--- xorg-server-1.12.1.orig/hw/xfree86/common/xf86Privstr.h
@ -95,4 +95,4 @@ Index: xorg-server-1.12.1/hw/xfree86/common/xf86Privstr.h
+ Bool ZapWarning;
Bool dontZoom;
Bool notrapSignals; /* don't exit cleanly - die at fault */
Bool caughtSignal;

View File

@ -1,71 +0,0 @@
From 26841b2c9ea03fda8b2d0da254e0344fd2a3afce Mon Sep 17 00:00:00 2001
From: Adam Jackson <ajax@redhat.com>
Date: Thu, 26 Oct 2017 13:40:57 -0400
Subject: [PATCH] animcur: Use fixed-size screen private
Reviewed-by: Robert Morell <rmorell@nvidia.com>
Tested-by: Robert Morell <rmorell@nvidia.com>
Signed-off-by: Adam Jackson <ajax@redhat.com>
(cherry picked from commit 3abbdb7318018584a27220737bd92081ce8ee67c)
---
render/animcur.c | 16 ++++------------
1 file changed, 4 insertions(+), 12 deletions(-)
diff --git a/render/animcur.c b/render/animcur.c
index 52e6b8b79..3f85f9a4f 100644
--- a/render/animcur.c
+++ b/render/animcur.c
@@ -77,12 +77,9 @@ static CursorBits animCursorBits = {
static DevPrivateKeyRec AnimCurScreenPrivateKeyRec;
-#define AnimCurScreenPrivateKey (&AnimCurScreenPrivateKeyRec)
-
#define IsAnimCur(c) ((c) && ((c)->bits == &animCursorBits))
#define GetAnimCur(c) ((AnimCurPtr) ((((char *)(c) + CURSOR_REC_SIZE))))
-#define GetAnimCurScreen(s) ((AnimCurScreenPtr)dixLookupPrivate(&(s)->devPrivates, AnimCurScreenPrivateKey))
-#define SetAnimCurScreen(s,p) dixSetPrivate(&(s)->devPrivates, AnimCurScreenPrivateKey, p)
+#define GetAnimCurScreen(s) ((AnimCurScreenPtr)dixLookupPrivate(&(s)->devPrivates, &AnimCurScreenPrivateKeyRec))
#define Wrap(as,s,elt,func) (((as)->elt = (s)->elt), (s)->elt = func)
#define Unwrap(as,s,elt) ((s)->elt = (as)->elt)
@@ -101,9 +98,7 @@ AnimCurCloseScreen(ScreenPtr pScreen)
Unwrap(as, pScreen, RealizeCursor);
Unwrap(as, pScreen, UnrealizeCursor);
Unwrap(as, pScreen, RecolorCursor);
- SetAnimCurScreen(pScreen, 0);
ret = (*pScreen->CloseScreen) (pScreen);
- free(as);
return ret;
}
@@ -308,15 +303,13 @@ AnimCurInit(ScreenPtr pScreen)
{
AnimCurScreenPtr as;
- if (!dixRegisterPrivateKey(&AnimCurScreenPrivateKeyRec, PRIVATE_SCREEN, 0))
+ if (!dixRegisterPrivateKey(&AnimCurScreenPrivateKeyRec, PRIVATE_SCREEN,
+ sizeof(AnimCurScreenRec)))
return FALSE;
- as = (AnimCurScreenPtr) malloc(sizeof(AnimCurScreenRec));
- if (!as)
- return FALSE;
+ as = GetAnimCurScreen(pScreen);
as->timer = TimerSet(NULL, TimerAbsolute, 0, AnimCurTimerNotify, pScreen);
if (!as->timer) {
- free(as);
return FALSE;
}
as->timer_set = FALSE;
@@ -329,7 +322,6 @@ AnimCurInit(ScreenPtr pScreen)
Wrap(as, pScreen, RealizeCursor, AnimCurRealizeCursor);
Wrap(as, pScreen, UnrealizeCursor, AnimCurUnrealizeCursor);
Wrap(as, pScreen, RecolorCursor, AnimCurRecolorCursor);
- SetAnimCurScreen(pScreen, as);
return TRUE;
}
--
2.13.6

View File

@ -1,38 +0,0 @@
From 354c48304d27f75b7c33c03a0adb050c37788ccf Mon Sep 17 00:00:00 2001
From: Adam Jackson <ajax@redhat.com>
Date: Thu, 26 Oct 2017 13:53:06 -0400
Subject: [PATCH] animcur: Return the next interval directly from the timer
callback
If the return value is non-zero here, DoTimer() will automatically rearm
the timer for the new (relative) delay. 'soonest' is in absolute time,
so subtract off 'now' and return that.
Reviewed-by: Robert Morell <rmorell@nvidia.com>
Tested-by: Robert Morell <rmorell@nvidia.com>
Signed-off-by: Adam Jackson <ajax@redhat.com>
(cherry picked from commit cc3241a712684f8c7147f5688e9ee3ecb5a93b87)
---
render/animcur.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/render/animcur.c b/render/animcur.c
index 3f85f9a4f..26a6026ae 100644
--- a/render/animcur.c
+++ b/render/animcur.c
@@ -169,10 +169,9 @@ AnimCurTimerNotify(OsTimerPtr timer, CARD32 now, void *arg)
}
if (activeDevice)
- TimerSet(as->timer, TimerAbsolute, soonest, AnimCurTimerNotify, pScreen);
- else
- as->timer_set = FALSE;
+ return soonest - now;
+ as->timer_set = FALSE;
return 0;
}
--
2.13.6

View File

@ -1,188 +0,0 @@
From 693f0e21d55d6e9fe792d91e76e4168aa813db71 Mon Sep 17 00:00:00 2001
From: Adam Jackson <ajax@redhat.com>
Date: Thu, 26 Oct 2017 15:24:39 -0400
Subject: [PATCH] animcur: Run the timer from the device, not the screen
This is very slightly more efficient since the callback now doesn't need
to walk every input device, instead we know exactly which device's
cursor is being updated. AnimCurTimerNotify() gets outdented nicely as a
result. A more important side effect is that we can stop using the
TimerAbsolute mode and just pass in the relative delay.
In AnimCurSetCursorPosition, we no longer need to rearm the timer with
the new screen; it is enough to update the device's state. In
AnimCurDisplayCursor we need to notice when we're switching from
animated cursor to regular and cancel the existing timer.
Reviewed-by: Robert Morell <rmorell@nvidia.com>
Tested-by: Robert Morell <rmorell@nvidia.com>
Signed-off-by: Adam Jackson <ajax@redhat.com>
(cherry picked from commit 094a63d56fbfb9e23210cc9ac538fb198af37cee)
---
render/animcur.c | 87 +++++++++++++++++++-------------------------------------
1 file changed, 29 insertions(+), 58 deletions(-)
diff --git a/render/animcur.c b/render/animcur.c
index 26a6026ae..9393b4018 100644
--- a/render/animcur.c
+++ b/render/animcur.c
@@ -55,6 +55,7 @@ typedef struct _AnimCurElt {
typedef struct _AnimCur {
int nelt; /* number of elements in the elts array */
AnimCurElt *elts; /* actually allocated right after the structure */
+ OsTimerPtr timer;
} AnimCurRec, *AnimCurPtr;
typedef struct _AnimScrPriv {
@@ -65,8 +66,6 @@ typedef struct _AnimScrPriv {
RealizeCursorProcPtr RealizeCursor;
UnrealizeCursorProcPtr UnrealizeCursor;
RecolorCursorProcPtr RecolorCursor;
- OsTimerPtr timer;
- Bool timer_set;
} AnimCurScreenRec, *AnimCurScreenPtr;
static unsigned char empty[4];
@@ -130,49 +129,27 @@ AnimCurCursorLimits(DeviceIntPtr pDev,
static CARD32
AnimCurTimerNotify(OsTimerPtr timer, CARD32 now, void *arg)
{
- ScreenPtr pScreen = arg;
+ DeviceIntPtr dev = arg;
+ ScreenPtr pScreen = dev->spriteInfo->anim.pScreen;
AnimCurScreenPtr as = GetAnimCurScreen(pScreen);
- DeviceIntPtr dev;
- Bool activeDevice = FALSE;
- CARD32 soonest = ~0; /* earliest time to wakeup again */
-
- for (dev = inputInfo.devices; dev; dev = dev->next) {
- if (IsPointerDevice(dev) && pScreen == dev->spriteInfo->anim.pScreen) {
- if (!activeDevice)
- activeDevice = TRUE;
-
- if ((INT32) (now - dev->spriteInfo->anim.time) >= 0) {
- AnimCurPtr ac = GetAnimCur(dev->spriteInfo->anim.pCursor);
- int elt = (dev->spriteInfo->anim.elt + 1) % ac->nelt;
- DisplayCursorProcPtr DisplayCursor;
-
- /*
- * Not a simple Unwrap/Wrap as this
- * isn't called along the DisplayCursor
- * wrapper chain.
- */
- DisplayCursor = pScreen->DisplayCursor;
- pScreen->DisplayCursor = as->DisplayCursor;
- (void) (*pScreen->DisplayCursor) (dev,
- pScreen,
- ac->elts[elt].pCursor);
- as->DisplayCursor = pScreen->DisplayCursor;
- pScreen->DisplayCursor = DisplayCursor;
-
- dev->spriteInfo->anim.elt = elt;
- dev->spriteInfo->anim.time = now + ac->elts[elt].delay;
- }
- if (soonest > dev->spriteInfo->anim.time)
- soonest = dev->spriteInfo->anim.time;
- }
- }
+ AnimCurPtr ac = GetAnimCur(dev->spriteInfo->anim.pCursor);
+ int elt = (dev->spriteInfo->anim.elt + 1) % ac->nelt;
+ DisplayCursorProcPtr DisplayCursor = pScreen->DisplayCursor;
- if (activeDevice)
- return soonest - now;
+ /*
+ * Not a simple Unwrap/Wrap as this isn't called along the DisplayCursor
+ * wrapper chain.
+ */
+ pScreen->DisplayCursor = as->DisplayCursor;
+ (void) (*pScreen->DisplayCursor) (dev, pScreen, ac->elts[elt].pCursor);
+ as->DisplayCursor = pScreen->DisplayCursor;
+ pScreen->DisplayCursor = DisplayCursor;
- as->timer_set = FALSE;
- return 0;
+ dev->spriteInfo->anim.elt = elt;
+ dev->spriteInfo->anim.time = now + ac->elts[elt].delay;
+
+ return ac->elts[elt].delay;
}
static Bool
@@ -198,17 +175,19 @@ AnimCurDisplayCursor(DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor)
pDev->spriteInfo->anim.pCursor = pCursor;
pDev->spriteInfo->anim.pScreen = pScreen;
- if (!as->timer_set) {
- TimerSet(as->timer, TimerAbsolute, pDev->spriteInfo->anim.time,
- AnimCurTimerNotify, pScreen);
- as->timer_set = TRUE;
- }
+ ac->timer = TimerSet(ac->timer, 0, ac->elts[0].delay,
+ AnimCurTimerNotify, pDev);
}
}
else
ret = TRUE;
}
else {
+ CursorPtr old = pDev->spriteInfo->anim.pCursor;
+
+ if (old && IsAnimCur(old))
+ TimerCancel(GetAnimCur(old)->timer);
+
pDev->spriteInfo->anim.pCursor = 0;
pDev->spriteInfo->anim.pScreen = 0;
ret = (*pScreen->DisplayCursor) (pDev, pScreen, pCursor);
@@ -227,12 +206,6 @@ AnimCurSetCursorPosition(DeviceIntPtr pDev,
Unwrap(as, pScreen, SetCursorPosition);
if (pDev->spriteInfo->anim.pCursor) {
pDev->spriteInfo->anim.pScreen = pScreen;
-
- if (!as->timer_set) {
- TimerSet(as->timer, TimerAbsolute, pDev->spriteInfo->anim.time,
- AnimCurTimerNotify, pScreen);
- as->timer_set = TRUE;
- }
}
ret = (*pScreen->SetCursorPosition) (pDev, pScreen, x, y, generateEvent);
Wrap(as, pScreen, SetCursorPosition, AnimCurSetCursorPosition);
@@ -307,11 +280,6 @@ AnimCurInit(ScreenPtr pScreen)
return FALSE;
as = GetAnimCurScreen(pScreen);
- as->timer = TimerSet(NULL, TimerAbsolute, 0, AnimCurTimerNotify, pScreen);
- if (!as->timer) {
- return FALSE;
- }
- as->timer_set = FALSE;
Wrap(as, pScreen, CloseScreen, AnimCurCloseScreen);
@@ -359,10 +327,14 @@ AnimCursorCreate(CursorPtr *cursors, CARD32 *deltas, int ncursor,
pCursor->id = cid;
+ ac = GetAnimCur(pCursor);
+ ac->timer = TimerSet(NULL, 0, 0, AnimCurTimerNotify, NULL);
+
/* security creation/labeling check */
rc = XaceHook(XACE_RESOURCE_ACCESS, client, cid, RT_CURSOR, pCursor,
RT_NONE, NULL, DixCreateAccess);
if (rc != Success) {
+ TimerFree(ac->timer);
dixFiniPrivates(pCursor, PRIVATE_CURSOR);
free(pCursor);
return rc;
@@ -372,7 +344,6 @@ AnimCursorCreate(CursorPtr *cursors, CARD32 *deltas, int ncursor,
* Fill in the AnimCurRec
*/
animCursorBits.refcnt++;
- ac = GetAnimCur(pCursor);
ac->nelt = ncursor;
ac->elts = (AnimCurElt *) (ac + 1);
--
2.13.6

View File

@ -1,78 +0,0 @@
From 5e83ebd76738455c443a66024b0b5eb92930b36c Mon Sep 17 00:00:00 2001
From: Adam Jackson <ajax@redhat.com>
Date: Tue, 9 Jan 2018 10:54:05 -0500
Subject: [PATCH] animcur: Fix transitions between animated cursors
We weren't cancelling the old timer when changing cursors, making things
go all crashy. Logically we could always cancel the timer first, but
then we'd have to call TimerSet to re-arm ourselves, and GetTimeInMillis
is potentially expensive.
Reported-by: https://devtalk.nvidia.com/default/topic/1028172/linux/titan-v-ubuntu-16-04lts-and-387-34-driver-crashes-badly/post/5230967/#5230967
Signed-off-by: Adam Jackson <ajax@redhat.com>
Reviewed-by: Aaron Plattner <aplattner@nvidia.com>
Tested-by: Aaron Plattner <aplattner@nvidia.com>
(cherry picked from commit de60245e05c0d2528d4ff42557a044387e53315c)
---
render/animcur.c | 25 +++++++++++++++----------
1 file changed, 15 insertions(+), 10 deletions(-)
diff --git a/render/animcur.c b/render/animcur.c
index 9393b4018..e585a8f23 100644
--- a/render/animcur.c
+++ b/render/animcur.c
@@ -152,11 +152,20 @@ AnimCurTimerNotify(OsTimerPtr timer, CARD32 now, void *arg)
return ac->elts[elt].delay;
}
+static void
+AnimCurCancelTimer(DeviceIntPtr pDev)
+{
+ CursorPtr cur = pDev->spriteInfo->anim.pCursor;
+
+ if (IsAnimCur(cur))
+ TimerCancel(GetAnimCur(cur)->timer);
+}
+
static Bool
AnimCurDisplayCursor(DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor)
{
AnimCurScreenPtr as = GetAnimCurScreen(pScreen);
- Bool ret;
+ Bool ret = TRUE;
if (IsFloating(pDev))
return FALSE;
@@ -166,8 +175,10 @@ AnimCurDisplayCursor(DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor)
if (pCursor != pDev->spriteInfo->anim.pCursor) {
AnimCurPtr ac = GetAnimCur(pCursor);
- ret = (*pScreen->DisplayCursor)
- (pDev, pScreen, ac->elts[0].pCursor);
+ AnimCurCancelTimer(pDev);
+ ret = (*pScreen->DisplayCursor) (pDev, pScreen,
+ ac->elts[0].pCursor);
+
if (ret) {
pDev->spriteInfo->anim.elt = 0;
pDev->spriteInfo->anim.time =
@@ -179,15 +190,9 @@ AnimCurDisplayCursor(DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor)
AnimCurTimerNotify, pDev);
}
}
- else
- ret = TRUE;
}
else {
- CursorPtr old = pDev->spriteInfo->anim.pCursor;
-
- if (old && IsAnimCur(old))
- TimerCancel(GetAnimCur(old)->timer);
-
+ AnimCurCancelTimer(pDev);
pDev->spriteInfo->anim.pCursor = 0;
pDev->spriteInfo->anim.pScreen = 0;
ret = (*pScreen->DisplayCursor) (pDev, pScreen, pCursor);
--
2.13.6

View File

@ -0,0 +1,59 @@
From ec7e2b54c5b4a34b2a077082967bc3ead30e227e Mon Sep 17 00:00:00 2001
From: Alexander Volkov <a.volkov@rusbitech.ru>
Date: Tue, 5 Jun 2018 13:05:39 +0300
Subject: [PATCH] Xext/shm: Refuse to work for remote clients
Avoid access to System V shared memory segment on the X server side
for clients forwarded via SSH. Also prevent them from hanging while
waiting for the reply from the ShmCreateSegment request.
v2: Allow ShmQueryVersion request even for remote clients
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=11080
Signed-off-by: Alexander Volkov <a.volkov@rusbitech.ru>
Reviewed-by: Adam Jackson <ajax@redhat.com>
---
Xext/shm.c | 18 ++++++++++++++----
1 file changed, 14 insertions(+), 4 deletions(-)
diff --git a/Xext/shm.c b/Xext/shm.c
index fc8441c43..896a966e3 100644
--- a/Xext/shm.c
+++ b/Xext/shm.c
@@ -1302,9 +1302,14 @@ static int
ProcShmDispatch(ClientPtr client)
{
REQUEST(xReq);
- switch (stuff->data) {
- case X_ShmQueryVersion:
+
+ if (stuff->data == X_ShmQueryVersion)
return ProcShmQueryVersion(client);
+
+ if (!client->local)
+ return BadRequest;
+
+ switch (stuff->data) {
case X_ShmAttach:
return ProcShmAttach(client);
case X_ShmDetach:
@@ -1461,9 +1466,14 @@ static int _X_COLD
SProcShmDispatch(ClientPtr client)
{
REQUEST(xReq);
- switch (stuff->data) {
- case X_ShmQueryVersion:
+
+ if (stuff->data == X_ShmQueryVersion)
return SProcShmQueryVersion(client);
+
+ if (!client->local)
+ return BadRequest;
+
+ switch (stuff->data) {
case X_ShmAttach:
return SProcShmAttach(client);
case X_ShmDetach:
--
2.16.3

View File

@ -1,173 +0,0 @@
Git-commit: 1326ee0bc5eb858c3c00847b3ba65134e4ca2e2d
Patch-mainline: Upstream
Author: Michal Srb <msrb@suse.com>
Subject: glx: Do not call into Composite if it is disabled.
References: bnc#1079607 fdo#104993
Otherwise X server crashes if GLX is enabled and Composite disabled. For
example the compIsAlternateVisual function will try to lookup CompScreenPtr
using the CompScreenPrivateKey, but that was never initialized if Composite is
disabled.
Fixes: f84e59a4f4. ("glx: Duplicate relevant fbconfigs for compositing visuals")
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=104993
Signed-off-by: Michal Srb <msrb@suse.com>
---
glx/glxdricommon.c | 63 +++++++++++++++++++++++++++++-------------------------
glx/glxscreens.c | 33 +++++++++++++++++-----------
2 files changed, 55 insertions(+), 41 deletions(-)
Index: xorg-server-1.19.6/glx/glxdricommon.c
===================================================================
--- xorg-server-1.19.6.orig/glx/glxdricommon.c
+++ xorg-server-1.19.6/glx/glxdricommon.c
@@ -35,6 +35,7 @@
#include <GL/glxtokens.h>
#include <GL/internal/dri_interface.h>
#include <os.h>
+#include "extinit.h"
#include "glxserver.h"
#include "glxext.h"
#include "glxcontext.h"
@@ -206,25 +207,27 @@ createModeFromConfig(const __DRIcoreExte
config->config.yInverted = GL_TRUE;
#ifdef COMPOSITE
- /*
- * Here we decide what fbconfigs will be duplicated for compositing.
- * fgbconfigs marked with duplicatedForConf will be reserved for
- * compositing visuals.
- * It might look strange to do this decision this late when translation
- * from a __DRIConfig is already done, but using the __DRIConfig
- * accessor function becomes worse both with respect to code complexity
- * and CPU usage.
- */
- if (duplicateForComp &&
- (render_type_is_pbuffer_only(renderType) ||
- config->config.rgbBits != 32 ||
- config->config.visualRating != GLX_NONE ||
- config->config.sampleBuffers != 0)) {
- free(config);
- return NULL;
- }
+ if (!noCompositeExtension) {
+ /*
+ * Here we decide what fbconfigs will be duplicated for compositing.
+ * fgbconfigs marked with duplicatedForConf will be reserved for
+ * compositing visuals.
+ * It might look strange to do this decision this late when translation
+ * from a __DRIConfig is already done, but using the __DRIConfig
+ * accessor function becomes worse both with respect to code complexity
+ * and CPU usage.
+ */
+ if (duplicateForComp &&
+ (render_type_is_pbuffer_only(renderType) ||
+ config->config.rgbBits != 32 ||
+ config->config.visualRating != GLX_NONE ||
+ config->config.sampleBuffers != 0)) {
+ free(config);
+ return NULL;
+ }
- config->config.duplicatedForComp = duplicateForComp;
+ config->config.duplicatedForComp = duplicateForComp;
+ }
#endif
return &config->config;
@@ -258,14 +261,16 @@ glxConvertConfigs(const __DRIcoreExtensi
}
#ifdef COMPOSITE
- /* Duplicate fbconfigs for use with compositing visuals */
- for (i = 0; configs[i]; i++) {
- tail->next = createModeFromConfig(core, configs[i], GLX_TRUE_COLOR,
- GL_TRUE);
- if (tail->next == NULL)
- continue;
+ if (!noCompositeExtension) {
+ /* Duplicate fbconfigs for use with compositing visuals */
+ for (i = 0; configs[i]; i++) {
+ tail->next = createModeFromConfig(core, configs[i], GLX_TRUE_COLOR,
+ GL_TRUE);
+ if (tail->next == NULL)
+ continue;
- tail = tail->next;
+ tail = tail->next;
+ }
}
#endif
Index: xorg-server-1.19.6/glx/glxscreens.c
===================================================================
--- xorg-server-1.19.6.orig/glx/glxscreens.c
+++ xorg-server-1.19.6/glx/glxscreens.c
@@ -38,6 +38,7 @@
#include <os.h>
#include <colormapst.h>
+#include "extinit.h"
#include "privates.h"
#include "glxserver.h"
#include "glxutil.h"
@@ -279,10 +280,12 @@ pickFBConfig(__GLXscreen * pGlxScreen, V
if (config->visualID != 0)
continue;
#ifdef COMPOSITE
- /* Use only duplicated configs for compIsAlternateVisuals */
- if (!!compIsAlternateVisual(pGlxScreen->pScreen, visual->vid) !=
- !!config->duplicatedForComp)
- continue;
+ if (!noCompositeExtension) {
+ /* Use only duplicated configs for compIsAlternateVisuals */
+ if (!!compIsAlternateVisual(pGlxScreen->pScreen, visual->vid) !=
+ !!config->duplicatedForComp)
+ continue;
+ }
#endif
/*
* If possible, use the same swapmethod for all built-in visual
@@ -352,8 +355,10 @@ __glXScreenInit(__GLXscreen * pGlxScreen
pGlxScreen->visuals[pGlxScreen->numVisuals++] = config;
config->visualID = visual->vid;
#ifdef COMPOSITE
- if (compIsAlternateVisual(pScreen, visual->vid))
- config->visualSelectGroup++;
+ if (!noCompositeExtension) {
+ if (compIsAlternateVisual(pScreen, visual->vid))
+ config->visualSelectGroup++;
+ }
#endif
}
}
@@ -375,10 +380,12 @@ __glXScreenInit(__GLXscreen * pGlxScreen
*/
depth = config->redBits + config->greenBits + config->blueBits;
#ifdef COMPOSITE
- if (config->duplicatedForComp) {
- depth += config->alphaBits;
- config->visualSelectGroup++;
- }
+ if (!noCompositeExtension) {
+ if (config->duplicatedForComp) {
+ depth += config->alphaBits;
+ config->visualSelectGroup++;
+ }
+ }
#endif
/* Make sure that our FBconfig's depth can actually be displayed
* (corresponds to an existing visual).
@@ -403,8 +410,10 @@ __glXScreenInit(__GLXscreen * pGlxScreen
continue;
#ifdef COMPOSITE
- if (config->duplicatedForComp)
- (void) CompositeRegisterAlternateVisuals(pScreen, &visual->vid, 1);
+ if (!noCompositeExtension) {
+ if (config->duplicatedForComp)
+ (void) CompositeRegisterAlternateVisuals(pScreen, &visual->vid, 1);
+ }
#endif
pGlxScreen->visuals[pGlxScreen->numVisuals++] = config;
initGlxVisual(visual, config);

View File

@ -0,0 +1,40 @@
From a85e94a50c94b07574c8701a3ff3c1243f4257f4 Mon Sep 17 00:00:00 2001
From: Olivier Fourdan <ofourdan@redhat.com>
Date: Fri, 15 Jun 2018 08:57:12 +0200
Subject: [PATCH] modesetting: use drmmode_bo_import() for rotate_fb
drmmode_shadow_allocate() still uses drmModeAddFB() which may fail if
the format is not as expected, preventing from using a rotated output.
Change it to use the new function drmmode_bo_import() which takes care
of calling the drmModeAddFB2() API.
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=106715
Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
Tested-by: Tomas Pelka <tpelka@redhat.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>
---
hw/xfree86/drivers/modesetting/drmmode_display.c | 7 ++-----
1 file changed, 2 insertions(+), 5 deletions(-)
diff --git a/hw/xfree86/drivers/modesetting/drmmode_display.c b/hw/xfree86/drivers/modesetting/drmmode_display.c
index 859a21a9d..ec11b3f56 100644
--- a/hw/xfree86/drivers/modesetting/drmmode_display.c
+++ b/hw/xfree86/drivers/modesetting/drmmode_display.c
@@ -1794,11 +1794,8 @@ drmmode_shadow_allocate(xf86CrtcPtr crtc, int width, int height)
return NULL;
}
- ret = drmModeAddFB(drmmode->fd, width, height, crtc->scrn->depth,
- drmmode->kbpp,
- drmmode_bo_get_pitch(&drmmode_crtc->rotate_bo),
- drmmode_bo_get_handle(&drmmode_crtc->rotate_bo),
- &drmmode_crtc->rotate_fb_id);
+ ret = drmmode_bo_import(drmmode, &drmmode_crtc->rotate_bo,
+ &drmmode_crtc->rotate_fb_id);
if (ret) {
ErrorF("failed to add rotate fb\n");
--
2.16.3

View File

@ -1,215 +0,0 @@
Git-commit: dd00e5466a0e4ea313d1860824da4123692827ed
Author: Adam Jackson <ajax@redhat.com>
Subject: xfree86: Remove broken RANDR disabling logic (v4)
Patch-mainline: Upstream
References: bnc#1068961
Signed-off-by: Michal Srb <msrb@suse.com>
The only way to get at xf86Info.disableRandR from configuration is
Option "RANDR" "foo" in ServerFlags, which probably nobody is using
seeing as it's not documented. The other way it could be set is if a
screen supports RANDR 1.2, in which case we set it to avoid trying to
use the RANDR 1.1 compat code. If the second screen is not 1.2-aware
then this would mean we don't do RANDR setup on the second screen at
all, which would almost certainly crash the first time you try to do
RANDR operations on the second screen.
Fix that all by deletion, and just check whether the screen already has
RANDR initialized before installing the stub support. If you want to
disable RANDR, use the Extensions section of xorg.conf instead.
v2: Also remove a now entirely pointless log message, telling you to
ignore a line we will no longer print.
v3: Explain the fallback path in InitOutput. (Keith Packard)
v4: Check whether the RANDR private key is initialized before trying to
use it to look up the screen private.
Signed-off-by: Adam Jackson <ajax@redhat.com>
Reviewed-by: Keith Packard <keithp@keithp.com>
---
hw/xfree86/common/xf86.h | 2 --
hw/xfree86/common/xf86Config.c | 12 ------------
hw/xfree86/common/xf86Globals.c | 2 --
hw/xfree86/common/xf86Helper.c | 7 -------
hw/xfree86/common/xf86Init.c | 23 +++++++++++++++++------
hw/xfree86/common/xf86Mode.c | 6 +-----
hw/xfree86/common/xf86Privstr.h | 2 --
hw/xfree86/modes/xf86Crtc.c | 3 ---
8 files changed, 18 insertions(+), 39 deletions(-)
Index: xorg-server-1.19.6/hw/xfree86/common/xf86.h
===================================================================
--- xorg-server-1.19.6.orig/hw/xfree86/common/xf86.h
+++ xorg-server-1.19.6/hw/xfree86/common/xf86.h
@@ -319,8 +319,6 @@ extern _X_EXPORT Bool
xf86GetModInDevEnabled(void);
extern _X_EXPORT Bool
xf86GetAllowMouseOpenFail(void);
-extern _X_EXPORT void
-xf86DisableRandR(void);
extern _X_EXPORT CARD32
xorgGetVersion(void);
extern _X_EXPORT CARD32
Index: xorg-server-1.19.6/hw/xfree86/common/xf86Config.c
===================================================================
--- xorg-server-1.19.6.orig/hw/xfree86/common/xf86Config.c
+++ xorg-server-1.19.6/hw/xfree86/common/xf86Config.c
@@ -710,7 +710,6 @@ typedef enum {
FLAG_XINERAMA,
FLAG_LOG,
FLAG_RENDER_COLORMAP_MODE,
- FLAG_RANDR,
FLAG_IGNORE_ABI,
FLAG_ALLOW_EMPTY_INPUT,
FLAG_USE_DEFAULT_FONT_PATH,
@@ -763,8 +762,6 @@ static OptionInfoRec FlagOptions[] = {
{0}, FALSE},
{FLAG_RENDER_COLORMAP_MODE, "RenderColormapMode", OPTV_STRING,
{0}, FALSE},
- {FLAG_RANDR, "RandR", OPTV_BOOLEAN,
- {0}, FALSE},
{FLAG_IGNORE_ABI, "IgnoreABI", OPTV_BOOLEAN,
{0}, FALSE},
{FLAG_USE_DEFAULT_FONT_PATH, "UseDefaultFontPath", OPTV_BOOLEAN,
@@ -909,15 +906,6 @@ configServerFlags(XF86ConfFlagsPtr flags
}
}
-#ifdef RANDR
- xf86Info.disableRandR = FALSE;
- xf86Info.randRFrom = X_DEFAULT;
- if (xf86GetOptValBool(FlagOptions, FLAG_RANDR, &value)) {
- xf86Info.disableRandR = !value;
- xf86Info.randRFrom = X_CONFIG;
- }
-#endif
-
#ifdef GLXEXT
xf86Info.glxVisuals = XF86_GlxVisualsTypical;
xf86Info.glxVisualsFrom = X_DEFAULT;
Index: xorg-server-1.19.6/hw/xfree86/common/xf86Globals.c
===================================================================
--- xorg-server-1.19.6.orig/hw/xfree86/common/xf86Globals.c
+++ xorg-server-1.19.6/hw/xfree86/common/xf86Globals.c
@@ -121,8 +121,6 @@ xf86InfoRec xf86Info = {
.pixmap24 = Pix24DontCare,
.pix24From = X_DEFAULT,
.pmFlag = TRUE,
- .disableRandR = FALSE,
- .randRFrom = X_DEFAULT,
#if defined(CONFIG_HAL) || defined(CONFIG_UDEV) || defined(CONFIG_WSCONS)
.forceInputDevices = FALSE,
.autoAddDevices = TRUE,
Index: xorg-server-1.19.6/hw/xfree86/common/xf86Helper.c
===================================================================
--- xorg-server-1.19.6.orig/hw/xfree86/common/xf86Helper.c
+++ xorg-server-1.19.6/hw/xfree86/common/xf86Helper.c
@@ -1572,13 +1572,6 @@ xf86GetAllowMouseOpenFail(void)
return xf86Info.allowMouseOpenFail;
}
-void
-xf86DisableRandR(void)
-{
- xf86Info.disableRandR = TRUE;
- xf86Info.randRFrom = X_PROBED;
-}
-
CARD32
xf86GetModuleVersion(void *module)
{
Index: xorg-server-1.19.6/hw/xfree86/common/xf86Init.c
===================================================================
--- xorg-server-1.19.6.orig/hw/xfree86/common/xf86Init.c
+++ xorg-server-1.19.6/hw/xfree86/common/xf86Init.c
@@ -77,6 +77,7 @@
#include "xf86Xinput.h"
#include "xf86InPriv.h"
#include "picturestr.h"
+#include "randrstr.h"
#include "xf86Bus.h"
#ifdef XSERVER_LIBPCIACCESS
@@ -380,6 +381,16 @@ xf86ScreenInit(ScreenPtr pScreen, int ar
return pScrn->ScreenInit (pScreen, argc, argv);
}
+static void
+xf86EnsureRANDR(ScreenPtr pScreen)
+{
+#ifdef RANDR
+ if (!dixPrivateKeyRegistered(rrPrivKey) ||
+ !rrGetScrPriv(pScreen))
+ xf86RandRInit(pScreen);
+#endif
+}
+
/*
* InitOutput --
* Initialize screenInfo for all actually accessible framebuffers.
@@ -871,12 +882,12 @@ InitOutput(ScreenInfo * pScreenInfo, int
SubPixelHorizontalRGB : SubPixelNone) :
SubPixelUnknown);
}
-#ifdef RANDR
- if (!xf86Info.disableRandR)
- xf86RandRInit(screenInfo.screens[scr_index]);
- xf86Msg(xf86Info.randRFrom, "RandR %s\n",
- xf86Info.disableRandR ? "disabled" : "enabled");
-#endif
+
+ /*
+ * If the driver hasn't set up its own RANDR support, install the
+ * fallback support.
+ */
+ xf86EnsureRANDR(xf86Screens[i]->pScreen);
}
for (i = 0; i < xf86NumGPUScreens; i++)
Index: xorg-server-1.19.6/hw/xfree86/common/xf86Mode.c
===================================================================
--- xorg-server-1.19.6.orig/hw/xfree86/common/xf86Mode.c
+++ xorg-server-1.19.6/hw/xfree86/common/xf86Mode.c
@@ -1664,12 +1664,8 @@ xf86ValidateModes(ScrnInfoPtr scrp, Disp
}
/* Lookup each mode */
-#ifdef RANDR
- if (!xf86Info.disableRandR
#ifdef PANORAMIX
- && noPanoramiXExtension
-#endif
- )
+ if (noPanoramiXExtension)
validateAllDefaultModes = TRUE;
#endif
Index: xorg-server-1.19.6/hw/xfree86/common/xf86Privstr.h
===================================================================
--- xorg-server-1.19.6.orig/hw/xfree86/common/xf86Privstr.h
+++ xorg-server-1.19.6/hw/xfree86/common/xf86Privstr.h
@@ -85,8 +85,6 @@ typedef struct {
Pix24Flags pixmap24;
MessageType pix24From;
Bool pmFlag;
- Bool disableRandR;
- MessageType randRFrom;
MessageType iglxFrom;
XF86_GlxVisuals glxVisuals;
MessageType glxVisualsFrom;
Index: xorg-server-1.19.6/hw/xfree86/modes/xf86Crtc.c
===================================================================
--- xorg-server-1.19.6.orig/hw/xfree86/modes/xf86Crtc.c
+++ xorg-server-1.19.6/hw/xfree86/modes/xf86Crtc.c
@@ -773,9 +773,6 @@ xf86CrtcScreenInit(ScreenPtr screen)
int c;
/* Rotation */
- xf86DrvMsg(scrn->scrnIndex, X_INFO,
- "RandR 1.2 enabled, ignore the following RandR disabled message.\n");
- xf86DisableRandR(); /* Disable old RandR extension support */
xf86RandR12Init(screen);
/* support all rotations if every crtc has the shadow alloc funcs */

View File

@ -0,0 +1,60 @@
Git-commit: ba1e6eaea84b73e6ccd5f73acb93110eadb1a640
Author: Michal Srb <msrb@suse.com>
Subject: xkb: Fix heap overflow caused by optimized away min.
Patch-mainline: Upstream
References: boo#1099113
Calling strlen on char[4] that does not need to contain '\0' is wrong and X
server may end up running into invalid memory.
In addition GCC 8 is clever enough that it knows that strlen on char[4] can
return 0, 1, 2, 3 or cause undefined behavior. With this knowledge it can
optimize away the min(..., 4). When the undefined behavior happens, any long
value can be passed as size to the memcpy which will overflow the destination
buffer.
Fixes: 83913de25d35 (xkb: Silence some compiler warnings)
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=86259
---
xkb/XKBGAlloc.c | 11 +++++------
1 file changed, 5 insertions(+), 6 deletions(-)
diff --git a/xkb/XKBGAlloc.c b/xkb/XKBGAlloc.c
index 8958b0c52..f0cda24fe 100644
--- a/xkb/XKBGAlloc.c
+++ b/xkb/XKBGAlloc.c
@@ -588,8 +588,7 @@ XkbAddGeomKeyAlias(XkbGeometryPtr geom, char *aliasStr, char *realStr)
i++, alias++) {
if (strncmp(alias->alias, aliasStr, XkbKeyNameLength) == 0) {
memset(alias->real, 0, XkbKeyNameLength);
- memcpy(alias->real, realStr,
- min(XkbKeyNameLength, strlen(realStr)));
+ memcpy(alias->real, realStr, strnlen(realStr, XkbKeyNameLength));
return alias;
}
}
@@ -599,8 +598,8 @@ XkbAddGeomKeyAlias(XkbGeometryPtr geom, char *aliasStr, char *realStr)
}
alias = &geom->key_aliases[geom->num_key_aliases];
memset(alias, 0, sizeof(XkbKeyAliasRec));
- memcpy(alias->alias, aliasStr, min(XkbKeyNameLength, strlen(aliasStr)));
- memcpy(alias->real, realStr, min(XkbKeyNameLength, strlen(realStr)));
+ memcpy(alias->alias, aliasStr, strnlen(aliasStr, XkbKeyNameLength));
+ memcpy(alias->real, realStr, strnlen(realStr, XkbKeyNameLength));
geom->num_key_aliases++;
return alias;
}
@@ -815,8 +814,8 @@ XkbAddGeomOverlayKey(XkbOverlayPtr overlay,
(_XkbAllocOverlayKeys(row, 1) != Success))
return NULL;
key = &row->keys[row->num_keys];
- memcpy(key->under.name, under, min(XkbKeyNameLength, strlen(under)));
- memcpy(key->over.name, over, min(XkbKeyNameLength, strlen(over)));
+ memcpy(key->under.name, under, strnlen(under, XkbKeyNameLength));
+ memcpy(key->over.name, over, strnlen(over, XkbKeyNameLength));
row->num_keys++;
return key;
}
--
2.13.6

View File

@ -1,92 +0,0 @@
From e96bd477395af3c2c3157ebda0f55ea4b672a114 Mon Sep 17 00:00:00 2001
From: Lyude Paul <lyude@redhat.com>
Date: Tue, 6 Feb 2018 12:41:47 -0500
Subject: [PATCH] xwayland: Don't process cursor warping without an xwl_seat
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Unfortunately, on my machine Xwayland immediately crashes when I try to
start it. gdb backtrace:
#0 0x00007ffff74f0e79 in wl_proxy_marshal () from target:/lib64/libwayland-client.so.0
#1 0x0000000000413172 in zwp_confined_pointer_v1_destroy (zwp_confined_pointer_v1=0x700000000)
at hw/xwayland/Xwayland@exe/pointer-constraints-unstable-v1-client-protocol.h:612
#2 0x0000000000418bc0 in xwl_seat_destroy_confined_pointer (xwl_seat=0x8ba2a0)
at /home/lyudess/Projects/xserver/hw/xwayland/xwayland-input.c:2839
#3 0x0000000000418c09 in xwl_seat_unconfine_pointer (xwl_seat=0x8ba2a0)
at /home/lyudess/Projects/xserver/hw/xwayland/xwayland-input.c:2849
#4 0x0000000000410d97 in xwl_cursor_confined_to (device=0xa5a000, screen=0x8b9d80, window=0x9bdb70)
at /home/lyudess/Projects/xserver/hw/xwayland/xwayland.c:328
#5 0x00000000004a8571 in ConfineCursorToWindow (pDev=0xa5a000, pWin=0x9bdb70, generateEvents=1,
confineToScreen=0) at /home/lyudess/Projects/xserver/dix/events.c:900
#6 0x00000000004a94b7 in ScreenRestructured (pScreen=0x8b9d80)
at /home/lyudess/Projects/xserver/dix/events.c:1387
#7 0x0000000000502386 in RRScreenSizeNotify (pScreen=0x8b9d80)
at /home/lyudess/Projects/xserver/randr/rrscreen.c:160
#8 0x000000000041a83c in update_screen_size (xwl_output=0x8e7670, width=3840, height=2160)
at /home/lyudess/Projects/xserver/hw/xwayland/xwayland-output.c:203
#9 0x000000000041a9f0 in apply_output_change (xwl_output=0x8e7670)
at /home/lyudess/Projects/xserver/hw/xwayland/xwayland-output.c:252
#10 0x000000000041aaeb in xdg_output_handle_done (data=0x8e7670, xdg_output=0x8e7580)
at /home/lyudess/Projects/xserver/hw/xwayland/xwayland-output.c:307
#11 0x00007ffff50e9d1e in ffi_call_unix64 () at ../src/x86/unix64.S:76
#12 0x00007ffff50e968f in ffi_call (cif=<optimized out>, fn=<optimized out>, rvalue=<optimized out>,
avalue=<optimized out>) at ../src/x86/ffi64.c:525
#13 0x00007ffff74f3d8b in wl_closure_invoke () from target:/lib64/libwayland-client.so.0
#14 0x00007ffff74f0928 in dispatch_event.isra () from target:/lib64/libwayland-client.so.0
#15 0x00007ffff74f1be4 in wl_display_dispatch_queue_pending () from target:/lib64/libwayland-client.so.0
#16 0x00007ffff74f200b in wl_display_roundtrip_queue () from target:/lib64/libwayland-client.so.0
#17 0x0000000000418cad in InitInput (argc=12, argv=0x7fffffffd9c8)
at /home/lyudess/Projects/xserver/hw/xwayland/xwayland-input.c:2867
#18 0x00000000004a20e3 in dix_main (argc=12, argv=0x7fffffffd9c8, envp=0x7fffffffda30)
at /home/lyudess/Projects/xserver/dix/main.c:250
#19 0x0000000000420cb2 in main (argc=12, argv=0x7fffffffd9c8, envp=0x7fffffffda30)
at /home/lyudess/Projects/xserver/dix/stubmain.c:34
This appears to be the result of xwl_cursor_confined_to() and
xwl_screen_get_default_seat(). While not against protocol, mutter ends
up sending xdg_output before wl_seat. xwl_screen_get_default_seat()
makes the naïve assumption that we always have a valid seat, we end up
returning a pointer to the empty list itself instead of an actual seat
and causing ourselves to segfault.
So, actually return NULL in xwl_screen_get_default_seat() if the seat
list is empty, and skip any pointer confinement processing in
xwl_cursor_confined_to() when we don't have a seat setup yet.
Signed-off-by: Lyude Paul <lyude@redhat.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
(cherry picked from commit 98edb9a35e2cdd61355656b82975d7f2b6a9f0e6)
---
hw/xwayland/xwayland.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/hw/xwayland/xwayland.c b/hw/xwayland/xwayland.c
index 0e7929715..d0bdf36a4 100644
--- a/hw/xwayland/xwayland.c
+++ b/hw/xwayland/xwayland.c
@@ -159,6 +159,9 @@ xwl_window_from_window(WindowPtr window)
static struct xwl_seat *
xwl_screen_get_default_seat(struct xwl_screen *xwl_screen)
{
+ if (xorg_list_is_empty(&xwl_screen->seat_list))
+ return NULL;
+
return container_of(xwl_screen->seat_list.prev,
struct xwl_seat,
link);
@@ -218,6 +221,10 @@ xwl_cursor_confined_to(DeviceIntPtr device,
if (!xwl_seat)
xwl_seat = xwl_screen_get_default_seat(xwl_screen);
+ /* xwl_seat hasn't been setup yet, don't do anything just yet */
+ if (!xwl_seat)
+ return;
+
if (window == screen->root) {
xwl_seat_unconfine_pointer(xwl_seat);
return;
--
2.16.1

View File

@ -1,99 +0,0 @@
From fe46cbea0f19959d469ca4d1f09be379dc7b1e45 Mon Sep 17 00:00:00 2001
From: Olivier Fourdan <ofourdan@redhat.com>
Date: Tue, 21 Nov 2017 14:45:13 +0100
Subject: [PATCH xserver] =?UTF-8?q?xwayland:=20Give=20up=20=E2=80=9Ccleanl?=
=?UTF-8?q?y=E2=80=9C=20on=20Wayland=20socket=20errors?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Xwayland is a pretty standard Wayland client, we want to be able to
capture core dumps on crashes.
Yet using "-core" causes any FatalError() to generate a core dump,
meaning that we would get a core file for all Wayland server crashes,
which would generate a lot of false positives.
Instead of using FatalError() on Wayland socket errors, give up cleanly
to avoid dumping core files when "-core" is used.
See also: https://bugzilla.gnome.org/show_bug.cgi?id=790502
and: https://bugzilla.gnome.org/show_bug.cgi?id=789086
Reviewed-by: Adam Jackson <ajax@redhat.com>
Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
---
hw/xwayland/xwayland.c | 26 +++++++++++++++++++++-----
1 file changed, 21 insertions(+), 5 deletions(-)
diff --git a/hw/xwayland/xwayland.c b/hw/xwayland/xwayland.c
index 638022180..c5a3ae7ae 100644
--- a/hw/xwayland/xwayland.c
+++ b/hw/xwayland/xwayland.c
@@ -73,6 +73,22 @@ ddxBeforeReset(void)
}
#endif
+ _X_NORETURN
+static void _X_ATTRIBUTE_PRINTF(1, 2)
+xwl_give_up(const char *f, ...)
+{
+ va_list args;
+
+ va_start(args, f);
+ VErrorFSigSafe(f, args);
+ va_end(args);
+
+ CloseWellKnownConnections();
+ OsCleanup(TRUE);
+ fflush(stderr);
+ exit(1);
+}
+
void
ddxUseMsg(void)
{
@@ -719,13 +735,13 @@ xwl_read_events (struct xwl_screen *xwl_screen)
ret = wl_display_read_events(xwl_screen->display);
if (ret == -1)
- FatalError("failed to read Wayland events: %s\n", strerror(errno));
+ xwl_give_up("failed to read Wayland events: %s\n", strerror(errno));
xwl_screen->prepare_read = 0;
ret = wl_display_dispatch_pending(xwl_screen->display);
if (ret == -1)
- FatalError("failed to dispatch Wayland events: %s\n", strerror(errno));
+ xwl_give_up("failed to dispatch Wayland events: %s\n", strerror(errno));
}
static int
@@ -752,7 +768,7 @@ xwl_dispatch_events (struct xwl_screen *xwl_screen)
wl_display_prepare_read(xwl_screen->display) == -1) {
ret = wl_display_dispatch_pending(xwl_screen->display);
if (ret == -1)
- FatalError("failed to dispatch Wayland events: %s\n",
+ xwl_give_up("failed to dispatch Wayland events: %s\n",
strerror(errno));
}
@@ -761,13 +777,13 @@ xwl_dispatch_events (struct xwl_screen *xwl_screen)
pollout:
ready = xwl_display_pollout(xwl_screen, 5);
if (ready == -1 && errno != EINTR)
- FatalError("error polling on XWayland fd: %s\n", strerror(errno));
+ xwl_give_up("error polling on XWayland fd: %s\n", strerror(errno));
if (ready > 0)
ret = wl_display_flush(xwl_screen->display);
if (ret == -1 && errno != EAGAIN)
- FatalError("failed to write to XWayland fd: %s\n", strerror(errno));
+ xwl_give_up("failed to write to XWayland fd: %s\n", strerror(errno));
xwl_screen->wait_flush = (ready == 0 || ready == -1 || ret == -1);
}
--
2.14.3

View File

@ -1,42 +0,0 @@
From 16fd18479d2f617adf0e6de922586441be3808eb Mon Sep 17 00:00:00 2001
From: Olivier Fourdan <ofourdan@redhat.com>
Date: Fri, 15 Dec 2017 16:43:47 +0100
Subject: [PATCH] xwayland: avoid race condition on new keymap
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
When the Wayland compositor notifies of a new keymap, for the first X11
client using the keyboard, the last slave keyboard used might still not
be set (i.e. “lastSlave” is still NULL).
As a result, the new keymap is not applied, and the first X11 window
will have the wrong keymap set initially.
Apply the new keymap to the master keyboard as long as there's one.
Bugzilla: https://bugzilla.gnome.org/show_bug.cgi?id=791383
Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
(cherry picked from commit 170c95978530f6373bdf4488116902b273f3abf4)
---
hw/xwayland/xwayland-input.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/hw/xwayland/xwayland-input.c b/hw/xwayland/xwayland-input.c
index f2564d5d3..d96e6f2a4 100644
--- a/hw/xwayland/xwayland-input.c
+++ b/hw/xwayland/xwayland-input.c
@@ -639,7 +639,7 @@ keyboard_handle_keymap(void *data, struct wl_keyboard *keyboard,
XkbDeviceApplyKeymap(xwl_seat->keyboard, xkb);
master = GetMaster(xwl_seat->keyboard, MASTER_KEYBOARD);
- if (master && master->lastSlave == xwl_seat->keyboard)
+ if (master)
XkbDeviceApplyKeymap(master, xkb);
XkbFreeKeyboard(xkb, XkbAllComponentsMask, TRUE);
--
2.16.1

View File

@ -1,67 +0,0 @@
From f6cd99ed79c17e3aa04b8821d10ca95939bd8675 Mon Sep 17 00:00:00 2001
From: Olivier Fourdan <ofourdan@redhat.com>
Date: Wed, 24 Jan 2018 17:45:37 +0100
Subject: [PATCH] xwayland: remove dirty window unconditionally on unrealize
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This is a rare occurrence of a crash in Xwayland for which I don't have
the reproducing steps, just a core file.
The backtrace looks as follow:
#0 raise () from /usr/lib64/libc.so.6
#1 abort () from /usr/lib64/libc.so.6
#2 OsAbort () at utils.c:1361
#3 AbortServer () at log.c:877
#4 FatalError () at log.c:1015
#5 OsSigHandler () at osinit.c:154
#6 <signal handler called>
#7 xwl_glamor_pixmap_get_wl_buffer () at xwayland-glamor.c:162
#8 xwl_screen_post_damage () at xwayland.c:514
#9 block_handler () at xwayland.c:665
#10 BlockHandler () at dixutils.c:388
#11 WaitForSomething () at WaitFor.c:219
#12 Dispatch () at dispatch.c:422
#13 dix_main () at main.c:287
The crash is caused by dereferencing “xwl_pixmap->buffer” in
xwl_glamor_pixmap_get_wl_buffer() because “xwl_pixmap” is NULL.
Reason for this is because the corresponding pixmap is from the root
window and xwayland is rootless by default.
This can happen if the window was mapped, redirected, damaged and
unredirected immediately, before the damage is processed by Xwayland.
Make sure to remove the dirty window from the damage list on unrealize
to prevent this from happening.
Credit goes to Adam Jackson <ajax@nwnk.net> and Daniel Stone
<daniel@fooishbar.org> for finding the root cause the issue.
Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
Reviewed-by: Daniel Stone <daniels@collabora.com>
(cherry picked from commit 3362422e8413dd9f231cfac50ce0a0862525b1bf)
---
hw/xwayland/xwayland.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/hw/xwayland/xwayland.c b/hw/xwayland/xwayland.c
index 939f3392c..0e7929715 100644
--- a/hw/xwayland/xwayland.c
+++ b/hw/xwayland/xwayland.c
@@ -454,8 +454,7 @@ xwl_unrealize_window(WindowPtr window)
return ret;
wl_surface_destroy(xwl_window->surface);
- if (RegionNotEmpty(DamageRegion(xwl_window->damage)))
- xorg_list_del(&xwl_window->link_damage);
+ xorg_list_del(&xwl_window->link_damage);
DamageUnregister(xwl_window->damage);
DamageDestroy(xwl_window->damage);
if (xwl_window->frame_callback)
--
2.16.1

View File

@ -1,52 +0,0 @@
Subject: Add dummy xf86DisableRandR.
Patch-mainline: Never
Author: Michal Srb <msrb@suse.com>
References: bnc#1089601
This is temporary fix for breakage after backporting upstream patch
dd00e5466a0e4ea313d1860824da4123692827ed (xorg-server-1.19.0-566-gdd00e5466).
The patch removed function xf86DisableRandR. This patch re-adds it as a dummy function
that does nothing to fix linking with drivers that expect it. Drivers should no longer
call it, so putting it back empty has the same effect.
Index: xorg-server-1.19.6/hw/xfree86/common/xf86.h
===================================================================
--- xorg-server-1.19.6.orig/hw/xfree86/common/xf86.h
+++ xorg-server-1.19.6/hw/xfree86/common/xf86.h
@@ -319,6 +319,10 @@ extern _X_EXPORT Bool
xf86GetModInDevEnabled(void);
extern _X_EXPORT Bool
xf86GetAllowMouseOpenFail(void);
+// Warning: This function does nothing now.
+// See: https://bugzilla.opensuse.org/show_bug.cgi?id=1089601
+extern _X_EXPORT void
+xf86DisableRandR(void);
extern _X_EXPORT CARD32
xorgGetVersion(void);
extern _X_EXPORT CARD32
Index: xorg-server-1.19.6/hw/xfree86/common/xf86Helper.c
===================================================================
--- xorg-server-1.19.6.orig/hw/xfree86/common/xf86Helper.c
+++ xorg-server-1.19.6/hw/xfree86/common/xf86Helper.c
@@ -1572,6 +1572,21 @@ xf86GetAllowMouseOpenFail(void)
return xf86Info.allowMouseOpenFail;
}
+void
+xf86DisableRandR(void)
+{
+ // Do nothing!
+
+ // This function was re-added to fix linking problems with drivers that expect it.
+ // For example nvidia. See: https://bugzilla.opensuse.org/show_bug.cgi?id=1089601
+
+ // This function was used to disable RANDR 1.1 if the driver intended to initialize
+ // RANDR 1.2+ itself. Since patch dd00e5466a0e4ea313d1860824da4123692827ed ("xfree86:
+ // Remove broken RANDR disabling logic") this is no longer necessary. X server will
+ // only initialize RANDR 1.1 if no driver initialized any other RANDR. So the result
+ // is the same even with this function doing nothing.
+}
+
CARD32
xf86GetModuleVersion(void *module)
{

View File

@ -27,7 +27,7 @@ Index: xorg-server-1.19.6/hw/xfree86/common/xf86Init.c
--- xorg-server-1.19.6.orig/hw/xfree86/common/xf86Init.c
+++ xorg-server-1.19.6/hw/xfree86/common/xf86Init.c
@@ -297,6 +297,16 @@ xf86PrivsElevated(void)
return privsElevated;
return PrivsElevated();
}
+extern void xf86AutoConfigOutputDevice(ScrnInfoPtr pScrn, ScrnInfoPtr master);
@ -41,7 +41,7 @@ Index: xorg-server-1.19.6/hw/xfree86/common/xf86Init.c
+}
+
static void
InstallSignalHandlers(void)
TrapSignals(void)
{
@@ -872,6 +882,8 @@ InitOutput(ScreenInfo * pScreenInfo, int
for (i = 0; i < xf86NumGPUScreens; i++)

View File

@ -85,9 +85,9 @@ Index: xorg-server-1.19.3/os/auth.c
struct protocol {
unsigned short name_length;
@@ -302,18 +306,142 @@ GenerateAuthorization(unsigned name_leng
return -1;
}
@@ -304,16 +308,140 @@ GenerateAuthorization(unsigned name_length,
#endif /* XCSECURITY */
+#if ! defined(HAVE_ARC4RANDOM_BUF)
+
@ -231,5 +231,3 @@ Index: xorg-server-1.19.3/os/auth.c
+ }
+#endif // HAVE_ARC4RANDOM_BUF
}
#endif /* XCSECURITY */

View File

@ -0,0 +1,31 @@
From: Takashi Iwai <tiwai@suse.de>
Subject: modesetting: Fix cirrus 24bpp breakage
References: bsc#1101699
The recent rewrite of modesetting driver broke the 24bpp support.
As typically found on cirrus KMS, it leads to a blank screen, spewing
the error like:
failed to add fb -22
(EE) modeset(0): failed to set mode: Invalid argument
The culript is that the wrong bpp value of the front buffer is passed
to drmModeAddFB(). Fix it by replacing with the back buffer bpp,
drmmode->kbpp.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
---
hw/xfree86/drivers/modesetting/drmmode_display.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/hw/xfree86/drivers/modesetting/drmmode_display.c
+++ b/hw/xfree86/drivers/modesetting/drmmode_display.c
@@ -990,7 +990,7 @@ drmmode_bo_import(drmmode_ptr drmmode, d
}
#endif
return drmModeAddFB(drmmode->fd, bo->width, bo->height,
- drmmode->scrn->depth, drmmode->scrn->bitsPerPixel,
+ drmmode->scrn->depth, drmmode->kbpp,
drmmode_bo_get_pitch(bo),
drmmode_bo_get_handle(bo), fb_id);
}

View File

@ -1,32 +0,0 @@
Author: Michal Srb <msrb@suse.com>
Subject: os/inputthread: Force unlock when stopping thread.
Patch-Mainline: To be upstreamed
References: bnc#1062977
The inputthread is kept locked all the time while X server's VT is not active.
If the X server is terminated while not active, it will be stuck forever in
InputThreadFini waiting for the thread to join, but it wouldn't because it is
locked.
---
This fixes the X server termination while its VT is not active. I think it
should be safe to force unlock it from InputThreadFini - X server is
terminating and nothing else should race there, but I am not completely sure.
os/inputthread.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/os/inputthread.c b/os/inputthread.c
index 721e86312..dc4eb9f20 100644
--- a/os/inputthread.c
+++ b/os/inputthread.c
@@ -497,6 +497,7 @@ InputThreadFini(void)
/* Close the pipe to get the input thread to shut down */
close(hotplugPipeWrite);
+ input_force_unlock();
pthread_join(inputThreadInfo->thread, NULL);
xorg_list_for_each_entry_safe(dev, next, &inputThreadInfo->devs, node) {
--
2.12.3

View File

@ -1,166 +0,0 @@
From a79c59476f9282d67963baf587ccce22e73fa2e5 Mon Sep 17 00:00:00 2001
From: Martin Wilck <mwilck@suse.com>
Date: Tue, 9 Jan 2018 17:06:55 +0100
Author: Martin Wilck <mwilck@suse.com>
Subject: [PATCH] xfree86: add default modes for 16:9 and 16:10
References: bsc#1075249
Patch-Mainline: To be upstreamed, submitted to xorg-devel 20180109
Signed-off-by: Martin Wilck <mwilck@suse.com>
---
hw/xfree86/common/extramodes | 142 +++++++++++++++++++++++++++++++++++++++++++
1 file changed, 142 insertions(+)
diff --git a/hw/xfree86/common/extramodes b/hw/xfree86/common/extramodes
index 450502670286..5a446938250f 100644
--- a/hw/xfree86/common/extramodes
+++ b/hw/xfree86/common/extramodes
@@ -25,3 +25,145 @@ Modeline "2048x1536" 340.48 2048 2216 2440 2832 1536 1537 1540 1603 -hsync +vs
# 2048x1536 @ 85Hz (VESA GTF) hsync: 137.0kHz
Modeline "2048x1536" 388.04 2048 2216 2440 2832 1536 1537 1540 1612 -hsync +vsync
+### 16:9 modelines generated by cvt
+
+# 640x360 59.32 Hz (CVT 0.23M9-R) hsync: 22.19 kHz; pclk: 17.75 MHz
+Modeline "640x360R" 17.75 640 688 720 800 360 363 368 374 +hsync -vsync
+
+# 640x360 59.84 Hz (CVT 0.23M9) hsync: 22.50 kHz; pclk: 18.00 MHz
+Modeline "640x360" 18.00 640 664 720 800 360 363 368 376 -hsync +vsync
+
+# 720x405 58.99 Hz (CVT 0.29M9-R) hsync: 24.72 kHz; pclk: 21.75 MHz
+Modeline "720x405R" 21.75 720 768 800 880 405 408 413 419 +hsync -vsync
+
+# 720x405 59.51 Hz (CVT 0.29M9) hsync: 25.11 kHz; pclk: 22.50 MHz
+Modeline "720x405" 22.50 720 744 808 896 405 408 413 422 -hsync +vsync
+
+# 864x486 59.57 Hz (CVT 0.42M9-R) hsync: 29.79 kHz; pclk: 30.50 MHz
+Modeline "864x486R" 30.50 864 912 944 1024 486 489 494 500 +hsync -vsync
+
+# 864x486 59.92 Hz (CVT 0.42M9) hsync: 30.32 kHz; pclk: 32.50 MHz
+Modeline "864x486" 32.50 864 888 968 1072 486 489 494 506 -hsync +vsync
+
+# 960x540 59.82 Hz (CVT 0.52M9-R) hsync: 33.26 kHz; pclk: 37.25 MHz
+Modeline "960x540R" 37.25 960 1008 1040 1120 540 543 548 556 +hsync -vsync
+
+# 960x540 59.63 Hz (CVT 0.52M9) hsync: 33.51 kHz; pclk: 40.75 MHz
+Modeline "960x540" 40.75 960 992 1088 1216 540 543 548 562 -hsync +vsync
+
+# 1024x576 59.82 Hz (CVT 0.59M9-R) hsync: 35.47 kHz; pclk: 42.00 MHz
+Modeline "1024x576R" 42.00 1024 1072 1104 1184 576 579 584 593 +hsync -vsync
+
+# 1024x576 59.90 Hz (CVT 0.59M9) hsync: 35.88 kHz; pclk: 46.50 MHz
+Modeline "1024x576" 46.50 1024 1064 1160 1296 576 579 584 599 -hsync +vsync
+
+# 1280x720 59.74 Hz (CVT 0.92M9-R) hsync: 44.27 kHz; pclk: 63.75 MHz
+Modeline "1280x720R" 63.75 1280 1328 1360 1440 720 723 728 741 +hsync -vsync
+
+# 1280x720 59.86 Hz (CVT 0.92M9) hsync: 44.77 kHz; pclk: 74.50 MHz
+Modeline "1280x720" 74.50 1280 1344 1472 1664 720 723 728 748 -hsync +vsync
+
+# 1368x768 59.85 Hz (CVT) hsync: 47.28 kHz; pclk: 72.25 MHz
+Modeline "1368x768R" 72.25 1368 1416 1448 1528 768 771 781 790 +hsync -vsync
+
+# 1368x768 59.88 Hz (CVT) hsync: 47.79 kHz; pclk: 85.25 MHz
+Modeline "1368x768" 85.25 1368 1440 1576 1784 768 771 781 798 -hsync +vsync
+
+# 1600x900 59.82 Hz (CVT 1.44M9-R) hsync: 55.40 kHz; pclk: 97.50 MHz
+Modeline "1600x900R" 97.50 1600 1648 1680 1760 900 903 908 926 +hsync -vsync
+
+# 1600x900 59.95 Hz (CVT 1.44M9) hsync: 55.99 kHz; pclk: 118.25 MHz
+Modeline "1600x900" 118.25 1600 1696 1856 2112 900 903 908 934 -hsync +vsync
+
+# 1920x1080 59.93 Hz (CVT 2.07M9-R) hsync: 66.59 kHz; pclk: 138.50 MHz
+Modeline "1920x1080R" 138.50 1920 1968 2000 2080 1080 1083 1088 1111 +hsync -vsync
+
+# 1920x1080 59.96 Hz (CVT 2.07M9) hsync: 67.16 kHz; pclk: 173.00 MHz
+Modeline "1920x1080" 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync
+
+# 2048x1152 59.91 Hz (CVT 2.36M9-R) hsync: 70.99 kHz; pclk: 156.75 MHz
+Modeline "2048x1152R" 156.75 2048 2096 2128 2208 1152 1155 1160 1185 +hsync -vsync
+
+# 2048x1152 59.90 Hz (CVT 2.36M9) hsync: 71.58 kHz; pclk: 197.00 MHz
+Modeline "2048x1152" 197.00 2048 2184 2400 2752 1152 1155 1160 1195 -hsync +vsync
+
+# 2560x1440 59.95 Hz (CVT 3.69M9-R) hsync: 88.79 kHz; pclk: 241.50 MHz
+Modeline "2560x1440R" 241.50 2560 2608 2640 2720 1440 1443 1448 1481 +hsync -vsync
+
+# 2560x1440 59.96 Hz (CVT 3.69M9) hsync: 89.52 kHz; pclk: 312.25 MHz
+Modeline "2560x1440" 312.25 2560 2752 3024 3488 1440 1443 1448 1493 -hsync +vsync
+
+# 2880x1620 59.97 Hz (CVT 4.67M9-R) hsync: 99.92 kHz; pclk: 303.75 MHz
+Modeline "2880x1620R" 303.75 2880 2928 2960 3040 1620 1623 1628 1666 +hsync -vsync
+
+# 2880x1620 59.96 Hz (CVT 4.67M9) hsync: 100.67 kHz; pclk: 396.25 MHz
+Modeline "2880x1620" 396.25 2880 3096 3408 3936 1620 1623 1628 1679 -hsync +vsync
+
+# 3200x1800 59.94 Hz (CVT 5.76M9-R) hsync: 111.01 kHz; pclk: 373.00 MHz
+Modeline "3200x1800R" 373.00 3200 3248 3280 3360 1800 1803 1808 1852 +hsync -vsync
+
+# 3200x1800 59.96 Hz (CVT 5.76M9) hsync: 111.82 kHz; pclk: 492.00 MHz
+Modeline "3200x1800" 492.00 3200 3456 3800 4400 1800 1803 1808 1865 -hsync +vsync
+
+# 3840x2160 59.97 Hz (CVT 8.29M9-R) hsync: 133.25 kHz; pclk: 533.00 MHz
+Modeline "3840x2160R" 533.00 3840 3888 3920 4000 2160 2163 2168 2222 +hsync -vsync
+
+# 3840x2160 59.98 Hz (CVT 8.29M9) hsync: 134.18 kHz; pclk: 712.75 MHz
+Modeline "3840x2160" 712.75 3840 4160 4576 5312 2160 2163 2168 2237 -hsync +vsync
+
+# 4096x2304 59.98 Hz (CVT 9.44M9-R) hsync: 142.15 kHz; pclk: 605.00 MHz
+Modeline "4096x2304R" 605.00 4096 4144 4176 4256 2304 2307 2312 2370 +hsync -vsync
+
+# 4096x2304 59.99 Hz (CVT 9.44M9) hsync: 143.13 kHz; pclk: 813.00 MHz
+Modeline "4096x2304" 813.00 4096 4440 4888 5680 2304 2307 2312 2386 -hsync +vsync
+
+# 5120x2880 59.99 Hz (CVT 14.75M9-R) hsync: 177.70 kHz; pclk: 938.25 MHz
+Modeline "5120x2880R" 938.25 5120 5168 5200 5280 2880 2883 2888 2962 +hsync -vsync
+
+# 5120x2880 59.99 Hz (CVT 14.75M9) hsync: 178.88 kHz; pclk: 1276.50 MHz
+Modeline "5120x2880" 1276.50 5120 5560 6128 7136 2880 2883 2888 2982 -hsync +vsync
+
+# 7680x4320 59.99 Hz (CVT 33.18M9-R) hsync: 266.55 kHz; pclk: 2089.75 MHz
+Modeline "7680x4320R" 2089.75 7680 7728 7760 7840 4320 4323 4328 4443 +hsync -vsync
+
+# 7680x4320 59.99 Hz (CVT 33.18M9) hsync: 268.22 kHz; pclk: 2892.50 MHz
+Modeline "7680x4320" 2892.50 7680 8376 9232 10784 4320 4323 4328 4471 -hsync +vsync
+
+# 15360x8640 59.99 Hz (CVT 132.71M9-R) hsync: 533.10 kHz; pclk: 8273.75 MHz
+Modeline "15360x8640R" 8273.75 15360 15408 15440 15520 8640 8643 8648 8886 +hsync -vsync
+
+# 15360x8640 60.00 Hz (CVT 132.71M9) hsync: 536.27 kHz; pclk: 11669.25 MHz
+Modeline "15360x8640" 11669.25 15360 16824 18560 21760 8640 8643 8648 8938 -hsync +vsync
+
+## 16:10 modelines generated by cvt
+
+# 1280x800 59.91 Hz (CVT 1.02MA-R) hsync: 49.31 kHz; pclk: 71.00 MHz
+Modeline "1280x800R" 71.00 1280 1328 1360 1440 800 803 809 823 +hsync -vsync
+
+# 1280x800 59.81 Hz (CVT 1.02MA) hsync: 49.70 kHz; pclk: 83.50 MHz
+Modeline "1280x800" 83.50 1280 1352 1480 1680 800 803 809 831 -hsync +vsync
+
+# 1400x900 59.88 Hz (CVT) hsync: 55.45 kHz; pclk: 86.50 MHz
+Modeline "1400x900R" 86.50 1400 1448 1480 1560 900 903 913 926 +hsync -vsync
+
+# 1400x900 59.96 Hz (CVT) hsync: 56.01 kHz; pclk: 103.50 MHz
+Modeline "1400x900" 103.50 1400 1480 1624 1848 900 903 913 934 -hsync +vsync
+
+# 1680x1050 59.88 Hz (CVT 1.76MA-R) hsync: 64.67 kHz; pclk: 119.00 MHz
+Modeline "1680x1050R" 119.00 1680 1728 1760 1840 1050 1053 1059 1080 +hsync -vsync
+
+# 1680x1050 59.95 Hz (CVT 1.76MA) hsync: 65.29 kHz; pclk: 146.25 MHz
+Modeline "1680x1050" 146.25 1680 1784 1960 2240 1050 1053 1059 1089 -hsync +vsync
+
+# 1920x1200 59.95 Hz (CVT 2.30MA-R) hsync: 74.04 kHz; pclk: 154.00 MHz
+Modeline "1920x1200R" 154.00 1920 1968 2000 2080 1200 1203 1209 1235 +hsync -vsync
+
+# 1920x1200 59.88 Hz (CVT 2.30MA) hsync: 74.56 kHz; pclk: 193.25 MHz
+Modeline "1920x1200" 193.25 1920 2056 2256 2592 1200 1203 1209 1245 -hsync +vsync
+
+# 2560x1600 59.97 Hz (CVT 4.10MA-R) hsync: 98.71 kHz; pclk: 268.50 MHz
+Modeline "2560x1600R" 268.50 2560 2608 2640 2720 1600 1603 1609 1646 +hsync -vsync
+
+# 2560x1600 59.99 Hz (CVT 4.10MA) hsync: 99.46 kHz; pclk: 348.50 MHz
+Modeline "2560x1600" 348.50 2560 2760 3032 3504 1600 1603 1609 1658 -hsync +vsync
+
--
2.15.1

View File

@ -15,8 +15,8 @@ index 461e818..c0ce3b8 100644
--- a/hw/xfree86/Makefile.am
+++ b/hw/xfree86/Makefile.am
@@ -87,6 +87,7 @@ if SUID_WRAPPER
wrapdir = $(SUID_WRAPPER_DIR)
wrap_PROGRAMS = Xorg.wrap
wrapexecdir = $(SUID_WRAPPER_DIR)
wrapexec_PROGRAMS = Xorg.wrap
Xorg_wrap_SOURCES = xorg-wrapper.c
+Xorg_wrap_CFLAGS = $(AM_CFLAGS) -pie -fpie
endif

View File

@ -1,33 +0,0 @@
Author: Chris Lamb <chris@chris-lamb.co.uk>
Date: Thu, 20 Jul 2017 15:42:15 +0100
Subject: configure.ac: Make BUILD_{DATE,TIME} respect SOURCE_DATE_EPOCH
References: boo#1047218
upstreaming in generalized form
https://lists.x.org/pipermail/xorg-devel/2017-July/054127.html from lamby
still not in 2018-02-20 with 1.19.6
Signed-off-by: Bernhard M. Wiedemann <bwiedemann suse de>
Index: xorg-server-1.19.3/configure.ac
===================================================================
--- xorg-server-1.19.3.orig/configure.ac
+++ xorg-server-1.19.3/configure.ac
@@ -2555,9 +2555,14 @@ AC_DEFINE_DIR(PROJECTROOT, prefix, [Over
AC_DEFINE_DIR(SYSCONFDIR, sysconfdir, [sysconfdir])
AC_SUBST([RELEASE_DATE])
-BUILD_DATE="`date +'%Y%m%d'`"
+if test "x$SOURCE_DATE_EPOCH" = "x"; then
+ BUILD_DATE="`date +'%Y%m%d'`"
+ BUILD_TIME="`date +'1%H%M%S'`"
+else
+ BUILD_DATE="`date --utc --date="@$SOURCE_DATE_EPOCH" +'%Y%m%d'`"
+ BUILD_TIME="`date --utc --date="@$SOURCE_DATE_EPOCH" +'1%H%M%S'`"
+fi
AC_SUBST([BUILD_DATE])
-BUILD_TIME="`date +'1%H%M%S'`"
AC_SUBST([BUILD_TIME])
DIX_CFLAGS="-DHAVE_DIX_CONFIG_H $XSERVER_CFLAGS"

1
xkb-tmpfiles.conf Normal file
View File

@ -0,0 +1 @@
C /var/lib/xkb/compiled/README.compiled 0644 - - - /usr/share/factory/var/lib/xkb/compiled/README.compiled

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:a732502f1db000cf36a376cd0c010ffdbf32ecdd7f1fa08ba7f5bdf9601cc197
size 5984528

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:9d967d185f05709274ee0c4f861a4672463986e550ca05725ce27974f550d3e6
size 6096838

View File

@ -1,4 +1,4 @@
Provides: X11_ABI_XINPUT = 24.1
Provides: X11_ABI_VIDEODRV = 23.0
Provides: X11_ABI_VIDEODRV = 24.0
Provides: X11_ABI_ANSIC = 0.4
Provides: X11_ABI_EXTENSION = 10.0

View File

@ -1,3 +1,83 @@
-------------------------------------------------------------------
Thu Jul 19 14:12:01 CEST 2018 - tiwai@suse.de
- u_modesetting-Fix-cirrus-24bpp-breakage.patch
* Fix breakage of cirrus 24bpp support on modesetting driver
(bsc#1101699)
-------------------------------------------------------------------
Tue Jul 10 12:03:43 UTC 2018 - fcrozat@suse.com
- Remove /var/lib/X11 and its symlink, it is no longer needed and
doesn't work with transaction-updates (FATE#325524).
- Move README.compiled to another location and use tmpfiles to
copy it at runtime.
-------------------------------------------------------------------
Mon Jul 2 12:46:54 UTC 2018 - sndirsch@suse.com
- U_modesetting-use-drmmode_bo_import-for-rotate_fb.patch
* fixes rotation in modesetting driver (regression with
xorg-server 1.20.0, fdo#106715)
* might also fix boo#1099812 ...
-------------------------------------------------------------------
Tue Jun 26 07:51:15 UTC 2018 - msrb@suse.com
- U_xkb-Fix-heap-overflow-caused-by-optimized-away-min.patch
* Fix heap overflow caused by unexpected optimization, which was
possible because of relying on undefined behavior.
(boo#1099113)
-------------------------------------------------------------------
Wed Jun 20 15:40:58 UTC 2018 - sndirsch@suse.com
- U_Xext-shm-Refuse-to-work-for-remote-clients.patch
* Avoid access to System V shared memory segment on the X server
side for clients forwarded via SSH. Also prevent them from
hanging while waiting for the reply from the ShmCreateSegment
request. (boo#1097227)
-------------------------------------------------------------------
Tue May 22 07:47:26 UTC 2018 - msrb@suse.com
- Remove n_add-dummy-xf86DisableRandR.patch
* After upgrade to 1.20.0 the API officially no longer includes
xf86DisableRandR, so there is no need to add it back.
-------------------------------------------------------------------
Sat May 12 15:03:54 UTC 2018 - tobias.johannes.klausmann@mni.thm.de
- Update to version 1.20.0:
New features:
+ RANDR 1.6, which enables leasing RANDR resources to a client for its
exclusive use (e.g. head mounted displays)
+ Depth 30 support in glamor and the modesetting driver
+ A meson-based build system, parallel to autotools
+ Pageflipping support for PRIME output sinks
+ OutputClass device matching for xorg.conf
+ Input grab and tablet support in Xwayland
- Remove upstream patches:
+ u_xorg-x11-server-reproducible.patch
Solved slightly different
+ u_os-inputthread-Force-unlock-when-stopping-thread.patch
+ u_xfree86-add-default-modes-for-16-9-and-16-10.patch
+ U_xwayland-Don-t-process-cursor-warping-without-an-xwl.patch
+ U_xwayland-Give-up-cleanly-on-Wayland-socket-errors.patch
+ U_xwayland-avoid-race-condition-on-new-keymap.patch
+ U_xwayland-remove-dirty-window-unconditionally-on-unre.patch
+ U_0001-animcur-Use-fixed-size-screen-private.patch
+ U_0002-animcur-Return-the-next-interval-directly-from-the-t.patch
+ U_0003-animcur-Run-the-timer-from-the-device-not-the-screen.patch
+ U_0004-animcur-Fix-transitions-between-animated-cursors.patch
+ U_xfree86-Remove-broken-RANDR-disabling-logic-v4.patch
- Adapt patches to work with the new release:
+ N_zap_warning_xserver.diff
+ N_fix_fglrx_screendepth_issue.patch
+ n_xserver-optimus-autoconfig-hack.patch
+ u_Use-better-fallbacks-to-generate-cookies-if-arc4rand.patch
+ u_xorg-wrapper-build-Build-position-independent-code.patch
-------------------------------------------------------------------
Tue Apr 17 10:30:46 UTC 2018 - msrb@suse.com

View File

@ -46,7 +46,7 @@
%endif
Name: xorg-x11-server
Version: 1.19.6
Version: 1.20.0
Release: 0
Url: http://xorg.freedesktop.org/
BuildRoot: %{_tmppath}/%{name}-%{version}-build
@ -62,6 +62,7 @@ Source3: xorgcfg.tar.bz2
Source4: xorg-backtrace
Source5: 50-extensions.conf
Source6: modesetting.ids
Source7: xkb-tmpfiles.conf
# RPM Macros to be installed. The ABI Versions will be injected by configure.
Source90: xorg-x11-server.macros.in
# Source91 and Source99 are used to ensure proper ABI provides.
@ -127,6 +128,7 @@ BuildRequires: pkgconfig(xfixes)
BuildRequires: pkgconfig(xfont2)
BuildRequires: pkgconfig(xi) >= 1.2.99.1
BuildRequires: pkgconfig(xineramaproto)
BuildRequires: pkgconfig(xkbcomp)
BuildRequires: pkgconfig(xkbfile)
BuildRequires: pkgconfig(xmu)
BuildRequires: pkgconfig(xorg-macros)
@ -198,6 +200,7 @@ Patch9: u_xorg-wrapper-build-Build-position-independent-code.patch
Patch100: u_01-Improved-ConfineToShape.patch
Patch101: u_02-DIX-ConfineTo-Don-t-bother-about-the-bounding-box-when-grabbing-a-shaped-window.patch
# PATCH-FIX-UPSTREAM u_x86emu-include-order.patch schwab@suse.de -- Change include order to avoid conflict with system header, remove duplicate definitions
Patch104: u_xorg-server-xdmcp.patch
Patch112: u_render-Cast-color-masks-to-unsigned-long-before-shifting-them.patch
@ -212,13 +215,6 @@ Patch209: u_pci-primary-Fix-up-primary-PCI-device-detection-for-the-platfr
Patch210: u_os-connections-Check-for-stale-FDs.patch
Patch215: u_Use-better-fallbacks-to-generate-cookies-if-arc4rand.patch
Patch216: u_os-inputthread-Force-unlock-when-stopping-thread.patch
Patch217: u_xfree86-add-default-modes-for-16-9-and-16-10.patch
Patch300: U_xwayland-Don-t-process-cursor-warping-without-an-xwl.patch
Patch301: U_xwayland-Give-up-cleanly-on-Wayland-socket-errors.patch
Patch302: U_xwayland-avoid-race-condition-on-new-keymap.patch
Patch303: U_xwayland-remove-dirty-window-unconditionally-on-unre.patch
Patch1000: n_xserver-optimus-autoconfig-hack.patch
@ -226,17 +222,13 @@ 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
Patch1301: U_0001-animcur-Use-fixed-size-screen-private.patch
Patch1302: U_0002-animcur-Return-the-next-interval-directly-from-the-t.patch
Patch1303: U_0003-animcur-Run-the-timer-from-the-device-not-the-screen.patch
Patch1304: U_0004-animcur-Fix-transitions-between-animated-cursors.patch
Patch1305: u_xorg-x11-server-reproducible.patch
Patch1400: U_xfree86-Remove-broken-RANDR-disabling-logic-v4.patch
Patch1401: u_randr-Do-not-crash-if-slave-screen-does-not-have-pro.patch
Patch1402: n_add-dummy-xf86DisableRandR.patch
Patch1500: U_glx-Do-not-call-into-Composite-if-it-is-disabled.patch
Patch1500: U_Xext-shm-Refuse-to-work-for-remote-clients.patch
Patch1501: U_xkb-Fix-heap-overflow-caused-by-optimized-away-min.patch
Patch1600: U_modesetting-use-drmmode_bo_import-for-rotate_fb.patch
Patch1601: u_modesetting-Fix-cirrus-24bpp-breakage.patch
%description
This package contains the X.Org Server.
@ -347,6 +339,7 @@ sh %{SOURCE92} --verify . %{SOURCE91}
#
%patch100 -p1
#%patch101 -p1
%patch104 -p1
%patch112 -p1
@ -364,8 +357,6 @@ sh %{SOURCE92} --verify . %{SOURCE91}
#%patch210 -p1
%patch215 -p1
%patch216 -p1
%patch217 -p1
%patch1000 -p1
@ -376,22 +367,13 @@ sh %{SOURCE92} --verify . %{SOURCE91}
### patch222 might not be applicable anymore
#%patch1222 -p1
%patch300 -p1
%patch301 -p1
%patch302 -p1
%patch303 -p1
%patch1301 -p1
%patch1302 -p1
%patch1303 -p1
%patch1304 -p1
%patch1305 -p1
%patch1400 -p1
%patch1401 -p1
%patch1402 -p1
%patch1500 -p1
%patch1501 -p1
%patch1600 -p1
%patch1601 -p1
%build
test -e source-file-list || \
@ -469,15 +451,18 @@ find %{buildroot}%{_libdir}/xorg/modules/ -name "*.la" | \
xargs rm
install -m 644 hw/xfree86/parser/{xf86Parser.h,xf86Optrec.h} \
%{buildroot}%{_includedir}/xorg
# FATE#325524
mkdir -p %{buildroot}%{_datadir}/factory/%{_localstatedir}/lib/xkb/compiled
mv %{buildroot}%{_localstatedir}/lib/xkb/compiled/README.compiled %{buildroot}%{_datadir}/factory/%{_localstatedir}/lib/xkb/compiled/
mkdir -p %{buildroot}%{_tmpfilesdir}
install -m 644 %{S:7} %{buildroot}%{_tmpfilesdir}/xkb.conf
# bnc #632737
chmod u-s %{buildroot}%{_bindir}/Xorg
mkdir -p %{buildroot}%{_localstatedir}/lib/X11
%if 0%{?pci_ids_dir:1}
%__mkdir_p %{buildroot}%{pci_ids_dir}
install -m 644 %{S:6} %{buildroot}%{pci_ids_dir}
%endif
ln -snf ../../../usr/bin/Xorg %{buildroot}%{_localstatedir}/lib/X11/X
ln -snf ../../var/lib/X11/X %{buildroot}%{_bindir}/X
ln -snf Xorg %{buildroot}%{_bindir}/X
%if 0%{?suse_version} > 1120
# get rid of evdev config file, since it's meanwhile shipped with
# evdev driver itself (since 2.10.0)
@ -521,6 +506,7 @@ mkdir -p %{buildroot}/usr/src/xserver
xargs cp --parents --target-directory=%{buildroot}/usr/src/xserver < source-file-list
%post
%tmpfiles_create xbb.conf
%ifnarch s390 s390x
%{fillup_only -an displaymanager}
# Move SaX2 generated xorg.conf file to xorg.conf.sle11
@ -578,12 +564,12 @@ fi
%dir %{pci_ids_dir}
%{pci_ids_dir}/modesetting.ids
%endif
%{_tmpfilesdir}/xkb.conf
%config(noreplace) %{_sysconfdir}/X11/xorg.conf.d/10-quirks.conf
%config(noreplace) %{_sysconfdir}/X11/xorg.conf.d/50-extensions.conf
%dir %{_datadir}/X11/xorg.conf.d
%{_datadir}/X11/xorg.conf.d/10-*.conf
%endif
%dir %{_localstatedir}/lib/X11
%endif
%dir %{_localstatedir}/lib/xkb
%dir %{_localstatedir}/lib/xkb/compiled
@ -593,7 +579,12 @@ fi
%exclude %{_mandir}/man1/Xdmx.1*
%exclude %{_mandir}/man1/Xephyr.1*
%exclude %{_mandir}/man1/Xnest.1*
%{_localstatedir}/lib/xkb/compiled/README.compiled
%dir %{_datadir}/factory
%dir %{_datadir}/factory/var
%dir %{_datadir}/factory/var/lib
%dir %{_datadir}/factory/var/lib/xkb
%dir %{_datadir}/factory/var/lib/xkb/compiled
%{_datadir}/factory/%{_localstatedir}/lib/xkb/compiled/README.compiled
%ifnarch s390 s390x
%{_bindir}/Xorg
%if 0%{?build_suid_wrapper} == 1
@ -607,7 +598,6 @@ fi
%{_mandir}/man4/*
%{_mandir}/man5/*
%{_fillupdir}/sysconfig.displaymanager-%{name}
%{_localstatedir}/lib/X11/X
%if 0%{?suse_version} >= 1315
%ghost %{_sysconfdir}/alternatives/libglx.so
%endif