Bare metal PowerNV systems include a DPDK supported IOMMU that allows
IOVA=VA support. Test for the platform type and report virtual address
support if running on a PowerNV system.
...
+
+ char *line = 0;
Nit: NULL
Fixed.
+ /* Check for a PowerNV platform */
+ while (getline(&line, &len, fp) != -1) {
From here, you leak line.
Fixed.
Nit, to avoid multiple level of indent, how about invert the check:
if (strstr(line, "platform") == NULL)
continue;
Fixed.
+ if (strstr(line, "PowerNV") != NULL) {
+ RTE_LOG(DEBUG, EAL, "Running on a PowerNV
system\n");
Not really helpful, it does not indicate that this system iommu supports VA.
This is the advice given by the kernel developer who maintains the IOMMU
code for PPC. There's nothing in the /sys filesystem that describes the
IOMMU like there is in x86_64 platforms. All POWER systems supported by
DPDK have an IOMMU (you can't turn it off). This is true for both bare
metal systems like PowerNV (Power Non-Virtualized) as well as
virtualized systems like QEMU/KVM and PowerVM LPARs. In the case of
virtualized systems the IOMMU has different capabilities and is not
currently supported in DPDK. Thus, if I know the platform I'm running
on then I know the IOMMU is present and enabled.
Dave