On 03/01/2017 22:56, Ben Walker wrote:
For Linux kernel 4.0 and newer, the ability to obtain
physical page frame numbers for unprivileged users from
/proc/self/pagemap was removed. Instead, when an IOMMU
is present, simply choose our own DMA addresses instead.

Signed-off-by: Ben Walker <benjamin.wal...@intel.com>
@@ -255,6 +257,22 @@ find_physaddrs(struct hugepage_file *hugepg_tbl, struct 
hugepage_info *hpi)
  }
/*
+ * For each hugepage in hugepg_tbl, fill the physaddr value sequentially.
+ */
+static int
+set_physaddrs(struct hugepage_file *hugepg_tbl, struct hugepage_info *hpi)
+{
+       unsigned int i;
+       phys_addr_t addr = 0;
+
+       for (i = 0; i < hpi->num_pages[0]; i++) {
+               hugepg_tbl[i].physaddr = addr;
+               addr += hugepg_tbl[i].size;
+       }
+       return 0;
+}
+

Sorry for late catch, but when having multiple hugepage sizes, both would be mapped from address 0.
I thin making the var static should be enough.
Also I would prefer some randomness on the start address instead of always 0.

Thanks,
Sergio

Reply via email to