On Thu, Sep 27, 2018 at 03:54:40PM +1000, Paul Mackerras wrote: > On Thu, Sep 27, 2018 at 02:07:58PM +1000, David Gibson wrote: > > On Fri, Sep 21, 2018 at 08:01:56PM +1000, Paul Mackerras wrote: > > > From: Suraj Jitindar Singh <sjitindarsingh@xxxxxxxxx> > > > > > > When a host (L0) page which is mapped into a (L1) guest is in turn > > > mapped through to a nested (L2) guest we keep a reverse mapping (rmap) > > > so that these mappings can be retrieved later. > > > > > > Whenever we create an entry in a shadow_pgtable for a nested guest we > > > create a corresponding rmap entry and add it to the list for the > > > L1 guest memslot at the index of the L1 guest page it maps. This means > > > at the L1 guest memslot we end up with lists of rmaps as follows; > > > > > > memslot (L1) > > > ----------------- > > > | gfn = 0 | -> rmap -> rmap -> rmap -> NULL > > > ----------------- > > > | gfn = 1 | > > > ----------------- > > > | gfn = 2 | -> rmap -> NULL > > > ----------------- > > > | gfn = 3 | -> rmap -> rmap -> NULL > > > ----------------- > > > | gfn = 4 | > > > ----------------- > > > | gfn = n | > > > ----------------- > > > > > > When we are notified of a host page being invalidated which has been > > > mapped through to a (L1) guest, we can then walk the rmap list for that > > > guest page, and find and invalidate all of the corresponding > > > shadow_pgtable entries. > > > > > > Signed-off-by: Suraj Jitindar Singh <sjitindarsingh@xxxxxxxxx> > > > Signed-off-by: Paul Mackerras <paulus@xxxxxxxxxx> > > > > Reviewed-by: David Gibson <david@xxxxxxxxxxxxxxxxxxxxx> > > > > Am I right in thinking that the reason we need this in addition to the > > exiting rmap for the L1 guest is that we need to know the LPID(s) to > > invalidate in the case of a host invalidation? > > The existing rmap is not really used for radix guests because we get a > guest real address and we can just index into the partition-scoped > radix tree and find the one and only PTE that maps that guest real > address. > > With a nested guest, a given L1 guest real page could be mapped in the > shadow partition-scoped trees for multiple nested guests at arbitrary > L2 guest real addresses. The rmap that we implement here gives us a > list of (l1 lpid, l2 guest real address) combinations that (may) map > the target L1 guest real page. Ah, right. -- 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
Attachment:
signature.asc
Description: PGP signature