12/01/2018 11:22, Maxime Coquelin: > Intel VT-d supports different address widths for the IOVAs, from > 39 bits to 56 bits. > > While recent processors support at least 48 bits, VT-d emulation > currently only supports 39 bits. It makes DMA mapping to fail in this > case when using VA as IOVA mode, as user-space virtual addresses uses > up to 47 bits (see kernel's Documentation/x86/x86_64/mm.txt). > > This patch parses VT-d CAP register value available in sysfs, and > forbid VA as IOVA mode if the GAW is 39 bits or unknown. > > Fixes: f37dfab21c98 ("drivers/net: enable IOVA mode for Intel PMDs") > > Cc: sta...@dpdk.org > Signed-off-by: Maxime Coquelin <maxime.coque...@redhat.com> [...] > + if (fscanf(fp, "%lx", &vtd_cap_reg) != 1) {
Compilation error on 32-bit. Fix: - if (fscanf(fp, "%lx", &vtd_cap_reg) != 1) { + if (fscanf(fp, "%" PRIx64, &vtd_cap_reg) != 1) { [...] > +#elif defined(RTE_ARCH_PPC_64) > +static bool > +pci_one_device_iommu_support_va(struct rte_pci_device *dev) > +{ > + return false; > +} > +#else > +static bool > +pci_one_device_iommu_support_va(struct rte_pci_device *dev) > +{ > + return true; > +} > +#endif Compilation error on non-x86. Fix: #elif defined(RTE_ARCH_PPC_64) static bool -pci_one_device_iommu_support_va(struct rte_pci_device *dev) +pci_one_device_iommu_support_va(__rte_unused struct rte_pci_device *dev) { return false; } #else static bool -pci_one_device_iommu_support_va(struct rte_pci_device *dev) +pci_one_device_iommu_support_va(__rte_unused struct rte_pci_device *dev) { return true; } Applied with above fixes, thanks.