hc
2024-05-10 9999e48639b3cecb08ffb37358bcba3b48161b29
kernel/drivers/gpu/drm/virtio/virtgpu_drv.c
....@@ -29,36 +29,20 @@
2929 #include <linux/module.h>
3030 #include <linux/console.h>
3131 #include <linux/pci.h>
32
-#include <drm/drmP.h>
32
+
3333 #include <drm/drm.h>
34
+#include <drm/drm_atomic_helper.h>
35
+#include <drm/drm_drv.h>
36
+#include <drm/drm_file.h>
3437
3538 #include "virtgpu_drv.h"
39
+
3640 static struct drm_driver driver;
3741
3842 static int virtio_gpu_modeset = -1;
3943
4044 MODULE_PARM_DESC(modeset, "Disable/Enable modesetting");
4145 module_param_named(modeset, virtio_gpu_modeset, int, 0400);
42
-
43
-static void virtio_pci_kick_out_firmware_fb(struct pci_dev *pci_dev)
44
-{
45
- struct apertures_struct *ap;
46
- bool primary;
47
-
48
- ap = alloc_apertures(1);
49
- if (!ap)
50
- return;
51
-
52
- ap->ranges[0].base = pci_resource_start(pci_dev, 0);
53
- ap->ranges[0].size = pci_resource_len(pci_dev, 0);
54
-
55
- primary = pci_dev->resource[PCI_ROM_RESOURCE].flags
56
- & IORESOURCE_ROM_SHADOW;
57
-
58
- drm_fb_helper_remove_conflicting_framebuffers(ap, "virtiodrmfb", primary);
59
-
60
- kfree(ap);
61
-}
6246
6347 static int virtio_gpu_pci_quirk(struct drm_device *dev, struct virtio_device *vdev)
6448 {
....@@ -72,7 +56,8 @@
7256 pname);
7357 dev->pdev = pdev;
7458 if (vga)
75
- virtio_pci_kick_out_firmware_fb(pdev);
59
+ drm_fb_helper_remove_conflicting_pci_framebuffers(pdev,
60
+ "virtiodrmfb");
7661
7762 /*
7863 * Normally the drm_dev_set_unique() call is done by core DRM.
....@@ -151,9 +136,10 @@
151136 {
152137 struct drm_device *dev = vdev->priv;
153138
154
- drm_dev_unregister(dev);
139
+ drm_dev_unplug(dev);
140
+ drm_atomic_helper_shutdown(dev);
155141 virtio_gpu_deinit(dev);
156
- drm_put_dev(dev);
142
+ drm_dev_put(dev);
157143 }
158144
159145 static void virtio_gpu_config_changed(struct virtio_device *vdev)
....@@ -179,6 +165,7 @@
179165 VIRTIO_GPU_F_VIRGL,
180166 #endif
181167 VIRTIO_GPU_F_EDID,
168
+ VIRTIO_GPU_F_RESOURCE_UUID,
182169 };
183170 static struct virtio_driver virtio_gpu_driver = {
184171 .feature_table = features,
....@@ -200,20 +187,10 @@
200187 MODULE_AUTHOR("Gerd Hoffmann <kraxel@redhat.com>");
201188 MODULE_AUTHOR("Alon Levy");
202189
203
-static const struct file_operations virtio_gpu_driver_fops = {
204
- .owner = THIS_MODULE,
205
- .open = drm_open,
206
- .mmap = virtio_gpu_mmap,
207
- .poll = drm_poll,
208
- .read = drm_read,
209
- .unlocked_ioctl = drm_ioctl,
210
- .release = drm_release,
211
- .compat_ioctl = drm_compat_ioctl,
212
- .llseek = noop_llseek,
213
-};
190
+DEFINE_DRM_GEM_FOPS(virtio_gpu_driver_fops);
214191
215192 static struct drm_driver driver = {
216
- .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_PRIME | DRIVER_RENDER | DRIVER_ATOMIC,
193
+ .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_RENDER | DRIVER_ATOMIC,
217194 .open = virtio_gpu_driver_open,
218195 .postclose = virtio_gpu_driver_postclose,
219196
....@@ -225,17 +202,12 @@
225202 #endif
226203 .prime_handle_to_fd = drm_gem_prime_handle_to_fd,
227204 .prime_fd_to_handle = drm_gem_prime_fd_to_handle,
228
- .gem_prime_export = drm_gem_prime_export,
229
- .gem_prime_import = drm_gem_prime_import,
230
- .gem_prime_get_sg_table = virtgpu_gem_prime_get_sg_table,
205
+ .gem_prime_mmap = drm_gem_prime_mmap,
206
+ .gem_prime_export = virtgpu_gem_prime_export,
207
+ .gem_prime_import = virtgpu_gem_prime_import,
231208 .gem_prime_import_sg_table = virtgpu_gem_prime_import_sg_table,
232
- .gem_prime_vmap = virtgpu_gem_prime_vmap,
233
- .gem_prime_vunmap = virtgpu_gem_prime_vunmap,
234
- .gem_prime_mmap = virtgpu_gem_prime_mmap,
235209
236
- .gem_free_object_unlocked = virtio_gpu_gem_free_object,
237
- .gem_open_object = virtio_gpu_gem_object_open,
238
- .gem_close_object = virtio_gpu_gem_object_close,
210
+ .gem_create_object = virtio_gpu_create_object,
239211 .fops = &virtio_gpu_driver_fops,
240212
241213 .ioctls = virtio_gpu_ioctls,
....@@ -247,4 +219,6 @@
247219 .major = DRIVER_MAJOR,
248220 .minor = DRIVER_MINOR,
249221 .patchlevel = DRIVER_PATCHLEVEL,
222
+
223
+ .release = virtio_gpu_release,
250224 };