Andrew Geissler | 5199d83 | 2021-09-24 16:47:35 -0500 | [diff] [blame^] | 1 | Subject: Fix build errors with linux 5.14 |
| 2 | |
| 3 | Upstream-Status: backport |
| 4 | |
| 5 | svn-id: r89690 |
| 6 | |
| 7 | Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com> |
| 8 | |
| 9 | Index: a/src/VBox/Additions/linux/drm/vbox_drv.h |
| 10 | =================================================================== |
| 11 | --- a/src/VBox/Additions/linux/drm/vbox_drv.h (revision 89690) |
| 12 | +++ a/src/VBox/Additions/linux/drm/vbox_drv.h (revision 90498) |
| 13 | @@ -227,6 +227,15 @@ |
| 14 | sizeof(HGSMIHOSTFLAGS)) |
| 15 | #define HOST_FLAGS_OFFSET GUEST_HEAP_USABLE_SIZE |
| 16 | |
| 17 | +/** Field @pdev of struct drm_device was removed in 5.14. This macro |
| 18 | + * transparently handles this change. Input argument is a pointer |
| 19 | + * to struct drm_device. */ |
| 20 | +#if RTLNX_VER_MIN(5,14,0) |
| 21 | +# define VBOX_DRM_TO_PCI_DEV(_dev) to_pci_dev(_dev->dev) |
| 22 | +#else |
| 23 | +# define VBOX_DRM_TO_PCI_DEV(_dev) _dev->pdev |
| 24 | +#endif |
| 25 | + |
| 26 | /** How frequently we refresh if the guest is not providing dirty rectangles. */ |
| 27 | #define VBOX_REFRESH_PERIOD (HZ / 2) |
| 28 | |
| 29 | Index: a/src/VBox/Additions/linux/drm/vbox_main.c |
| 30 | =================================================================== |
| 31 | --- a/src/VBox/Additions/linux/drm/vbox_main.c (revision 89690) |
| 32 | +++ a/src/VBox/Additions/linux/drm/vbox_main.c (revision 90498) |
| 33 | @@ -290,7 +290,7 @@ |
| 34 | /* Take a command buffer for each screen from the end of usable VRAM. */ |
| 35 | vbox->available_vram_size -= vbox->num_crtcs * VBVA_MIN_BUFFER_SIZE; |
| 36 | |
| 37 | - vbox->vbva_buffers = pci_iomap_range(vbox->dev->pdev, 0, |
| 38 | + vbox->vbva_buffers = pci_iomap_range(VBOX_DRM_TO_PCI_DEV(vbox->dev), 0, |
| 39 | vbox->available_vram_size, |
| 40 | vbox->num_crtcs * |
| 41 | VBVA_MIN_BUFFER_SIZE); |
| 42 | @@ -311,7 +311,7 @@ |
| 43 | return 0; |
| 44 | |
| 45 | err_pci_iounmap: |
| 46 | - pci_iounmap(vbox->dev->pdev, vbox->vbva_buffers); |
| 47 | + pci_iounmap(VBOX_DRM_TO_PCI_DEV(vbox->dev), vbox->vbva_buffers); |
| 48 | return ret; |
| 49 | } |
| 50 | |
| 51 | @@ -318,7 +318,7 @@ |
| 52 | static void vbox_accel_fini(struct vbox_private *vbox) |
| 53 | { |
| 54 | vbox_disable_accel(vbox); |
| 55 | - pci_iounmap(vbox->dev->pdev, vbox->vbva_buffers); |
| 56 | + pci_iounmap(VBOX_DRM_TO_PCI_DEV(vbox->dev), vbox->vbva_buffers); |
| 57 | } |
| 58 | |
| 59 | /** Do we support the 4.3 plus mode hint reporting interface? */ |
| 60 | @@ -393,7 +393,7 @@ |
| 61 | |
| 62 | /* Map guest-heap at end of vram */ |
| 63 | vbox->guest_heap = |
| 64 | - pci_iomap_range(vbox->dev->pdev, 0, GUEST_HEAP_OFFSET(vbox), |
| 65 | + pci_iomap_range(VBOX_DRM_TO_PCI_DEV(vbox->dev), 0, GUEST_HEAP_OFFSET(vbox), |
| 66 | GUEST_HEAP_SIZE); |
| 67 | if (!vbox->guest_heap) |
| 68 | return -ENOMEM; |
| 69 | @@ -442,7 +442,7 @@ |
| 70 | err_destroy_guest_pool: |
| 71 | gen_pool_destroy(vbox->guest_pool); |
| 72 | err_unmap_guest_heap: |
| 73 | - pci_iounmap(vbox->dev->pdev, vbox->guest_heap); |
| 74 | + pci_iounmap(VBOX_DRM_TO_PCI_DEV(vbox->dev), vbox->guest_heap); |
| 75 | return ret; |
| 76 | } |
| 77 | |
| 78 | @@ -452,7 +452,7 @@ |
| 79 | cancel_delayed_work(&vbox->refresh_work); |
| 80 | vbox_accel_fini(vbox); |
| 81 | gen_pool_destroy(vbox->guest_pool); |
| 82 | - pci_iounmap(vbox->dev->pdev, vbox->guest_heap); |
| 83 | + pci_iounmap(VBOX_DRM_TO_PCI_DEV(vbox->dev), vbox->guest_heap); |
| 84 | } |
| 85 | |
| 86 | #if RTLNX_VER_MIN(4,19,0) || RTLNX_RHEL_MIN(8,3) |
| 87 | @@ -567,12 +567,16 @@ |
| 88 | |
| 89 | size = roundup(size, PAGE_SIZE); |
| 90 | if (size == 0) |
| 91 | + { |
| 92 | + DRM_ERROR("bad size\n"); |
| 93 | return -EINVAL; |
| 94 | + } |
| 95 | |
| 96 | ret = vbox_bo_create(dev, size, 0, 0, &vboxbo); |
| 97 | if (ret) { |
| 98 | if (ret != -ERESTARTSYS) |
| 99 | DRM_ERROR("failed to allocate GEM object\n"); |
| 100 | + DRM_ERROR("failed to allocate GEM (%d)\n", ret); |
| 101 | return ret; |
| 102 | } |
| 103 | |
| 104 | @@ -628,6 +632,21 @@ |
| 105 | { |
| 106 | struct vbox_bo *vbox_bo = gem_to_vbox_bo(obj); |
| 107 | |
| 108 | +#if RTLNX_VER_MIN(5,14,0) |
| 109 | + /* Starting from kernel 5.14, there is a warning appears in dmesg |
| 110 | + * on attempt to desroy pinned buffer object. Make sure it is unpinned. */ |
| 111 | + while (vbox_bo->bo.pin_count) |
| 112 | + { |
| 113 | + int ret; |
| 114 | + ret = vbox_bo_unpin(vbox_bo); |
| 115 | + if (ret) |
| 116 | + { |
| 117 | + DRM_ERROR("unable to unpin buffer object\n"); |
| 118 | + break; |
| 119 | + } |
| 120 | + } |
| 121 | +#endif |
| 122 | + |
| 123 | ttm_bo_put(&vbox_bo->bo); |
| 124 | } |
| 125 | |
| 126 | @@ -648,7 +667,7 @@ |
| 127 | u32 handle, u64 *offset) |
| 128 | { |
| 129 | struct drm_gem_object *obj; |
| 130 | - int ret; |
| 131 | + int ret = 0; |
| 132 | struct vbox_bo *bo; |
| 133 | |
| 134 | mutex_lock(&dev->struct_mutex); |
| 135 | @@ -665,8 +684,15 @@ |
| 136 | bo = gem_to_vbox_bo(obj); |
| 137 | *offset = vbox_bo_mmap_offset(bo); |
| 138 | |
| 139 | +#if RTLNX_VER_MIN(5,14,0) |
| 140 | + ret = drm_vma_node_allow(&bo->bo.base.vma_node, file); |
| 141 | + if (ret) |
| 142 | + { |
| 143 | + DRM_ERROR("unable to grant previladges to user"); |
| 144 | + } |
| 145 | +#endif |
| 146 | + |
| 147 | drm_gem_object_put(obj); |
| 148 | - ret = 0; |
| 149 | |
| 150 | out_unlock: |
| 151 | mutex_unlock(&dev->struct_mutex); |
| 152 | Index: a/src/VBox/Additions/linux/drm/vbox_mode.c |
| 153 | =================================================================== |
| 154 | --- a/src/VBox/Additions/linux/drm/vbox_mode.c (revision 89690) |
| 155 | +++ a/src/VBox/Additions/linux/drm/vbox_mode.c (revision 90498) |
| 156 | @@ -245,6 +245,10 @@ |
| 157 | vbox_bo_unpin(bo); |
| 158 | vbox_bo_unreserve(bo); |
| 159 | } |
| 160 | + else |
| 161 | + { |
| 162 | + DRM_ERROR("unable to lock buffer object: error %d\n", ret); |
| 163 | + } |
| 164 | } |
| 165 | |
| 166 | if (&vbox->fbdev->afb == vbox_fb) |
| 167 | @@ -856,7 +860,9 @@ |
| 168 | vbox->cursor_data_size = data_size; |
| 169 | dst = vbox->cursor_data; |
| 170 | |
| 171 | -#if RTLNX_VER_MIN(5,12,0) |
| 172 | +#if RTLNX_VER_MIN(5,14,0) |
| 173 | + ret = ttm_bo_kmap(&bo->bo, 0, bo->bo.resource->num_pages, &uobj_map); |
| 174 | +#elif RTLNX_VER_MIN(5,12,0) |
| 175 | ret = ttm_bo_kmap(&bo->bo, 0, bo->bo.mem.num_pages, &uobj_map); |
| 176 | #else |
| 177 | ret = ttm_bo_kmap(&bo->bo, 0, bo->bo.num_pages, &uobj_map); |
| 178 | Index: a/src/VBox/Additions/linux/drm/vbox_ttm.c |
| 179 | =================================================================== |
| 180 | --- a/src/VBox/Additions/linux/drm/vbox_ttm.c (revision 89690) |
| 181 | +++ a/src/VBox/Additions/linux/drm/vbox_ttm.c (revision 90498) |
| 182 | @@ -41,6 +41,10 @@ |
| 183 | # include <drm/ttm/ttm_page_alloc.h> |
| 184 | #endif |
| 185 | |
| 186 | +#if RTLNX_VER_MIN(5,14,0) |
| 187 | +# include <drm/ttm/ttm_range_manager.h> |
| 188 | +#endif |
| 189 | + |
| 190 | #if RTLNX_VER_MAX(3,18,0) && !RTLNX_RHEL_MAJ_PREREQ(7,2) |
| 191 | #define PLACEMENT_FLAGS(placement) (placement) |
| 192 | #else |
| 193 | @@ -174,11 +178,13 @@ |
| 194 | *pl = vboxbo->placement; |
| 195 | } |
| 196 | |
| 197 | +#if RTLNX_VER_MAX(5,14,0) |
| 198 | static int vbox_bo_verify_access(struct ttm_buffer_object *bo, |
| 199 | struct file *filp) |
| 200 | { |
| 201 | return 0; |
| 202 | } |
| 203 | +#endif |
| 204 | |
| 205 | #if RTLNX_VER_MAX(5,10,0) |
| 206 | static int vbox_ttm_io_mem_reserve(struct ttm_bo_device *bdev, |
| 207 | @@ -234,10 +240,10 @@ |
| 208 | mem->bus.caching = ttm_write_combined; |
| 209 | # endif |
| 210 | # if RTLNX_VER_MIN(5,10,0) |
| 211 | - mem->bus.offset = (mem->start << PAGE_SHIFT) + pci_resource_start(vbox->dev->pdev, 0); |
| 212 | + mem->bus.offset = (mem->start << PAGE_SHIFT) + pci_resource_start(VBOX_DRM_TO_PCI_DEV(vbox->dev), 0); |
| 213 | # else |
| 214 | mem->bus.offset = mem->start << PAGE_SHIFT; |
| 215 | - mem->start = pci_resource_start(vbox->dev->pdev, 0); |
| 216 | + mem->start = pci_resource_start(VBOX_DRM_TO_PCI_DEV(vbox->dev), 0); |
| 217 | # endif |
| 218 | mem->bus.is_iomem = true; |
| 219 | break; |
| 220 | @@ -373,7 +379,9 @@ |
| 221 | .eviction_valuable = ttm_bo_eviction_valuable, |
| 222 | #endif |
| 223 | .evict_flags = vbox_bo_evict_flags, |
| 224 | +#if RTLNX_VER_MAX(5,14,0) |
| 225 | .verify_access = vbox_bo_verify_access, |
| 226 | +#endif |
| 227 | .io_mem_reserve = &vbox_ttm_io_mem_reserve, |
| 228 | .io_mem_free = &vbox_ttm_io_mem_free, |
| 229 | #if RTLNX_VER_MIN(4,12,0) || RTLNX_RHEL_MAJ_PREREQ(7,5) |
| 230 | @@ -451,12 +459,12 @@ |
| 231 | } |
| 232 | |
| 233 | #ifdef DRM_MTRR_WC |
| 234 | - vbox->fb_mtrr = drm_mtrr_add(pci_resource_start(dev->pdev, 0), |
| 235 | - pci_resource_len(dev->pdev, 0), |
| 236 | + vbox->fb_mtrr = drm_mtrr_add(pci_resource_start(VBOX_DRM_TO_PCI_DEV(dev), 0), |
| 237 | + pci_resource_len(VBOX_DRM_TO_PCI_DEV(dev), 0), |
| 238 | DRM_MTRR_WC); |
| 239 | #else |
| 240 | - vbox->fb_mtrr = arch_phys_wc_add(pci_resource_start(dev->pdev, 0), |
| 241 | - pci_resource_len(dev->pdev, 0)); |
| 242 | + vbox->fb_mtrr = arch_phys_wc_add(pci_resource_start(VBOX_DRM_TO_PCI_DEV(dev), 0), |
| 243 | + pci_resource_len(VBOX_DRM_TO_PCI_DEV(dev), 0)); |
| 244 | #endif |
| 245 | return 0; |
| 246 | |
| 247 | @@ -477,8 +485,8 @@ |
| 248 | { |
| 249 | #ifdef DRM_MTRR_WC |
| 250 | drm_mtrr_del(vbox->fb_mtrr, |
| 251 | - pci_resource_start(vbox->dev->pdev, 0), |
| 252 | - pci_resource_len(vbox->dev->pdev, 0), DRM_MTRR_WC); |
| 253 | + pci_resource_start(VBOX_DRM_TO_PCI_DEV(vbox->dev), 0), |
| 254 | + pci_resource_len(VBOX_DRM_TO_PCI_DEV(vbox->dev), 0), DRM_MTRR_WC); |
| 255 | #else |
| 256 | arch_phys_wc_del(vbox->fb_mtrr); |
| 257 | #endif |
| 258 | @@ -560,6 +568,9 @@ |
| 259 | static const struct drm_gem_object_funcs vbox_drm_gem_object_funcs = { |
| 260 | .free = vbox_gem_free_object, |
| 261 | .print_info = drm_gem_ttm_print_info, |
| 262 | +# if RTLNX_VER_MIN(5,14,0) |
| 263 | + .mmap = drm_gem_ttm_mmap, |
| 264 | +# endif |
| 265 | }; |
| 266 | #endif |
| 267 | |
| 268 | @@ -598,6 +609,17 @@ |
| 269 | sizeof(struct vbox_bo)); |
| 270 | #endif |
| 271 | |
| 272 | +#if RTLNX_VER_MIN(5,14,0) |
| 273 | + /* Initialization of the following was removed from DRM stack |
| 274 | + * in 5.14, so we need to do it manually. */ |
| 275 | + vboxbo->bo.base.funcs = &vbox_drm_gem_object_funcs; |
| 276 | + kref_init(&vboxbo->bo.base.refcount); |
| 277 | + vboxbo->bo.base.size = size; |
| 278 | + vboxbo->bo.base.dev = dev; |
| 279 | + dma_resv_init(&vboxbo->bo.base._resv); |
| 280 | + drm_vma_node_reset(&vboxbo->bo.base.vma_node); |
| 281 | +#endif |
| 282 | + |
| 283 | ret = ttm_bo_init(&vbox->ttm.bdev, &vboxbo->bo, size, |
| 284 | ttm_bo_type_device, &vboxbo->placement, |
| 285 | #if RTLNX_VER_MAX(4,17,0) && !RTLNX_RHEL_MAJ_PREREQ(7,6) && !RTLNX_SUSE_MAJ_PREREQ(15,1) && !RTLNX_SUSE_MAJ_PREREQ(12,5) |
| 286 | @@ -613,7 +635,11 @@ |
| 287 | NULL, vbox_bo_ttm_destroy); |
| 288 | #endif |
| 289 | if (ret) |
| 290 | - goto err_free_vboxbo; |
| 291 | + { |
| 292 | + /* In case of failure, ttm_bo_init() supposed to call |
| 293 | + * vbox_bo_ttm_destroy() which in turn will free @vboxbo. */ |
| 294 | + goto err_exit; |
| 295 | + } |
| 296 | |
| 297 | *pvboxbo = vboxbo; |
| 298 | |
| 299 | @@ -621,12 +647,15 @@ |
| 300 | |
| 301 | err_free_vboxbo: |
| 302 | kfree(vboxbo); |
| 303 | +err_exit: |
| 304 | return ret; |
| 305 | } |
| 306 | |
| 307 | static inline u64 vbox_bo_gpu_offset(struct vbox_bo *bo) |
| 308 | { |
| 309 | -#if RTLNX_VER_MIN(5,9,0) || RTLNX_RHEL_MIN(8,4) || RTLNX_SUSE_MAJ_PREREQ(15,3) |
| 310 | +#if RTLNX_VER_MIN(5,14,0) |
| 311 | + return bo->bo.resource->start << PAGE_SHIFT; |
| 312 | +#elif RTLNX_VER_MIN(5,9,0) || RTLNX_RHEL_MIN(8,4) || RTLNX_SUSE_MAJ_PREREQ(15,3) |
| 313 | return bo->bo.mem.start << PAGE_SHIFT; |
| 314 | #else |
| 315 | return bo->bo.offset; |
| 316 | @@ -685,7 +714,7 @@ |
| 317 | struct ttm_operation_ctx ctx = { false, false }; |
| 318 | # endif |
| 319 | #endif |
| 320 | - int ret; |
| 321 | + int ret = 0; |
| 322 | #if RTLNX_VER_MAX(5,11,0) |
| 323 | int i; |
| 324 | #endif |
| 325 | @@ -765,6 +794,7 @@ |
| 326 | { |
| 327 | struct drm_file *file_priv; |
| 328 | struct vbox_private *vbox; |
| 329 | + int ret = -EINVAL; |
| 330 | |
| 331 | if (unlikely(vma->vm_pgoff < DRM_FILE_PAGE_OFFSET)) |
| 332 | return -EINVAL; |
| 333 | @@ -772,5 +802,12 @@ |
| 334 | file_priv = filp->private_data; |
| 335 | vbox = file_priv->minor->dev->dev_private; |
| 336 | |
| 337 | - return ttm_bo_mmap(filp, vma, &vbox->ttm.bdev); |
| 338 | +#if RTLNX_VER_MIN(5,14,0) |
| 339 | + if (drm_dev_is_unplugged(file_priv->minor->dev)) |
| 340 | + return -ENODEV; |
| 341 | + ret = drm_gem_mmap(filp, vma); |
| 342 | +#else |
| 343 | + ret = ttm_bo_mmap(filp, vma, &vbox->ttm.bdev); |
| 344 | +#endif |
| 345 | + return ret; |
| 346 | } |
| 347 | Index: a/src/VBox/Additions/linux/drm/vbox_fb.c |
| 348 | =================================================================== |
| 349 | --- a/src/VBox/Additions/linux/drm/vbox_fb.c (revision 89690) |
| 350 | +++ a/src/VBox/Additions/linux/drm/vbox_fb.c (revision 90498) |
| 351 | @@ -301,7 +301,9 @@ |
| 352 | return ret; |
| 353 | } |
| 354 | |
| 355 | -#if RTLNX_VER_MIN(5,12,0) |
| 356 | +#if RTLNX_VER_MIN(5,14,0) |
| 357 | + ret = ttm_bo_kmap(&bo->bo, 0, bo->bo.resource->num_pages, &bo->kmap); |
| 358 | +#elif RTLNX_VER_MIN(5,12,0) |
| 359 | ret = ttm_bo_kmap(&bo->bo, 0, bo->bo.mem.num_pages, &bo->kmap); |
| 360 | #else |
| 361 | ret = ttm_bo_kmap(&bo->bo, 0, bo->bo.num_pages, &bo->kmap); |
| 362 | @@ -337,8 +339,8 @@ |
| 363 | * This seems to be done for safety checking that the framebuffer |
| 364 | * is not registered twice by different drivers. |
| 365 | */ |
| 366 | - info->apertures->ranges[0].base = pci_resource_start(dev->pdev, 0); |
| 367 | - info->apertures->ranges[0].size = pci_resource_len(dev->pdev, 0); |
| 368 | + info->apertures->ranges[0].base = pci_resource_start(VBOX_DRM_TO_PCI_DEV(dev), 0); |
| 369 | + info->apertures->ranges[0].size = pci_resource_len(VBOX_DRM_TO_PCI_DEV(dev), 0); |
| 370 | |
| 371 | #if RTLNX_VER_MIN(5,2,0) || RTLNX_RHEL_MAJ_PREREQ(8,2) |
| 372 | /* |
| 373 | Index: a/src/VBox/Additions/linux/drm/vbox_drv.c |
| 374 | =================================================================== |
| 375 | --- a/src/VBox/Additions/linux/drm/vbox_drv.c (revision 89690) |
| 376 | +++ a/src/VBox/Additions/linux/drm/vbox_drv.c (revision 90498) |
| 377 | @@ -43,6 +43,10 @@ |
| 378 | # include <drm/drm_probe_helper.h> |
| 379 | #endif |
| 380 | |
| 381 | +#if RTLNX_VER_MIN(5,14,0) |
| 382 | +# include <drm/drm_aperture.h> |
| 383 | +#endif |
| 384 | + |
| 385 | #include "version-generated.h" |
| 386 | #include "revision-generated.h" |
| 387 | |
| 388 | @@ -65,12 +69,23 @@ |
| 389 | struct drm_device *dev = NULL; |
| 390 | int ret = 0; |
| 391 | |
| 392 | +# if RTLNX_VER_MIN(5,14,0) |
| 393 | + ret = drm_aperture_remove_conflicting_pci_framebuffers(pdev, "vboxvideofb"); |
| 394 | + if (ret) |
| 395 | + { |
| 396 | + printk("unable to remove conflicting framebuffer devices\n"); |
| 397 | + return ret; |
| 398 | + } |
| 399 | +# endif /* 5.14 */ |
| 400 | + |
| 401 | dev = drm_dev_alloc(&driver, &pdev->dev); |
| 402 | if (IS_ERR(dev)) { |
| 403 | ret = PTR_ERR(dev); |
| 404 | goto err_drv_alloc; |
| 405 | } |
| 406 | +#if RTLNX_VER_MAX(5,14,0) |
| 407 | dev->pdev = pdev; |
| 408 | +#endif |
| 409 | pci_set_drvdata(pdev, dev); |
| 410 | |
| 411 | ret = vbox_driver_load(dev); |
| 412 | @@ -125,7 +140,7 @@ |
| 413 | |
| 414 | drm_kms_helper_poll_disable(dev); |
| 415 | |
| 416 | - pci_save_state(dev->pdev); |
| 417 | + pci_save_state(VBOX_DRM_TO_PCI_DEV(dev)); |
| 418 | |
| 419 | drm_fb_helper_set_suspend_unlocked(&vbox->fbdev->helper, true); |
| 420 | |
| 421 | @@ -147,7 +162,7 @@ |
| 422 | { |
| 423 | int ret; |
| 424 | |
| 425 | - if (pci_enable_device(dev->pdev)) |
| 426 | + if (pci_enable_device(VBOX_DRM_TO_PCI_DEV(dev))) |
| 427 | return -EIO; |
| 428 | |
| 429 | ret = vbox_drm_thaw(dev); |
| 430 | Index: a/src/VBox/Additions/linux/drm/vbox_irq.c |
| 431 | =================================================================== |
| 432 | --- a/src/VBox/Additions/linux/drm/vbox_irq.c (revision 89690) |
| 433 | +++ a/src/VBox/Additions/linux/drm/vbox_irq.c (revision 90498) |
| 434 | @@ -206,7 +206,7 @@ |
| 435 | INIT_WORK(&vbox->hotplug_work, vbox_hotplug_worker); |
| 436 | vbox_update_mode_hints(vbox); |
| 437 | #if RTLNX_VER_MIN(3,16,0) || RTLNX_RHEL_MAJ_PREREQ(7,1) |
| 438 | - return drm_irq_install(vbox->dev, vbox->dev->pdev->irq); |
| 439 | + return drm_irq_install(vbox->dev, VBOX_DRM_TO_PCI_DEV(vbox->dev)->irq); |
| 440 | #else |
| 441 | return drm_irq_install(vbox->dev); |
| 442 | #endif |