forked from pool/xorg-x11-server
Accepting request 235667 from X11:XOrg
- %post: * move SaX2 generated xorg.conf file to xorg.conf.sle11 Only in very rare cases a static X configuration is still required on sle12. And, in some cases the migration from a static sle11 X configuration to a static sle12 X configuration is not possible at all, e.g. some video and input drivers are no longer available on sle12. In short, trying to migrate will result in more harm than benefit. (bnc#877315) * remove dangling link /etc/X11/XF86Config (bnc#879360, comment#15) * prevent %postun of NVIDIA/fglrx driver packages from restoring xorg.conf backup or running sax2 as fallback to create a new xorg.conf (bcn#877315) - Fix crash in abnormal condition (bnc#879666, bnc#879489): * u_connection-avoid-crash-when-CloseWellKnownConnections-gets-called-twice.patch Fix a crash when CloseWellKnownConnections() gets called twice. This can happen if FatalError() is called in the shutdown procedure. * u_CloseConsole-Don-t-report-FatalError-when-shutting-down.patch Don't call FatalError() on errors in console ioctls when in shutdown. - Added n_xserver-optimus-autoconfig-hack.patch for FATE#316410. This is a little hack to make the X server autoconfigure the output sinks for Optimus laptops. This lets them automatically use outputs that are only wired to a certain GPU. To be removed once our desktop tools can configure this easily. OBS-URL: https://build.opensuse.org/request/show/235667 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/xorg-x11-server?expand=0&rev=289
This commit is contained in:
commit
56923fccff
113
n_xserver-optimus-autoconfig-hack.patch
Normal file
113
n_xserver-optimus-autoconfig-hack.patch
Normal file
@ -0,0 +1,113 @@
|
||||
From 3216e0c618cc330f053ed36a749c8d8cfeb87a2f Mon Sep 17 00:00:00 2001
|
||||
From: Dave Airlie <airlied@redhat.com>
|
||||
Date: Fri, 17 Aug 2012 09:49:24 +1000
|
||||
Subject: [PATCH] autobind GPUs to the screen, (v3)
|
||||
|
||||
this is racy and really not what we want for hotplug going forward,
|
||||
but until DE support is in GNOME its probably for the best.
|
||||
|
||||
v2: fix if config or slave config is NULL
|
||||
v3: fix multi useful slaves
|
||||
DO NOT UPSTREAM.
|
||||
|
||||
Signed-off-by: Dave Airlie <airlied@gmail.com>
|
||||
---
|
||||
hw/xfree86/common/xf86Init.c | 12 ++++++++++++
|
||||
hw/xfree86/common/xf86platformBus.c | 3 +++
|
||||
hw/xfree86/modes/xf86Crtc.c | 32 ++++++++++++++++++++++++++++++++
|
||||
3 files changed, 47 insertions(+)
|
||||
|
||||
diff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c
|
||||
index 1e95061..c58fd2b 100644
|
||||
--- a/hw/xfree86/common/xf86Init.c
|
||||
+++ b/hw/xfree86/common/xf86Init.c
|
||||
@@ -361,6 +361,16 @@ xf86CreateRootWindow(WindowPtr pWin)
|
||||
return ret;
|
||||
}
|
||||
|
||||
+extern void xf86AutoConfigOutputDevice(ScrnInfoPtr pScrn, ScrnInfoPtr master);
|
||||
+static void
|
||||
+xf86AutoConfigOutputDevices(void)
|
||||
+{
|
||||
+ int i;
|
||||
+
|
||||
+ for (i = 0; i < xf86NumGPUScreens; i++)
|
||||
+ xf86AutoConfigOutputDevice(xf86GPUScreens[i], xf86Screens[0]);
|
||||
+}
|
||||
+
|
||||
static void
|
||||
InstallSignalHandlers(void)
|
||||
{
|
||||
@@ -931,6 +941,8 @@ InitOutput(ScreenInfo * pScreenInfo, int argc, char **argv)
|
||||
for (i = 0; i < xf86NumGPUScreens; i++)
|
||||
AttachUnboundGPU(xf86Screens[0]->pScreen, xf86GPUScreens[i]->pScreen);
|
||||
|
||||
+ xf86AutoConfigOutputDevices();
|
||||
+
|
||||
xf86VGAarbiterWrapFunctions();
|
||||
if (sigio_blocked)
|
||||
OsReleaseSIGIO();
|
||||
diff --git a/hw/xfree86/common/xf86platformBus.c b/hw/xfree86/common/xf86platformBus.c
|
||||
index 33b2b7d..be3bdd9 100644
|
||||
--- a/hw/xfree86/common/xf86platformBus.c
|
||||
+++ b/hw/xfree86/common/xf86platformBus.c
|
||||
@@ -393,6 +393,8 @@ xf86platformProbeDev(DriverPtr drvp)
|
||||
return foundScreen;
|
||||
}
|
||||
|
||||
+extern void xf86AutoConfigOutputDevice(ScrnInfoPtr pScrn, ScrnInfoPtr master);
|
||||
+
|
||||
int
|
||||
xf86platformAddDevice(int index)
|
||||
{
|
||||
@@ -465,6 +467,7 @@ xf86platformAddDevice(int index)
|
||||
}
|
||||
/* attach unbound to 0 protocol screen */
|
||||
AttachUnboundGPU(xf86Screens[0]->pScreen, xf86GPUScreens[i]->pScreen);
|
||||
+ xf86AutoConfigOutputDevice(xf86GPUScreens[i], xf86Screens[0]);
|
||||
|
||||
RRResourcesChanged(xf86Screens[0]->pScreen);
|
||||
RRTellChanged(xf86Screens[0]->pScreen);
|
||||
diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c
|
||||
index a441fd1..c1a56a5 100644
|
||||
--- a/hw/xfree86/modes/xf86Crtc.c
|
||||
+++ b/hw/xfree86/modes/xf86Crtc.c
|
||||
@@ -3383,3 +3383,35 @@ xf86DetachAllCrtc(ScrnInfoPtr scrn)
|
||||
crtc->x = crtc->y = 0;
|
||||
}
|
||||
}
|
||||
+
|
||||
+
|
||||
+void xf86AutoConfigOutputDevice(ScrnInfoPtr pScrn, ScrnInfoPtr master)
|
||||
+{
|
||||
+ RRProviderPtr master_provider;
|
||||
+ xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(master);
|
||||
+ xf86CrtcConfigPtr slave_config = XF86_CRTC_CONFIG_PTR(pScrn);
|
||||
+ Bool unbound = FALSE;
|
||||
+
|
||||
+ if (!config || !slave_config)
|
||||
+ return;
|
||||
+
|
||||
+ master_provider = config->randr_provider;
|
||||
+
|
||||
+ if ((master->capabilities & RR_Capability_SinkOffload) &&
|
||||
+ pScrn->capabilities & RR_Capability_SourceOffload) {
|
||||
+ /* source offload */
|
||||
+
|
||||
+ DetachUnboundGPU(pScrn->pScreen);
|
||||
+ unbound = TRUE;
|
||||
+ AttachOffloadGPU(master->pScreen, pScrn->pScreen);
|
||||
+ slave_config->randr_provider->offload_sink = master_provider;
|
||||
+ }
|
||||
+ if ((master->capabilities & RR_Capability_SourceOutput) &&
|
||||
+ pScrn->capabilities & RR_Capability_SinkOutput) {
|
||||
+ /* sink offload */
|
||||
+ if (!unbound)
|
||||
+ DetachUnboundGPU(pScrn->pScreen);
|
||||
+ AttachOutputGPU(master->pScreen, pScrn->pScreen);
|
||||
+ slave_config->randr_provider->output_source = master_provider;
|
||||
+ }
|
||||
+}
|
||||
--
|
||||
1.8.4.5
|
||||
|
@ -0,0 +1,81 @@
|
||||
From: Egbert Eich <eich@suse.de>
|
||||
Date: Sat May 24 02:02:32 2014 +0200
|
||||
Subject: [PATCH]CloseConsole: Don't report FatalError() when shutting down
|
||||
Patch-mainline: to be upstreamed
|
||||
Git-commit: 4edf1fd15b9d2746f1f83165ab45efbe35af8de8
|
||||
Git-repo:
|
||||
References: bnc#879666, bnc#879489
|
||||
Signed-off-by: Egbert Eich <eich@suse.com>
|
||||
|
||||
When encountering a problem while closing the console, don't report this
|
||||
as a FatalError(). FatalError() will terminate the Xserver - no use calling
|
||||
it when terminating anyway. Since FatalError() will call CloseConsole()
|
||||
we would only come here again.
|
||||
|
||||
Signed-off-by: Egbert Eich <eich@suse.de>
|
||||
---
|
||||
hw/xfree86/os-support/linux/lnx_init.c | 25 ++++++++++++++++---------
|
||||
1 file changed, 16 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/hw/xfree86/os-support/linux/lnx_init.c b/hw/xfree86/os-support/linux/lnx_init.c
|
||||
index bcb039f..c46bca9 100644
|
||||
--- a/hw/xfree86/os-support/linux/lnx_init.c
|
||||
+++ b/hw/xfree86/os-support/linux/lnx_init.c
|
||||
@@ -63,17 +63,24 @@ drain_console(int fd, void *closure)
|
||||
}
|
||||
|
||||
static void
|
||||
-switch_to(int vt, const char *from)
|
||||
+switch_to(int vt, const char *from, Bool fatal)
|
||||
{
|
||||
int ret;
|
||||
|
||||
SYSCALL(ret = ioctl(xf86Info.consoleFd, VT_ACTIVATE, vt));
|
||||
- if (ret < 0)
|
||||
- FatalError("%s: VT_ACTIVATE failed: %s\n", from, strerror(errno));
|
||||
-
|
||||
+ if (ret < 0) {
|
||||
+ if (fatal)
|
||||
+ FatalError("%s: VT_ACTIVATE failed: %s\n", from, strerror(errno));
|
||||
+ else
|
||||
+ xf86Msg(X_WARNING, "%s: VT_ACTIVATE failed: %s\n", from, strerror(errno));
|
||||
+ }
|
||||
SYSCALL(ret = ioctl(xf86Info.consoleFd, VT_WAITACTIVE, vt));
|
||||
- if (ret < 0)
|
||||
- FatalError("%s: VT_WAITACTIVE failed: %s\n", from, strerror(errno));
|
||||
+ if (ret < 0) {
|
||||
+ if (fatal)
|
||||
+ FatalError("%s: VT_WAITACTIVE failed: %s\n", from, strerror(errno));
|
||||
+ else
|
||||
+ xf86Msg(X_WARNING, "%s: VT_WAITACTIVE failed: %s\n", from, strerror(errno));
|
||||
+ }
|
||||
}
|
||||
|
||||
void
|
||||
@@ -194,7 +201,7 @@ xf86OpenConsole(void)
|
||||
/*
|
||||
* now get the VT. This _must_ succeed, or else fail completely.
|
||||
*/
|
||||
- switch_to(xf86Info.vtno, "xf86OpenConsole");
|
||||
+ switch_to(xf86Info.vtno, "xf86OpenConsole", TRUE);
|
||||
|
||||
SYSCALL(ret = ioctl(xf86Info.consoleFd, VT_GETMODE, &VT));
|
||||
if (ret < 0)
|
||||
@@ -255,7 +262,7 @@ xf86OpenConsole(void)
|
||||
else { /* serverGeneration != 1 */
|
||||
if (!xf86Info.ShareVTs && xf86Info.autoVTSwitch) {
|
||||
/* now get the VT */
|
||||
- switch_to(xf86Info.vtno, "xf86OpenConsole");
|
||||
+ switch_to(xf86Info.vtno, "xf86OpenConsole", TRUE);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -305,7 +312,7 @@ xf86CloseConsole(void)
|
||||
* Perform a switch back to the active VT when we were started
|
||||
*/
|
||||
if (activeVT >= 0) {
|
||||
- switch_to(activeVT, "xf86CloseConsole");
|
||||
+ switch_to(activeVT, "xf86CloseConsole", FALSE);
|
||||
activeVT = -1;
|
||||
}
|
||||
}
|
@ -0,0 +1,33 @@
|
||||
From: Egbert Eich <eich@suse.de>
|
||||
Date: Fri May 23 20:08:29 2014 +0200
|
||||
Subject: [PATCH]connection: avoid crash when CloseWellKnownConnections() gets called twice
|
||||
Patch-mainline: to be upstreamed
|
||||
Git-commit: 74472c4e8e4c873014554f321ec2086066126297
|
||||
Git-repo:
|
||||
References: bnc#879666, bnc#879489
|
||||
Signed-off-by: Egbert Eich <eich@suse.com>
|
||||
|
||||
CloseWellKnownConnections() closes all connections and deallocates
|
||||
their data. Thus all entries in ListenTransConns are invalid.
|
||||
To avoid access to those entries set ListenTransCount to 0.
|
||||
This avoids crashes when CloseWellKnownConnections() is called twice
|
||||
for instance when FatalError() is called on Xserver shutdown.
|
||||
|
||||
Signed-off-by: Egbert Eich <eich@suse.de>
|
||||
---
|
||||
os/connection.c | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/os/connection.c b/os/connection.c
|
||||
index 162e1d9..3c0b62a 100644
|
||||
--- a/os/connection.c
|
||||
+++ b/os/connection.c
|
||||
@@ -513,6 +513,8 @@ CloseWellKnownConnections(void)
|
||||
|
||||
for (i = 0; i < ListenTransCount; i++)
|
||||
_XSERVTransClose(ListenTransConns[i]);
|
||||
+
|
||||
+ ListenTransCount = 0;
|
||||
}
|
||||
|
||||
static void
|
@ -1,3 +1,38 @@
|
||||
-------------------------------------------------------------------
|
||||
Wed May 28 11:00:49 UTC 2014 - sndirsch@suse.com
|
||||
|
||||
- %post:
|
||||
* move SaX2 generated xorg.conf file to xorg.conf.sle11
|
||||
Only in very rare cases a static X configuration is still
|
||||
required on sle12. And, in some cases the migration from a
|
||||
static sle11 X configuration to a static sle12 X configuration
|
||||
is not possible at all, e.g. some video and input drivers
|
||||
are no longer available on sle12. In short, trying to migrate
|
||||
will result in more harm than benefit. (bnc#877315)
|
||||
* remove dangling link /etc/X11/XF86Config (bnc#879360, comment#15)
|
||||
* prevent %postun of NVIDIA/fglrx driver packages from
|
||||
restoring xorg.conf backup or running sax2 as fallback
|
||||
to create a new xorg.conf (bcn#877315)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Sat May 24 09:16:08 UTC 2014 - eich@suse.com
|
||||
|
||||
- Fix crash in abnormal condition (bnc#879666, bnc#879489):
|
||||
* u_connection-avoid-crash-when-CloseWellKnownConnections-gets-called-twice.patch
|
||||
Fix a crash when CloseWellKnownConnections() gets called twice.
|
||||
This can happen if FatalError() is called in the shutdown procedure.
|
||||
* u_CloseConsole-Don-t-report-FatalError-when-shutting-down.patch
|
||||
Don't call FatalError() on errors in console ioctls when in shutdown.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon May 19 10:52:32 UTC 2014 - sndirsch@suse.com
|
||||
|
||||
- Added n_xserver-optimus-autoconfig-hack.patch for FATE#316410. This
|
||||
is a little hack to make the X server autoconfigure the output sinks
|
||||
for Optimus laptops. This lets them automatically use outputs that
|
||||
are only wired to a certain GPU. To be removed once our desktop
|
||||
tools can configure this easily.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue May 13 13:19:30 UTC 2014 - tobias.johannes.klausmann@mni.thm.de
|
||||
|
||||
|
@ -150,10 +150,13 @@ Patch105: ux_xserver_xvfb-randr.patch
|
||||
Patch106: u_exa-only-draw-valid-trapezoids.patch
|
||||
# PATCH-FIX-UPSTREAM u_arch-Fix-image-and-bitmap-byte-order-for-ppc64le.patch -- sent to ML 2014-02-24
|
||||
Patch107: u_arch-Fix-image-and-bitmap-byte-order-for-ppc64le.patch
|
||||
Patch110: u_connection-avoid-crash-when-CloseWellKnownConnections-gets-called-twice.patch
|
||||
Patch111: u_CloseConsole-Don-t-report-FatalError-when-shutting-down.patch
|
||||
|
||||
Patch162: b_cache-xkbcomp-output-for-fast-start-up.patch
|
||||
Patch211: b_0001-Prevent-XSync-Alarms-from-senslessly-calling-CheckTr.patch
|
||||
Patch222: b_sync-fix.patch
|
||||
Patch223: n_xserver-optimus-autoconfig-hack.patch
|
||||
|
||||
%description
|
||||
This package contains the X.Org Server.
|
||||
@ -224,6 +227,8 @@ cp %{SOURCE90} .
|
||||
%patch105 -p1
|
||||
%patch106 -p1
|
||||
%patch107 -p1
|
||||
%patch110 -p1
|
||||
%patch111 -p1
|
||||
|
||||
### disabled for now
|
||||
#%patch162 -p1
|
||||
@ -232,6 +237,8 @@ cp %{SOURCE90} .
|
||||
### patch222 might not be applicable anymore
|
||||
#%patch222 -p1
|
||||
|
||||
%patch223 -p1
|
||||
|
||||
%build
|
||||
autoreconf -fi
|
||||
%configure CFLAGS="%{optflags} -fno-strict-aliasing" \
|
||||
@ -333,23 +340,27 @@ install -D xorg-x11-server.macros %{buildroot}%{_sysconfdir}/rpm/macros.xorg-ser
|
||||
%post
|
||||
%ifnarch s390 s390x
|
||||
%{fillup_only -an displaymanager}
|
||||
if [ -f etc/X11/xorg.conf ]; then
|
||||
# Document how to restore previous input driver behaviour in xorg.conf files created
|
||||
# on openSUSE <= 11.1
|
||||
if ! grep -q "will be disabled unless 'Option \"AutoAddDevices\" \"off\"'" etc/X11/xorg.conf; then
|
||||
if ! grep -q "\"AutoAddDevices\" \"off\"" etc/X11/xorg.conf; then
|
||||
sed -i '
|
||||
/Section "ServerFlags"/{
|
||||
h
|
||||
g
|
||||
a\
|
||||
# Uncomment the following option to reenable kbd/mouse driver input sections. \
|
||||
# Otherwise evdev driver is used. \
|
||||
#Option "AutoAddDevices" "off"
|
||||
}
|
||||
' etc/X11/xorg.conf
|
||||
# Move SaX2 generated xorg.conf file to xorg.conf.sle11
|
||||
#
|
||||
# Only in very rare cases a static X configuration is still
|
||||
# required on sle12. And, in some cases the migration from a
|
||||
# static sle11 X configuration to a static sle12 X configuration
|
||||
# is not possible at all, e.g. some video and input drivers
|
||||
# are no longer available on sle12. In short, trying to migrate
|
||||
# will result in more harm than benefit.
|
||||
if [ -f etc/X11/xorg.conf -a ! -f etc/X11/xorg.conf.sle11 ]; then
|
||||
echo "xorg.conf exists and xorg.conf.sle11 does not"
|
||||
if grep -q "SaX generated X11 config file" etc/X11/xorg.conf; then
|
||||
echo "move SaX generated xorg.conf to xorg.conf.sle11"
|
||||
mv etc/X11/xorg.conf{,.sle11}
|
||||
# remove dangling link (bnc#879360, comment#15)
|
||||
rm -f etc/X11/XF86Config
|
||||
# prevent %postun of NVIDIA/fglrx driver packages from restoring xorg.conf
|
||||
# backup or running sax2 as fallback to create a new xorg.conf (bcn#877315)
|
||||
rm -f etc/X11/xorg.conf.nvidia-post \
|
||||
etc/X11/xorg.conf.fglrx-post
|
||||
chmod -x usr/sbin/sax2
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
%endif
|
||||
exit 0
|
||||
|
Loading…
x
Reference in New Issue
Block a user