https://bugs.gentoo.org/389953 --- vboxpci/linux/VBoxPci-linux.c +++ vboxpci/linux/VBoxPci-linux.c @@ -33,14 +33,22 @@ #include "VBoxPciInternal.h" #ifdef VBOX_WITH_IOMMU -#include -#include -#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 1, 0) -# include -#else -# include -#endif -#endif +# include +# include +# include +# if LINUX_VERSION_CODE < KERNEL_VERSION(3, 1, 0) +# include +# else +# include +# endif +# if LINUX_VERSION_CODE < KERNEL_VERSION(3, 2, 0) +# define IOMMU_PRESENT() iommu_found() +# define IOMMU_DOMAIN_ALLOC() iommu_domain_alloc() +# else +# define IOMMU_PRESENT() iommu_present(&pci_bus_type) +# define IOMMU_DOMAIN_ALLOC() iommu_domain_alloc(&pci_bus_type) +# endif +#endif /* VBOX_WITH_IOMMU */ /******************************************************************************* @@ -146,7 +154,7 @@ #endif #ifdef VBOX_WITH_IOMMU - if (iommu_found()) + if (IOMMU_PRESENT()) printk(KERN_INFO "vboxpci: IOMMU found\n"); else printk(KERN_INFO "vboxpci: IOMMU not found (not registered)\n"); @@ -984,9 +992,9 @@ printk(KERN_DEBUG "vboxPciOsInitVm: %p\n", pThis); #endif #ifdef VBOX_WITH_IOMMU - if (iommu_found()) + if (IOMMU_PRESENT()) { - pThis->pIommuDomain = iommu_domain_alloc(); + pThis->pIommuDomain = IOMMU_DOMAIN_ALLOC(); if (!pThis->pIommuDomain) { printk(KERN_DEBUG "cannot allocate IOMMU domain\n");