port multi-seat video fixes from upstream
This commit is contained in:
parent
fc485147fb
commit
3d627e5309
@ -0,0 +1,51 @@
|
|||||||
|
From 2103079b3e25f65d9aec7c56519d974e7ee6faca Mon Sep 17 00:00:00 2001
|
||||||
|
From: Dave Airlie <airlied@redhat.com>
|
||||||
|
Date: Mon, 27 Aug 2012 15:15:19 +1000
|
||||||
|
Subject: [PATCH 1/3] config/udev: add wrapper around check if server is not
|
||||||
|
seat 0
|
||||||
|
|
||||||
|
this is a simple clean-up that is useful to stop further propogation
|
||||||
|
of this construct.
|
||||||
|
|
||||||
|
Signed-off-by: Dave Airlie <airlied@redhat.com>
|
||||||
|
---
|
||||||
|
config/udev.c | 4 ++--
|
||||||
|
include/hotplug.h | 2 ++
|
||||||
|
2 files changed, 4 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/config/udev.c b/config/udev.c
|
||||||
|
index 03aca28..adac273 100644
|
||||||
|
--- a/config/udev.c
|
||||||
|
+++ b/config/udev.c
|
||||||
|
@@ -339,7 +339,7 @@ config_udev_pre_init(void)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAVE_UDEV_MONITOR_FILTER_ADD_MATCH_TAG
|
||||||
|
- if (SeatId && strcmp(SeatId, "seat0"))
|
||||||
|
+ if (ServerIsNotSeat0)
|
||||||
|
udev_monitor_filter_add_match_tag(udev_monitor, SeatId);
|
||||||
|
#endif
|
||||||
|
if (udev_monitor_enable_receiving(udev_monitor)) {
|
||||||
|
@@ -368,7 +368,7 @@ config_udev_init(void)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAVE_UDEV_ENUMERATE_ADD_MATCH_TAG
|
||||||
|
- if (SeatId && strcmp(SeatId, "seat0"))
|
||||||
|
+ if (ServerIsNotSeat0)
|
||||||
|
udev_enumerate_add_match_tag(enumerate, SeatId);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
diff --git a/include/hotplug.h b/include/hotplug.h
|
||||||
|
index 96b078d..ceec49c 100644
|
||||||
|
--- a/include/hotplug.h
|
||||||
|
+++ b/include/hotplug.h
|
||||||
|
@@ -69,4 +69,6 @@ void config_odev_probe(config_odev_probe_proc_ptr probe_callback);
|
||||||
|
void NewGPUDeviceRequest(struct OdevAttributes *attribs);
|
||||||
|
void DeleteGPUDeviceRequest(struct OdevAttributes *attribs);
|
||||||
|
#endif
|
||||||
|
+
|
||||||
|
+#define ServerIsNotSeat0 (SeatId && strcmp(SeatId, "seat0"))
|
||||||
|
#endif /* HOTPLUG_H */
|
||||||
|
--
|
||||||
|
1.7.10.2
|
||||||
|
|
@ -0,0 +1,30 @@
|
|||||||
|
From 32c9d01fe0168366b7c475ff3c9a574692917856 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Dave Airlie <airlied@redhat.com>
|
||||||
|
Date: Mon, 27 Aug 2012 15:17:21 +1000
|
||||||
|
Subject: [PATCH 2/3] config/udev: respect seat for hotplugged video devices.
|
||||||
|
|
||||||
|
This respects the seat tag for hotplugged video devices at X start.
|
||||||
|
|
||||||
|
Signed-off-by: Dave Airlie <airlied@redhat.com>
|
||||||
|
---
|
||||||
|
config/udev.c | 4 ++++
|
||||||
|
1 file changed, 4 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/config/udev.c b/config/udev.c
|
||||||
|
index adac273..89b6e57 100644
|
||||||
|
--- a/config/udev.c
|
||||||
|
+++ b/config/udev.c
|
||||||
|
@@ -454,6 +454,10 @@ config_udev_odev_probe(config_odev_probe_proc_ptr probe_callback)
|
||||||
|
|
||||||
|
udev_enumerate_add_match_subsystem(enumerate, "drm");
|
||||||
|
udev_enumerate_add_match_sysname(enumerate, "card[0-9]*");
|
||||||
|
+#ifdef HAVE_UDEV_ENUMERATE_ADD_MATCH_TAG
|
||||||
|
+ if (ServerIsNotSeat0)
|
||||||
|
+ udev_enumerate_add_match_tag(enumerate, SeatId);
|
||||||
|
+#endif
|
||||||
|
udev_enumerate_scan_devices(enumerate);
|
||||||
|
devices = udev_enumerate_get_list_entry(enumerate);
|
||||||
|
udev_list_entry_foreach(device, devices) {
|
||||||
|
--
|
||||||
|
1.7.10.2
|
||||||
|
|
59
0003-xf86-fix-multi-seat-video-device-support.patch
Normal file
59
0003-xf86-fix-multi-seat-video-device-support.patch
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
From 41b5b320ed1509be1e885992fc804322161d1533 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Dave Airlie <airlied@redhat.com>
|
||||||
|
Date: Mon, 27 Aug 2012 15:20:11 +1000
|
||||||
|
Subject: [PATCH 3/3] xf86: fix multi-seat video device support.
|
||||||
|
|
||||||
|
If we are not seat 0 the following apply:
|
||||||
|
|
||||||
|
don't probe any bus other than platform
|
||||||
|
don't probe any drivers other than platform
|
||||||
|
assume the first platform device we match on the bus is the primary GPU.
|
||||||
|
|
||||||
|
This just adds checks in the correct places to ensure this, and
|
||||||
|
with this X can now start on a secondary seat for an output device.
|
||||||
|
|
||||||
|
Signed-off-by: Dave Airlie <airlied@redhat.com>
|
||||||
|
---
|
||||||
|
hw/xfree86/common/xf86Bus.c | 4 ++++
|
||||||
|
hw/xfree86/common/xf86platformBus.c | 3 +++
|
||||||
|
2 files changed, 7 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/hw/xfree86/common/xf86Bus.c b/hw/xfree86/common/xf86Bus.c
|
||||||
|
index 6de8409..40f4921 100644
|
||||||
|
--- a/hw/xfree86/common/xf86Bus.c
|
||||||
|
+++ b/hw/xfree86/common/xf86Bus.c
|
||||||
|
@@ -81,6 +81,8 @@ xf86CallDriverProbe(DriverPtr drv, Bool detect_only)
|
||||||
|
if (drv->platformProbe != NULL) {
|
||||||
|
foundScreen = xf86platformProbeDev(drv);
|
||||||
|
}
|
||||||
|
+ if (ServerIsNotSeat0)
|
||||||
|
+ return foundScreen;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef XSERVER_LIBPCIACCESS
|
||||||
|
@@ -214,6 +216,8 @@ xf86BusProbe(void)
|
||||||
|
{
|
||||||
|
#ifdef XSERVER_PLATFORM_BUS
|
||||||
|
xf86platformProbe();
|
||||||
|
+ if (ServerIsNotSeat0)
|
||||||
|
+ return;
|
||||||
|
#endif
|
||||||
|
#ifdef XSERVER_LIBPCIACCESS
|
||||||
|
xf86PciProbe();
|
||||||
|
diff --git a/hw/xfree86/common/xf86platformBus.c b/hw/xfree86/common/xf86platformBus.c
|
||||||
|
index 502d3c4..0b06e16 100644
|
||||||
|
--- a/hw/xfree86/common/xf86platformBus.c
|
||||||
|
+++ b/hw/xfree86/common/xf86platformBus.c
|
||||||
|
@@ -358,6 +358,9 @@ xf86platformProbeDev(DriverPtr drvp)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
+ /* for non-seat0 servers assume first device is the master */
|
||||||
|
+ if (ServerIsNotSeat0)
|
||||||
|
+ break;
|
||||||
|
if (xf86_platform_devices[j].pdev) {
|
||||||
|
if (xf86IsPrimaryPlatform(&xf86_platform_devices[j]))
|
||||||
|
break;
|
||||||
|
--
|
||||||
|
1.7.10.2
|
||||||
|
|
@ -43,7 +43,7 @@
|
|||||||
Summary: X.Org X11 X server
|
Summary: X.Org X11 X server
|
||||||
Name: xorg-x11-server
|
Name: xorg-x11-server
|
||||||
Version: 1.12.99.905
|
Version: 1.12.99.905
|
||||||
Release: 2%{?gitdate:.%{gitdate}}%{dist}
|
Release: 3%{?gitdate:.%{gitdate}}%{dist}
|
||||||
URL: http://www.x.org
|
URL: http://www.x.org
|
||||||
License: MIT
|
License: MIT
|
||||||
Group: User Interface/X
|
Group: User Interface/X
|
||||||
@ -107,6 +107,11 @@ Patch7027: xserver-autobind-hotplug.patch
|
|||||||
Patch7030: 0001-xf86-crtc-don-t-free-config-name.patch
|
Patch7030: 0001-xf86-crtc-don-t-free-config-name.patch
|
||||||
Patch7031: 0002-dix-free-default-colormap-before-screen-deletion.patch
|
Patch7031: 0002-dix-free-default-colormap-before-screen-deletion.patch
|
||||||
|
|
||||||
|
# backport multi-seat fixes from list
|
||||||
|
Patch7040: 0001-config-udev-add-wrapper-around-check-if-server-is-no.patch
|
||||||
|
Patch7041: 0002-config-udev-respect-seat-for-hotplugged-video-device.patch
|
||||||
|
Patch7042: 0003-xf86-fix-multi-seat-video-device-support.patch
|
||||||
|
|
||||||
%global moduledir %{_libdir}/xorg/modules
|
%global moduledir %{_libdir}/xorg/modules
|
||||||
%global drimoduledir %{_libdir}/dri
|
%global drimoduledir %{_libdir}/dri
|
||||||
%global sdkdir %{_includedir}/xorg
|
%global sdkdir %{_includedir}/xorg
|
||||||
@ -579,6 +584,9 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
%{xserver_source_dir}
|
%{xserver_source_dir}
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Mon Aug 27 2012 Dave Airlie <airlied@redhat.com> 1.12.99.905-3
|
||||||
|
- port multi-seat video fixes from upstream
|
||||||
|
|
||||||
* Fri Aug 24 2012 Dave Airlie <airlied@redhat.com> 1.12.99.905-2
|
* Fri Aug 24 2012 Dave Airlie <airlied@redhat.com> 1.12.99.905-2
|
||||||
- reintroduce auto config but working this time
|
- reintroduce auto config but working this time
|
||||||
- fix two recycle/exit crashes
|
- fix two recycle/exit crashes
|
||||||
|
Loading…
Reference in New Issue
Block a user