2018-04-17 14:58:34 +02:00
|
|
|
In kernel 4.17, pci_get_bus_and_slot() has been removed in favor of
|
|
|
|
pci_get_domain_bus_and_slot(). It appears that VirtualBox only uses
|
|
|
|
domain number 0, thus pci_get_domain_bus_and_slot(0, bus, devfn)
|
|
|
|
is a suitable replacement for pci_get_bus_and_slot(bus, devfn).
|
|
|
|
|
|
|
|
The resulting code compiles; however, I do not use PCI passthru, which
|
|
|
|
I think means that I have not actually tested the code.
|
|
|
|
|
|
|
|
This patch released under a combined MIT/GPLv2 license.
|
|
|
|
|
|
|
|
Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
|
|
|
|
|
2018-04-25 17:34:57 +02:00
|
|
|
Index: VirtualBox-5.2.10/src/VBox/HostDrivers/VBoxPci/linux/VBoxPci-linux.c
|
2018-04-17 14:58:34 +02:00
|
|
|
===================================================================
|
2018-04-25 17:34:57 +02:00
|
|
|
--- VirtualBox-5.2.10.orig/src/VBox/HostDrivers/VBoxPci/linux/VBoxPci-linux.c
|
|
|
|
+++ VirtualBox-5.2.10/src/VBox/HostDrivers/VBoxPci/linux/VBoxPci-linux.c
|
2018-04-17 14:58:34 +02:00
|
|
|
@@ -89,7 +89,14 @@ MODULE_VERSION(VBOX_VERSION_STRING " r"
|
|
|
|
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 20)
|
|
|
|
# define PCI_DEV_GET(v,d,p) pci_get_device(v,d,p)
|
|
|
|
# define PCI_DEV_PUT(x) pci_dev_put(x)
|
|
|
|
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 17, 0)
|
|
|
|
+/* assume the domain number to be zero - exactly the same assumption of
|
|
|
|
+ * pci_get_bus_and_slot()
|
|
|
|
+ */
|
|
|
|
+# define PCI_DEV_GET_SLOT(bus, devfn) pci_get_domain_bus_and_slot(0, bus, devfn)
|
|
|
|
+#else
|
|
|
|
# define PCI_DEV_GET_SLOT(bus, devfn) pci_get_bus_and_slot(bus, devfn)
|
|
|
|
+#endif
|
|
|
|
#else
|
|
|
|
# define PCI_DEV_GET(v,d,p) pci_find_device(v,d,p)
|
|
|
|
# define PCI_DEV_PUT(x) do { } while (0)
|
2018-04-25 17:34:57 +02:00
|
|
|
Index: VirtualBox-5.2.10/src/VBox/Additions/linux/drm/vbox_ttm.c
|
|
|
|
===================================================================
|
|
|
|
--- VirtualBox-5.2.10.orig/src/VBox/Additions/linux/drm/vbox_ttm.c
|
|
|
|
+++ VirtualBox-5.2.10/src/VBox/Additions/linux/drm/vbox_ttm.c
|
|
|
|
@@ -236,10 +236,15 @@ static struct ttm_backend_func vbox_tt_b
|
|
|
|
.destroy = &vbox_ttm_backend_destroy,
|
|
|
|
};
|
|
|
|
|
|
|
|
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 17, 0)
|
|
|
|
+static struct ttm_tt *vbox_ttm_tt_create(struct ttm_buffer_object *bo,
|
|
|
|
+ u32 page_flags)
|
|
|
|
+#else
|
|
|
|
static struct ttm_tt *vbox_ttm_tt_create(struct ttm_bo_device *bdev,
|
|
|
|
unsigned long size,
|
|
|
|
u32 page_flags,
|
|
|
|
struct page *dummy_read_page)
|
|
|
|
+#endif
|
|
|
|
{
|
|
|
|
struct ttm_tt *tt;
|
|
|
|
|
|
|
|
@@ -248,7 +253,11 @@ static struct ttm_tt *vbox_ttm_tt_create
|
|
|
|
return NULL;
|
|
|
|
|
|
|
|
tt->func = &vbox_tt_backend_func;
|
|
|
|
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 17, 0)
|
|
|
|
+ if (ttm_tt_init(tt, bo, page_flags)) {
|
|
|
|
+#else
|
|
|
|
if (ttm_tt_init(tt, bdev, size, page_flags, dummy_read_page)) {
|
|
|
|
+#endif
|
|
|
|
kfree(tt);
|
|
|
|
return NULL;
|
|
|
|
}
|
2018-04-26 18:28:14 +02:00
|
|
|
@@ -450,7 +459,11 @@ int vbox_bo_create(struct drm_device *de
|
|
|
|
|
|
|
|
ret = ttm_bo_init(&vbox->ttm.bdev, &vboxbo->bo, size,
|
|
|
|
ttm_bo_type_device, &vboxbo->placement,
|
|
|
|
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 17, 0)
|
|
|
|
+ align >> PAGE_SHIFT, false, acc_size,
|
|
|
|
+#else
|
|
|
|
align >> PAGE_SHIFT, false, NULL, acc_size,
|
|
|
|
+#endif
|
|
|
|
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 18, 0) || defined(RHEL_73)
|
|
|
|
NULL,
|
|
|
|
#endif
|