From be4655a040b452f74c4aadc9756f39de77e996a8 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Sep 14 2012 03:38:07 +0000 Subject: fix bug when hotplugging a monitor causes oops --- diff --git a/0001-config-udev-ignore-change-on-drm-devices.patch b/0001-config-udev-ignore-change-on-drm-devices.patch new file mode 100644 index 0000000..5e6a2a0 --- /dev/null +++ b/0001-config-udev-ignore-change-on-drm-devices.patch @@ -0,0 +1,41 @@ +From 6d9beff6ce231527dfd59e896c6cf3730555121a Mon Sep 17 00:00:00 2001 +From: Dave Airlie +Date: Thu, 13 Sep 2012 18:44:06 +1000 +Subject: [PATCH] config/udev: ignore change on drm devices + +for input devices we handle change like remove/add, but for +drm devices we get change events when we hotplug outputs, +so lets just ignore change at this level, and let the drivers +handle it. We may in the future want to route driver udev +from here instead. + +Reported-by: Timo Aaltonen +Signed-off-by: Dave Airlie +--- + config/udev.c | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +diff --git a/config/udev.c b/config/udev.c +index c2d00bb..454838f 100644 +--- a/config/udev.c ++++ b/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); +-- +1.7.10.2 +