On Tue, Jun 08, 2021 at 04:04:06PM -0300, Jason Gunthorpe wrote: > On Tue, Jun 08, 2021 at 10:53:02AM +1000, David Gibson wrote: > > On Thu, Jun 03, 2021 at 08:52:24AM -0300, Jason Gunthorpe wrote: > > > On Thu, Jun 03, 2021 at 03:13:44PM +1000, David Gibson wrote: > > > > > > > > We can still consider it a single "address space" from the IOMMU > > > > > perspective. What has happened is that the address table is not just a > > > > > 64 bit IOVA, but an extended ~80 bit IOVA formed by "PASID, IOVA". > > > > > > > > True. This does complexify how we represent what IOVA ranges are > > > > valid, though. I'll bet you most implementations don't actually > > > > implement a full 64-bit IOVA, which means we effectively have a large > > > > number of windows from (0..max IOVA) for each valid pasid. This adds > > > > another reason I don't think my concept of IOVA windows is just a > > > > power specific thing. > > > > > > Yes > > > > > > Things rapidly get into weird hardware specific stuff though, the > > > request will be for things like: > > > "ARM PASID&IO page table format from SMMU IP block vXX" > > > > So, I'm happy enough for picking a user-managed pagetable format to > > imply the set of valid IOVA ranges (though a query might be nice). > > I think a query is mandatory, and optionally asking for ranges seems > generally useful as a HW property. > > The danger is things can get really tricky as the app can ask for > ranges some HW needs but other HW can't provide. > > I would encourage a flow where "generic" apps like DPDK can somehow > just ignore this, or at least be very, very simplified "I want around > XX GB of IOVA space" > > dpdk type apps vs qemu apps are really quite different and we should > be carefully that the needs of HW accelerated vIOMMU emulation do not > trump the needs of simple universal control over a DMA map. Agreed. -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson