On Fri, Jul 04, 2025 at 06:13:30PM -0700, Nicolin Chen wrote:
+static struct iommufd_access *
+iommufd_hw_queue_alloc_phys(struct iommu_hw_queue_alloc *cmd,
+ struct iommufd_viommu *viommu, phys_addr_t *base_pa)
+{
+ struct iommufd_access *access;
+ struct page **pages;
+ size_t max_npages;
+ size_t length;
+ u64 offset;
+ size_t i;
+ int rc;
+
+ offset =
+ cmd->nesting_parent_iova - PAGE_ALIGN(cmd->nesting_parent_iova);
PAGE_ALIGN is ALIGN UP, that is the wrong direction?
It is just:
offset = cmd->nesting_parent_iova % PAGE_SIZE;
And this is missing:
*base_pa = (page_to_pfn(pages[0]) << PAGE_SHIFT) + offset;
??
Jason