Patch "drm: virtio: reinstate drm_virtio_set_busid()" has been added to the 4.8-stable tree
Subsystems (4)
This is a note to let you know that I've just added the patch titled
drm: virtio: reinstate drm_virtio_set_busid()
to the 4.8-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
drm-virtio-reinstate-drm_virtio_set_busid.patch
and it can be found in the queue-4.8 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
c2cbc38b9715bd8318062e600668fc30e5a3fbfaMon Sep 17 00:00:00 2001
From: Laszlo Ersek <[email protected]>
Date: Mon, 3 Oct 2016 19:43:03 +0200
Subject: drm: virtio: reinstate drm_virtio_set_busid()
From: Laszlo Ersek <[email protected]>
commit c2cbc38b9715bd8318062e600668fc30e5a3fbfa upstream.
Before commit a325725633c2 ("drm: Lobotomize set_busid nonsense for !pci drivers"), several DRM drivers for platform devices used to expose an explicit "drm_driver.set_busid" callback, invariably backed by drm_platform_set_busid().
Commit a325725633c2 removed drm_platform_set_busid(), along with the referring .set_busid field initializations. This was justified because interchangeable functionality had been implemented in drm_dev_alloc() / drm_dev_init(), which DRM_IOCTL_SET_VERSION would rely on going forward.
However, commit a325725633c2 also removed drm_virtio_set_busid(), for which the same consolidation was not appropriate: this .set_busid callback had been implemented with drm_pci_set_busid(), and not drm_platform_set_busid(). The error regressed Xorg/xserver on QEMU's "virtio-vga" card; the drmGetBusid() function from libdrm would no longer return stable PCI identifiers like "pci:0000:00:02.0", but rather unstable platform ones like "virtio0".
Reinstate drm_virtio_set_busid() with judicious use of
git checkout -p a325725633c2^ -- drivers/gpu/drm/virtio
Ref: https://bugzilla.redhat.com/show_bug.cgi?id=1366842
--- drivers/gpu/drm/virtio/virtgpu_drm_bus.c | 10 ++++++++++ drivers/gpu/drm/virtio/virtgpu_drv.c | 1 + drivers/gpu/drm/virtio/virtgpu_drv.h | 1 + 3 files changed, 12 insertions(+)
drivers/gpu/drm/virtio/virtgpu_drm_bus.c +10 -0
@@ -27,6 +27,16 @@#include "virtgpu_drv.h" +int drm_virtio_set_busid (struct drm_device *dev,struct drm_master *master) +{ +struct pci_dev *pdev = dev->pdev; + +if (pdev) { +return drm_pci_set_busid (dev, master); + } +return 0 ; +} +static void virtio_pci_kick_out_firmware_fb (struct pci_dev *pci_dev) {struct apertures_struct *ap;
drivers/gpu/drm/virtio/virtgpu_drv.c +1 -0
@@ -117,6 +117,7 @@ static const struct file_operations virtstatic struct drm_driver driver = { .driver_features =DRIVER_MODESET |DRIVER_GEM |DRIVER_PRIME |DRIVER_RENDER |DRIVER_ATOMIC , + .set_busid = drm_virtio_set_busid, .load = virtio_gpu_driver_load, .unload = virtio_gpu_driver_unload, .open = virtio_gpu_driver_open,
drivers/gpu/drm/virtio/virtgpu_drv.h +1 -0
@@ -49,6 +49,7 @@#define DRIVER_PATCHLEVEL 1/* virtgpu_drm_bus.c */ +int drm_virtio_set_busid (struct drm_device *dev,struct drm_master *master);int drm_virtio_init (struct drm_driver *driver,struct virtio_device *vdev);struct virtio_gpu_object {
Patches currently in stable-queue which might be from [email protected] are
queue-4.8/drm-virtio-reinstate-drm_virtio_set_busid.patch