1
0

Accepting request 358787 from X11:XOrg

- u_pci-primary-Fix-up-primary-PCI-device-detection-for-the-platfrom-bus.patch
  Fix up primary device detection for the platform bus to fix the Xserver
  on older iMacs (boo#835975).

- Update to version 1.18.1:
  First release in the 1.18 stable branch. Major themes are bugfixes in
  glamor, the modesetting driver, and the Present extension.
  Xwayland users may want to apply the following pair of patches in
  addition to this release:
  https://patchwork.freedesktop.org/patch/72945/raw/
  https://patchwork.freedesktop.org/patch/72951/raw/
  which combined fix an input issue when hotplugging monitors. Both are
  likely to be included in a future release unless testing discovers
  further problems.
- Remove upstreamed patches:
  + ux_xserver_xvfb-randr.patch
  + U_systemd-logind-do-not-rely-on-directed-signals.patch
  + U_kdrive-UnregisterFd-Fix-off-by-one.patch
  + U_modesetting-should-not-reference-gbm-when-it-s-not-d.patch

OBS-URL: https://build.opensuse.org/request/show/358787
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/xorg-x11-server?expand=0&rev=325
This commit is contained in:
Dominique Leuenberger 2016-02-17 09:30:11 +00:00 committed by Git OBS Bridge
commit 7d7535c4fb
9 changed files with 103 additions and 352 deletions

View File

@ -1,29 +0,0 @@
From: Egbert Eich <eich@suse.de>
Date: Tue Nov 24 16:10:08 2015 +0100
Subject: [PATCH]kdrive/UnregisterFd: Fix off by one
Patch-mainline: to be upstreamed
References: boo#867483
Signed-off-by: Egbert Eich <eich@suse.com>
The number of FDs has been decremented already, therefore this
number contains the index of the top one that is to me moved down.
Signed-off-by: Egbert Eich <eich@suse.de>
---
hw/kdrive/src/kinput.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/hw/kdrive/src/kinput.c b/hw/kdrive/src/kinput.c
index a539ca5..d28bbe0 100644
--- a/hw/kdrive/src/kinput.c
+++ b/hw/kdrive/src/kinput.c
@@ -221,7 +221,7 @@ KdUnregisterFd(void *closure, int fd, Bool do_close)
if (do_close)
close(kdInputFds[i].fd);
kdNumInputFds--;
- for (j = i; j < (kdNumInputFds - 1); j++)
+ for (j = i; j < kdNumInputFds; j++)
kdInputFds[j] = kdInputFds[j + 1];
break;
}

View File

@ -1,61 +0,0 @@
From fe8562f5316d8c74ca074ad145295c65ddff5fc2 Mon Sep 17 00:00:00 2001
From: Alan Coopersmith <alan.coopersmith@oracle.com>
Date: Fri, 1 Jan 2016 18:10:08 -0800
Subject: [PATCH] modesetting should not reference gbm when it's not defined
Fixes build errors of:
present.c: In function 'ms_do_pageflip':
present.c:410:17: error: 'drmmode_bo' has no member named 'gbm'
new_front_bo.gbm = glamor_gbm_bo_from_pixmap(screen, new_front);
^
present.c:412:22: error: 'drmmode_bo' has no member named 'gbm'
if (!new_front_bo.gbm) {
^
present.c: In function 'ms_present_check_flip':
present.c:536:36: error: 'drmmode_bo' has no member named 'gbm'
if (drmmode_crtc->rotate_bo.gbm)
^
Introduced by commit 13c7d53d
Reviewed-by: Adam Jackson <ajax@redhat.com>
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
---
hw/xfree86/drivers/modesetting/present.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/hw/xfree86/drivers/modesetting/present.c b/hw/xfree86/drivers/modesetting/present.c
index bb2976b..d65c8c8 100644
--- a/hw/xfree86/drivers/modesetting/present.c
+++ b/hw/xfree86/drivers/modesetting/present.c
@@ -398,6 +398,9 @@ ms_do_pageflip(ScreenPtr screen,
int ref_crtc_vblank_pipe,
Bool async)
{
+#ifndef GLAMOR_HAS_GBM
+ return FALSE;
+#else
ScrnInfoPtr scrn = xf86ScreenToScrn(screen);
modesettingPtr ms = modesettingPTR(scrn);
xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn);
@@ -505,6 +508,7 @@ error_out:
flipdata->flip_count--;
return FALSE;
+#endif /* GLAMOR_HAS_GBM */
}
/*
@@ -533,8 +537,10 @@ ms_present_check_flip(RRCrtcPtr crtc,
drmmode_crtc_private_ptr drmmode_crtc = config->crtc[i]->driver_private;
/* Don't do pageflipping if CRTCs are rotated. */
+#ifdef GLAMOR_HAS_GBM
if (drmmode_crtc->rotate_bo.gbm)
return FALSE;
+#endif
if (ms_crtc_on(config->crtc[i]))
num_crtcs_on++;
--
2.6.2

