Greg, On 10/03/16 19:43, Laszlo Ersek wrote: > 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 > > Cc: Daniel Vetter <daniel.vetter@xxxxxxxx> > Cc: Daniel Vetter <daniel.vetter@xxxxxxxxx> > Cc: David Airlie <airlied@xxxxxxxxxx> > Cc: Emil Velikov <emil.l.velikov@xxxxxxxxx> > Cc: Gerd Hoffmann <kraxel@xxxxxxxxxx> > Cc: Gustavo Padovan <gustavo.padovan@xxxxxxxxxxxxxxx> > Cc: Hans de Goede <hdegoede@xxxxxxxxxx> > Cc: Joachim Frieben <jfrieben@xxxxxxxxxxx> > Cc: stable@xxxxxxxxxxxxxxx > Reported-by: Joachim Frieben <jfrieben@xxxxxxxxxxx> > Fixes: a325725633c26aa66ab940f762a6b0778edf76c0 > Ref: https://bugzilla.redhat.com/show_bug.cgi?id=1366842 > Signed-off-by: Laszlo Ersek <lersek@xxxxxxxxxx> > Reviewed-by: Emil Velikov <emil.l.velikov@xxxxxxxxx> > --- > 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(+) Is there any particular reason this patch hasn't been cherry-picked to linux-4.8.y? (I checked v4.8.2.) According to "Option 1" in "Documentation/stable_kernel_rules.txt", I think it should have been. Anyway, it is commit c2cbc38b9715bd8318062e600668fc30e5a3fbfa upstream; please consider including it in v4.8.3. (Daniel: my offer to test any further reworkings for this still stands; just please send me patches that I can apply cleanly with git-am.) Thanks! Laszlo > diff --git a/drivers/gpu/drm/virtio/virtgpu_drm_bus.c b/drivers/gpu/drm/virtio/virtgpu_drm_bus.c > index 7f0e93f87a55..88a39165edd5 100644 > --- a/drivers/gpu/drm/virtio/virtgpu_drm_bus.c > +++ b/drivers/gpu/drm/virtio/virtgpu_drm_bus.c > @@ -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; > diff --git a/drivers/gpu/drm/virtio/virtgpu_drv.c b/drivers/gpu/drm/virtio/virtgpu_drv.c > index c13f70cfc461..5820b7020ae5 100644 > --- a/drivers/gpu/drm/virtio/virtgpu_drv.c > +++ b/drivers/gpu/drm/virtio/virtgpu_drv.c > @@ -117,6 +117,7 @@ static const struct file_operations virtio_gpu_driver_fops = { > > static 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, > diff --git a/drivers/gpu/drm/virtio/virtgpu_drv.h b/drivers/gpu/drm/virtio/virtgpu_drv.h > index b18ef3111f0c..acf556a35cb2 100644 > --- a/drivers/gpu/drm/virtio/virtgpu_drv.h > +++ b/drivers/gpu/drm/virtio/virtgpu_drv.h > @@ -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 { > -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html