From fb6c5e2ce0e02c287613c7735855f7a7a1886aa8 Mon Sep 17 00:00:00 2001 From: Wenli Looi Date: Tue, 15 Aug 2023 13:09:59 -0700 Subject: [PATCH] config: Ignore i915 gvt guest udev events to avoid crashing i915 sends drm udev events for gvt guests. X running on the host should ignore these events. Currently, the events are treated as actual device add/remove when no such event occurred which causes a crash. Fixes: https://gitlab.freedesktop.org/xorg/xserver/-/issues/1386 Signed-off-by: Wenli Looi --- config/udev.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/config/udev.c b/config/udev.c index 836fc2afa..59ddee510 100644 --- a/config/udev.c +++ b/config/udev.c @@ -125,7 +125,8 @@ device_added(struct udev_device *udev_device) #ifdef CONFIG_UDEV_KMS subsys = udev_device_get_subsystem(udev_device); - if (subsys && !strcmp(subsys, "drm")) { + if (subsys && !strcmp(subsys, "drm") && + !udev_device_get_property_value(udev_device, "GVT_DISPLAY_READY")) { const char *sysname = udev_device_get_sysname(udev_device); if (strncmp(sysname, "card", 4) != 0) @@ -323,7 +324,8 @@ device_removed(struct udev_device *device) #ifdef CONFIG_UDEV_KMS const char *subsys = udev_device_get_subsystem(device); - if (subsys && !strcmp(subsys, "drm")) { + if (subsys && !strcmp(subsys, "drm") && + !udev_device_get_property_value(device, "GVT_DISPLAY_READY")) { const char *sysname = udev_device_get_sysname(device); const char *path = udev_device_get_devnode(device); dev_t devnum = udev_device_get_devnum(device);