[PATCH] Respect seat assignments when assigning drm devices to server. Currently, drm devices go to whichever server can get them first.

Hans de Goede hdegoede at redhat.com
Thu Jan 22 05:31:52 PST 2015


Hi,

On 21-01-15 18:21, Jonathan Dieter wrote:
> See https://bugzilla.redhat.com/show_bug.cgi?id=1183654
>
> Signed-off-by: Jonathan Dieter <jdieter at lesbg.com>

Thanks looks good now:

Reviewed-by: Hans de Goede <hdegoede at redhat.com>

Keith can you pick this up, or do you want me to prepare a tree and send
a pull-req for this ?

Regards,

Hans

> ---
>   hw/xfree86/os-support/linux/lnx_platform.c | 39 ++++++++++++++++++++++++++++++
>   1 file changed, 39 insertions(+)
>
> diff --git a/hw/xfree86/os-support/linux/lnx_platform.c b/hw/xfree86/os-support/linux/lnx_platform.c
> index 1d145b3..59f1083 100644
> --- a/hw/xfree86/os-support/linux/lnx_platform.c
> +++ b/hw/xfree86/os-support/linux/lnx_platform.c
> @@ -20,6 +20,10 @@
>   #include "hotplug.h"
>   #include "systemd-logind.h"
>
> +#ifdef CONFIG_UDEV_KMS
> +#include <libudev.h>
> +#endif
> +
>   static Bool
>   get_drm_info(struct OdevAttributes *attribs, char *path, int delayed_index)
>   {
> @@ -161,6 +165,41 @@ xf86PlatformDeviceProbe(struct OdevAttributes *attribs)
>       if (i != xf86_num_platform_devices)
>           goto out_free;
>
> +    #ifdef CONFIG_UDEV_KMS
> +    {
> +        struct udev_device *udev_device;
> +        const char *dev_seat;
> +        char *syspath = NULL;
> +        struct udev *udev;
> +
> +        udev = udev_new();
> +        if (!udev)
> +            goto out_free;
> +
> +        syspath = config_odev_get_attribute(attribs, ODEV_ATTRIB_SYSPATH);
> +
> +        udev_device = udev_device_new_from_syspath(udev, syspath);
> +        if (!udev_device) {
> +            udev_unref(udev);
> +            goto out_free;
> +        }
> +
> +        dev_seat = udev_device_get_property_value(udev_device, "ID_SEAT");
> +        if (!dev_seat)
> +            dev_seat = "seat0";
> +
> +        if ((SeatId && strcmp(dev_seat, SeatId)) ||
> +            (!SeatId && strcmp(dev_seat, "seat0"))) {
> +            LogMessage(X_INFO, "xfree86: Not adding drm device (%s) as it's assigned to seat: %s\n", path, dev_seat);
> +            udev_unref(udev);
> +            udev_device_unref(udev_device);
> +            goto out_free;
> +        }
> +
> +        udev_unref(udev);
> +        udev_device_unref(udev_device);
> +    }
> +    #endif
>       LogMessage(X_INFO, "xfree86: Adding drm device (%s)\n", path);
>
>       if (!xf86VTOwner()) {
>


More information about the xorg-devel mailing list