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