summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJosh Boyer <jwboyer@fedoraproject.org>2016-10-04 14:22:46 -0400
committerJosh Boyer <jwboyer@fedoraproject.org>2016-10-04 14:22:46 -0400
commit9510c8110910af408da21717eab928bf0d47284f (patch)
treee7b386f2aba3e5f18c6ba8d53ddd753a245f760b
parent48063c7e7b4397079ae6b1b7ed8259235fa65017 (diff)
downloadkernel-9510c8110910af408da21717eab928bf0d47284f.tar.gz
kernel-9510c8110910af408da21717eab928bf0d47284f.tar.xz
kernel-9510c8110910af408da21717eab928bf0d47284f.zip
Add patch to fix Xorg starting with virtio (rhbz 1366842)
-rw-r--r--drm-virtio-reinstate-drm_virtio_set_busid.patch95
-rw-r--r--kernel.spec6
2 files changed, 101 insertions, 0 deletions
diff --git a/drm-virtio-reinstate-drm_virtio_set_busid.patch b/drm-virtio-reinstate-drm_virtio_set_busid.patch
new file mode 100644
index 000000000..52698e235
--- /dev/null
+++ b/drm-virtio-reinstate-drm_virtio_set_busid.patch
@@ -0,0 +1,95 @@
+From 61d19a658598b2d3ea80a5a02a59d9ea0ff08ce6 Mon Sep 17 00:00:00 2001
+From: Laszlo Ersek <lersek@redhat.com>
+Date: Mon, 3 Oct 2016 19:43:03 +0200
+Subject: [PATCH] drm: virtio: reinstate drm_virtio_set_busid()
+
+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@ffwll.ch>
+Cc: Daniel Vetter <daniel.vetter@intel.com>
+Cc: David Airlie <airlied@redhat.com>
+Cc: Emil Velikov <emil.l.velikov@gmail.com>
+Cc: Gerd Hoffmann <kraxel@redhat.com>
+Cc: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
+Cc: Hans de Goede <hdegoede@redhat.com>
+Cc: Joachim Frieben <jfrieben@hotmail.com>
+Cc: stable@vger.kernel.org
+Reported-by: Joachim Frieben <jfrieben@hotmail.com>
+Fixes: a325725633c26aa66ab940f762a6b0778edf76c0
+Ref: https://bugzilla.redhat.com/show_bug.cgi?id=1366842
+Signed-off-by: Laszlo Ersek <lersek@redhat.com>
+Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
+---
+ 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(+)
+
+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 {
+--
+2.7.4
+
diff --git a/kernel.spec b/kernel.spec
index b1b42cc03..c2c168bc8 100644
--- a/kernel.spec
+++ b/kernel.spec
@@ -624,6 +624,9 @@ Patch849: 0001-iio-Use-event-header-from-kernel-tree.patch
#CVE-2016-7425 rhbz 1377330 1377331
Patch850: arcmsr-buffer-overflow-in-archmsr_iop_message_xfer.patch
+#rhbz 1366842
+Patch851: drm-virtio-reinstate-drm_virtio_set_busid.patch
+
# END OF PATCH DEFINITIONS
%endif
@@ -2160,6 +2163,9 @@ fi
#
#
%changelog
+* Tue Oct 04 2016 Josh Boyer <jwboyer@fedoraproject.org>
+- Add patch to fix Xorg starting with virtio (rhbz 1366842)
+
* Mon Oct 03 2016 Justin M. Forbes <jforbes@fedoraproject.org> - 4.8.0-1
- Disable debugging options.
- Linux v4.8