aboutsummaryrefslogtreecommitdiff
path: root/xorg-server
diff options
context:
space:
mode:
Diffstat (limited to 'xorg-server')
-rw-r--r--xorg-server/config/udev.c8
-rw-r--r--xorg-server/hw/xfree86/common/xf86Bus.c4
-rw-r--r--xorg-server/hw/xfree86/common/xf86platformBus.c6
-rw-r--r--xorg-server/hw/xfree86/modes/xf86Crtc.c3
4 files changed, 18 insertions, 3 deletions
diff --git a/xorg-server/config/udev.c b/xorg-server/config/udev.c
index c2d00bbda..454838f4c 100644
--- a/xorg-server/config/udev.c
+++ b/xorg-server/config/udev.c
@@ -300,9 +300,15 @@ wakeup_handler(pointer data, int err, pointer read_mask)
return;
action = udev_device_get_action(udev_device);
if (action) {
- if (!strcmp(action, "add") || !strcmp(action, "change")) {
+ if (!strcmp(action, "add")) {
device_removed(udev_device);
device_added(udev_device);
+ } else if (!strcmp(action, "change")) {
+ /* ignore change for the drm devices */
+ if (strcmp(udev_device_get_subsystem(udev_device), "drm")) {
+ device_removed(udev_device);
+ device_added(udev_device);
+ }
}
else if (!strcmp(action, "remove"))
device_removed(udev_device);
diff --git a/xorg-server/hw/xfree86/common/xf86Bus.c b/xorg-server/hw/xfree86/common/xf86Bus.c
index 6de8409fc..4ffbf7e46 100644
--- a/xorg-server/hw/xfree86/common/xf86Bus.c
+++ b/xorg-server/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/xorg-server/hw/xfree86/common/xf86platformBus.c b/xorg-server/hw/xfree86/common/xf86platformBus.c
index 24b947326..0525e39bc 100644
--- a/xorg-server/hw/xfree86/common/xf86platformBus.c
+++ b/xorg-server/hw/xfree86/common/xf86platformBus.c
@@ -213,11 +213,12 @@ xf86platformProbe(void)
int i;
Bool pci = TRUE;
+ config_odev_probe(xf86PlatformDeviceProbe);
+
if (!xf86scanpci()) {
pci = FALSE;
}
- config_odev_probe(&xf86PlatformDeviceProbe);
for (i = 0; i < xf86_num_platform_devices; i++) {
char *busid = xf86_get_platform_attrib(i, ODEV_ATTRIB_BUSID);
@@ -358,6 +359,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;
diff --git a/xorg-server/hw/xfree86/modes/xf86Crtc.c b/xorg-server/hw/xfree86/modes/xf86Crtc.c
index e3eaf5f4c..177f7ac11 100644
--- a/xorg-server/hw/xfree86/modes/xf86Crtc.c
+++ b/xorg-server/hw/xfree86/modes/xf86Crtc.c
@@ -66,6 +66,7 @@ xf86CrtcConfigInit(ScrnInfoPtr scrn, const xf86CrtcConfigFuncsRec * funcs)
config = xnfcalloc(1, sizeof(xf86CrtcConfigRec));
config->funcs = funcs;
+ config->compat_output = -1;
scrn->privates[xf86CrtcConfigPrivateIndex].ptr = config;
}
@@ -1841,7 +1842,7 @@ SetCompatOutput(xf86CrtcConfigPtr config)
if (compat >= 0) {
config->compat_output = compat;
}
- else {
+ else if (config->compat_output >= 0 && config->compat_output < config->num_output) {
/* Don't change the compat output when no valid outputs found */
output = config->output[config->compat_output];
}