Regression: drm: Lobotomize set_busid nonsense for !pci drivers (a325725633c2)

Gerd Hoffmann kraxel at redhat.com
Wed Oct 5 06:34:57 UTC 2016


On Di, 2016-10-04 at 09:43 +0200, Gerd Hoffmann wrote:
>   Hi,
> 
> > diff --git a/drivers/gpu/drm/virtio/virtgpu_drm_bus.c
> > b/drivers/gpu/drm/virtio/virtgpu_drm_bus.c
> > index a59d0e309bfc..1fcf739bf509 100644
> > --- a/drivers/gpu/drm/virtio/virtgpu_drm_bus.c
> > +++ b/drivers/gpu/drm/virtio/virtgpu_drm_bus.c
> > @@ -68,6 +68,10 @@ int drm_virtio_init(struct drm_driver *driver,
> > struct virtio_device *vdev)
> >                 dev->pdev = pdev;
> >                 if (vga)
> >                         virtio_pci_kick_out_firmware_fb(pdev);
> > +
> > +               ret = drm_dev_set_unique(dev, dev_name(dev->pdev));
> > +               if (ret)
> > +                       goto err_free;
> >         }
> 
> Approach looks sensible to me, I'll give it a try ...

Well, dev_name() returns a string without the "pci:" prefix, we have to
add that to make things actually work, like this:

--- a/drivers/gpu/drm/virtio/virtgpu_drm_bus.c
+++ b/drivers/gpu/drm/virtio/virtgpu_drm_bus.c
@@ -60,13 +60,22 @@ int drm_virtio_init(struct drm_driver *driver,
struct virtio_device *vdev)
 
        if (strcmp(vdev->dev.parent->bus->name, "pci") == 0) {
                struct pci_dev *pdev = to_pci_dev(vdev->dev.parent);
+               const char *pname = dev_name(&pdev->dev);
                bool vga = (pdev->class >> 8) == PCI_CLASS_DISPLAY_VGA;
+               char unique[20];
 
-               DRM_INFO("pci: %s detected\n",
-                        vga ? "virtio-vga" : "virtio-gpu-pci");
+               DRM_INFO("pci: %s detected at %s\n",
+                        vga ? "virtio-vga" : "virtio-gpu-pci",
+                        pname);
                dev->pdev = pdev;
                if (vga)
                        virtio_pci_kick_out_firmware_fb(pdev);
+
+               snprintf(unique, sizeof(unique), "pci:%s", pname);
+               ret = drm_dev_set_unique(dev, unique);
+               if (ret)
+                       goto err_free;
+
        }
 
        ret = drm_dev_register(dev, 0);

And a partial revert of commit a742946a1ba57e24e8be205ea87224c05b38c380
to re-export drm_dev_set_unique().

Pushed to git://git.kraxel.org/linux drm-qemu

cheers,
  Gerd



More information about the dri-devel mailing list