View File

@ -1,58 +0,0 @@
From 780a69aff0ff57ef813179a2f09556eaf488cdfc Mon Sep 17 00:00:00 2001
From: David Herrmann <dh.herrmann@gmail.com>
Date: Mon, 22 Jun 2015 21:13:05 +0200
Subject: [PATCH] systemd-logind: do not rely on directed signals
Right now, Xorg does not install DBus matches for "PauseDevice" /
"ResumeDevice". Therefore, it should usually not receive those DBus
signals from logind. It is just a coincidence that systemd-logind sends
those signals in a directed manner right now. Therefore, dbus-daemon
bypasses the broadcast matches.
However, this is not ABI and Xorg should not rely on this. systemd-logind
is free to send those signals as broadcasts, in which case Xorg will
freeze the VT. Fix this by always installing those matches.
Cc: Hans de Goede <hdegoede@redhat.com>
Cc: Keith Packard <keithp@keithp.com>
Reported-by: Jan Alexander Steffens <jan.steffens@gmail.com>
Signed-off-by: David Herrmann <dh.herrmann@gmail.com>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Tested-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
---
hw/xfree86/os-support/linux/systemd-logind.c | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
diff --git a/hw/xfree86/os-support/linux/systemd-logind.c b/hw/xfree86/os-support/linux/systemd-logind.c
index 69e2f673d4bb..2612d9e23bc4 100644
--- a/hw/xfree86/os-support/linux/systemd-logind.c
+++ b/hw/xfree86/os-support/linux/systemd-logind.c
@@ -507,6 +507,24 @@ connect_hook(DBusConnection *connection, void *data)
goto cleanup;
}
+ dbus_bus_add_match(connection,
+ "type='signal',sender='org.freedesktop.login1',interface='org.freedesktop.login1.Session',member='PauseDevice'",
+ &error);
+ if (dbus_error_is_set(&error)) {
+ LogMessage(X_ERROR, "systemd-logind: could not add match: %s\n",
+ error.message);
+ goto cleanup;
+ }
+
+ dbus_bus_add_match(connection,
+ "type='signal',sender='org.freedesktop.login1',interface='org.freedesktop.login1.Session',member='ResumeDevice'",
+ &error);
+ if (dbus_error_is_set(&error)) {
+ LogMessage(X_ERROR, "systemd-logind: could not add match: %s\n",
+ error.message);
+ goto cleanup;
+ }
+
/*
* HdG: This is not useful with systemd <= 208 since the signal only
* contains invalidated property names there, rather than property, val
--
2.4.6

View File

@ -0,0 +1,67 @@
From: Egbert Eich <eich@suse.de>
Date: Wed Feb 10 15:55:51 2016 +0100
Subject: [PATCH]pci/primary: Fix up primary PCI device detection for the platfrom bus
Patch-mainline: to be upstreamed
Git-commit: 85d81d3ec321572aea31d34a87632442687a54f5
References: boo#835975
Signed-off-by: Egbert Eich <eich@suse.com>
The detection wheter a device is the primary PCI device currently
relies on libciaccess. This checks of the PCI device is a VGA boot
device. On some systems however, the primary card is not flagged
like that - this it is not discovered.
The subsequent PCI probing has a fallback heuristic designed for this
situation. This however causes the primary device to be flagged as a
PCI bus device, not a 'platform bus' device.
To fix this, we check in the subsequent xf86platformPrimary() wheter
the primary device is flagged as a PCI bus device. If this is the
case and the same device is in the list of the 'platform bus' devices,
we reflag it as such.
This fixes the detection of the primary device on older iMacs.
Signed-off-by: Egbert Eich <eich@suse.de>
---
hw/xfree86/common/xf86platformBus.c | 29 +++++++++++++++++++++++++++++
1 file changed, 29 insertions(+)
diff --git a/hw/xfree86/common/xf86platformBus.c b/hw/xfree86/common/xf86platformBus.c
index 8b3a862..efa6d1a 100644
--- a/hw/xfree86/common/xf86platformBus.c
+++ b/hw/xfree86/common/xf86platformBus.c
@@ -622,6 +622,35 @@ void xf86platformPrimary(void)
xf86Msg(X_NONE, "\tfalling back to %s\n", primaryBus.id.plat->attribs->syspath);
}
+ } else if (xf86_num_platform_devices > 0 && primaryBus.type == BUS_PCI) {
+ /*
+ * FIXUP: platform_find_pci_info() may not always find the primary
+ * platform device. If a primary device is a platform device but was
+ * identified as PCI device, let's fix this up here.
+ */
+ int i;
+
+ for (i = 0; i < xf86_num_platform_devices; i++) {
+ char *busid = xf86_platform_odev_attributes(i)->busid;
+ int domain, bus, dev, func;
+ int ret;
+
+ if (strncmp(busid, "pci:", 4) != 0)
+ continue;
+
+ ret = sscanf(busid, "pci:%04x:%02x:%02x.%u",
+ &domain, &bus, &dev, &func);
+ if (ret != 4)
+ continue;
+
+ if (domain == primaryBus.id.pci->domain &&
+ bus == primaryBus.id.pci->bus &&
+ dev == primaryBus.id.pci->dev &&
+ func == primaryBus.id.pci->func) {
+ primaryBus.id.plat = &xf86_platform_devices[i];
+ primaryBus.type = BUS_PLATFORM;
+ }
+ }
}
}
#endif

