lkml.org 
[lkml]   [2022]   [Mar]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
SubjectRE: [PATCH v4 15/32] vfio: introduce KVM-owned IOMMU type
Date
> From: Jason Gunthorpe <jgg@nvidia.com>
> Sent: Friday, March 18, 2022 9:46 PM
>
> On Fri, Mar 18, 2022 at 07:01:19AM +0000, Tian, Kevin wrote:
> > > From: Jason Gunthorpe <jgg@nvidia.com>
> > > Sent: Tuesday, March 15, 2022 10:55 PM
> > >
> > > The first level iommu_domain has the 'type1' map and unmap and pins
> > > the pages. This is the 1:1 map with the GPA and ends up pinning all
> > > guest memory because the point is you don't want to take a memory pin
> > > on your performance path
> > >
> > > The second level iommu_domain points to a single IO page table in GPA
> > > and is created/destroyed whenever the guest traps to the hypervisor to
> > > manipulate the anchor (ie the GPA of the guest IO page table).
> > >
> >
> > Can we use consistent terms as used in iommufd and hardware, i.e.
> > with first-level/stage-1 referring to the child (GIOVA->GPA) which is
> > further nested on second-level/stage-2 as the parent (GPA->HPA)?
>
> Honestly I don't like injecting terms that only make sense for
> virtualization into iommu/vfio land.

1st/2nd-level or stage-1/2 are hardware terms not tied to virtualization.
GIOVA/GPA are just examples in this story.

>
> That area is intended to be general. If you use what it exposes for
> virtualization, then great.
>
> This is why I prefer to use 'user page table' when talking about the
> GIOVA->GPA or Stage 1 map because it is a phrase independent of
> virtualization or HW and clearly conveys what it is to the kernel and
> its inherent order in the translation scheme.

I fully agree with this point. The confusion only comes when you
start talking about first/second level in a way incompatible with
what iommu/vfio guys typically understand. 😊

>
> The S1/S2 is gets confusing because the HW people choose those names
> so that S1 is the first translation a TLP sees and S2 is the second.
>
> But from a software model, the S2 is the first domain created and the
> first level of the translation tree, while the S1 is the second domain
> created and the second level of the translation tree. ie the natural
> SW numbers are backwards.

Yes, I got this point.

>
> And I know Matthew isn't working on HW that has the S1/S2 HW naming :)
>
> But yes, should try harder to have good names. Maybe it will be
> clearer with code.
>

Yes. let's try to use 'user page table' as possible. But if the levels/stages
are inevitable in description I prefer to staying with the hardware terms
given iommu driver has to deal with hardware naming things.

Thanks
Kevin
\
 
 \ /
  Last update: 2022-03-19 08:48    [W:0.316 / U:1.388 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site