View File

@ -1,192 +0,0 @@
Author: Lambros Lambrou <lambroslambrou@google.com>
Subject: xvfb: add randr support
Patch-Mainline: To be upstreamed
References: bnc#823410 fdo#26391
Signed-off-by: Michal Srb <msrb@suse.cz>
--- a/hw/vfb/InitOutput.c
+++ b/hw/vfb/InitOutput.c
@@ -66,6 +66,7 @@
#include "dix.h"
#include "miline.h"
#include "glx_extinit.h"
+#include "randrstr.h"
#define VFB_DEFAULT_WIDTH 1280
#define VFB_DEFAULT_HEIGHT 1024
@@ -812,6 +813,165 @@
}
static Bool
+vfbRROutputValidateMode(ScreenPtr pScreen,
+ RROutputPtr output,
+ RRModePtr mode)
+{
+ rrScrPriv(pScreen);
+
+ if (pScrPriv->minWidth <= mode->mode.width &&
+ pScrPriv->maxWidth >= mode->mode.width &&
+ pScrPriv->minHeight <= mode->mode.height &&
+ pScrPriv->maxHeight >= mode->mode.height)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+static Bool
+vfbRRScreenSetSize(ScreenPtr pScreen,
+ CARD16 width,
+ CARD16 height,
+ CARD32 mmWidth,
+ CARD32 mmHeight)
+{
+ WindowPtr root = pScreen->root;
+ WindowPtr layer;
+ WindowPtr child;
+ BoxRec box;
+
+ pScreen->width = width;
+ pScreen->height = height;
+ pScreen->mmWidth = mmWidth;
+ pScreen->mmHeight = mmHeight;
+
+ // Resize the root window & adjust its clipping
+ box.x1 = 0;
+ box.y1 = 0;
+ box.x2 = pScreen->width;
+ box.y2 = pScreen->height;
+ REGION_INIT(pScreen, &root->winSize, &box, 1);
+ REGION_INIT(pScreen, &root->borderSize, &box, 1);
+ REGION_RESET(pScreen, &root->borderClip, &box);
+ root->drawable.width = pScreen->width;
+ root->drawable.height = pScreen->height;
+ REGION_BREAK (pScreen, &root->clipList);
+
+ // Update the clipping regions of all windows
+ for (child = root->firstChild; child; child = child->nextSib)
+ (*pScreen->MarkOverlappedWindows)(child, child, &layer);
+
+ if (root->firstChild)
+ {
+ (*pScreen->MarkOverlappedWindows)(root->firstChild,
+ root->firstChild,
+ (WindowPtr *)NULL);
+ }
+ else
+ {
+ (*pScreen->MarkWindow) (root);
+ }
+
+ (*pScreen->ValidateTree)(root, NullWindow, VTOther);
+ (*pScreen->HandleExposures)(root);
+
+ // Reposition top-level windows to fit new root size
+ // XXX I assume this is what it does, but I'm not sure
+ ResizeChildrenWinSize (root, 0, 0, 0, 0);
+
+
+ // Check the pointer position
+ WindowsRestructured ();
+
+ RRScreenSizeNotify (pScreen);
+ RRTellChanged(pScreen);
+
+ // Flush resulting events, etc to clients
+ FlushAllOutput ();
+
+ return TRUE;
+}
+
+static Bool
+vfbRRCrtcSet(ScreenPtr pScreen,
+ RRCrtcPtr crtc,
+ RRModePtr mode,
+ int x,
+ int y,
+ Rotation rotation,
+ int numOutput,
+ RROutputPtr *outputs)
+{
+ return RRCrtcNotify(crtc, mode, x, y, rotation, NULL, numOutput, outputs);
+}
+
+static Bool
+vfbRRGetInfo(ScreenPtr pScreen, Rotation *rotations)
+{
+ return TRUE;
+}
+
+static Bool
+vfbRandRInit(ScreenPtr pScreen)
+{
+ rrScrPrivPtr pScrPriv;
+#if RANDR_12_INTERFACE
+ RRModePtr mode;
+ RRCrtcPtr crtc;
+ RROutputPtr output;
+ xRRModeInfo modeInfo;
+ char name[64];
+#endif
+
+ if (!RRScreenInit (pScreen))
+ return FALSE;
+ pScrPriv = rrGetScrPriv(pScreen);
+ pScrPriv->rrGetInfo = vfbRRGetInfo;
+#if RANDR_12_INTERFACE
+ pScrPriv->rrCrtcSet = vfbRRCrtcSet;
+ pScrPriv->rrScreenSetSize = vfbRRScreenSetSize;
+ pScrPriv->rrOutputSetProperty = NULL;
+#if RANDR_13_INTERFACE
+ pScrPriv->rrOutputGetProperty = NULL;
+#endif
+ pScrPriv->rrOutputValidateMode = vfbRROutputValidateMode;
+ pScrPriv->rrModeDestroy = NULL;
+
+ RRScreenSetSizeRange (pScreen,
+ 1, 1,
+ pScreen->width, pScreen->height);
+
+ sprintf (name, "%dx%d", pScreen->width, pScreen->height);
+ memset (&modeInfo, '\0', sizeof (modeInfo));
+ modeInfo.width = pScreen->width;
+ modeInfo.height = pScreen->height;
+ modeInfo.nameLength = strlen (name);
+
+ mode = RRModeGet (&modeInfo, name);
+ if (!mode)
+ return FALSE;
+
+ crtc = RRCrtcCreate (pScreen, NULL);
+ if (!crtc)
+ return FALSE;
+
+ output = RROutputCreate (pScreen, "screen", 6, NULL);
+ if (!output)
+ return FALSE;
+ if (!RROutputSetClones (output, NULL, 0))
+ return FALSE;
+ if (!RROutputSetModes (output, &mode, 1, 0))
+ return FALSE;
+ if (!RROutputSetCrtcs (output, &crtc, 1))
+ return FALSE;
+ if (!RROutputSetConnection (output, RR_Connected))
+ return FALSE;
+ RRCrtcNotify (crtc, mode, 0, 0, RR_Rotate_0, NULL, 1, &output);
+#endif
+ return TRUE;
+}
+
+static Bool
vfbScreenInit(ScreenPtr pScreen, int argc, char **argv)
{
vfbScreenInfoPtr pvfb = &vfbScreens[pScreen->myNum];
@@ -885,6 +1045,9 @@
if (!ret)
return FALSE;
+ if (!vfbRandRInit(pScreen))
+ return FALSE;
+
pScreen->InstallColormap = vfbInstallColormap;
pScreen->SaveScreen = vfbSaveScreen;

View File

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

View File

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

View File

@ -1,3 +1,33 @@
-------------------------------------------------------------------
Wed Feb 10 15:07:32 UTC 2016 - eich@suse.com
- u_pci-primary-Fix-up-primary-PCI-device-detection-for-the-platfrom-bus.patch
Fix up primary device detection for the platform bus to fix the Xserver
on older iMacs (boo#835975).
-------------------------------------------------------------------
Tue Feb 9 20:55:28 UTC 2016 - tobias.johannes.klausmann@mni.thm.de
- Update to version 1.18.1:
First release in the 1.18 stable branch. Major themes are bugfixes in
glamor, the modesetting driver, and the Present extension.
Xwayland users may want to apply the following pair of patches in
addition to this release:
https://patchwork.freedesktop.org/patch/72945/raw/
https://patchwork.freedesktop.org/patch/72951/raw/
which combined fix an input issue when hotplugging monitors. Both are
likely to be included in a future release unless testing discovers
further problems.
- Remove upstreamed patches:
+ ux_xserver_xvfb-randr.patch
+ U_systemd-logind-do-not-rely-on-directed-signals.patch
+ U_kdrive-UnregisterFd-Fix-off-by-one.patch
+ U_modesetting-should-not-reference-gbm-when-it-s-not-d.patch
-------------------------------------------------------------------
Fri Jan 15 16:25:36 UTC 2016 - eich@suse.com

View File

@ -26,7 +26,7 @@
Name: xorg-x11-server
%define dirsuffix 1.18.0
%define dirsuffix 1.18.1
Summary: X
License: MIT
@ -167,7 +167,6 @@ Patch101: u_confine_to_shape.diff
# PATCH-FIX-UPSTREAM u_x86emu-include-order.patch schwab@suse.de -- Change include order to avoid conflict with system header, remove duplicate definitions
Patch102: u_x86emu-include-order.patch
Patch104: u_xorg-server-xdmcp.patch
Patch105: ux_xserver_xvfb-randr.patch
# PATCH-FIX-UPSTREAM u_exa-only-draw-valid-trapezoids.patch bnc#853846 msrb@suse.com -- Fixes possible crash of server using invalid trapezoids. 2013-12-12 patch is waiting in mailing list to be upstreamed.
Patch106: u_exa-only-draw-valid-trapezoids.patch
Patch112: u_render-Cast-color-masks-to-unsigned-long-before-shifting-them.patch
@ -179,11 +178,9 @@ Patch117: xorg-x11-server-byte-order.patch
Patch160: u_vesa-Add-VBEDPMSGetCapabilities-VBEDPMSGet.patch
Patch204: U_systemd-logind-do-not-rely-on-directed-signals.patch
Patch205: U_kdrive-UnregisterFd-Fix-off-by-one.patch
Patch206: u_busfault_sigaction-Only-initialize-pointer-when-matched.patch
Patch207: U_modesetting-should-not-reference-gbm-when-it-s-not-d.patch
Patch208: u_Panning-Set-panning-state-in-xf86RandR12ScreenSetSize.patch
Patch209: u_pci-primary-Fix-up-primary-PCI-device-detection-for-the-platfrom-bus.patch
Patch1000: n_xserver-optimus-autoconfig-hack.patch
@ -274,7 +271,6 @@ sh %{SOURCE92} --verify . %{SOURCE91}
%patch101
%patch102 -p1
%patch104 -p1
%patch105 -p1
%patch106 -p1
%patch112 -p1
@ -286,11 +282,9 @@ sh %{SOURCE92} --verify . %{SOURCE91}
%patch160 -p1
%patch204 -p1
%patch205 -p1
%patch206 -p1
%patch207 -p1
%patch208 -p1
%patch209 -p1
%patch1000 -p1