On 16.10.2020 10:41, Julien Grall wrote: > On 16/10/2020 07:29, Jan Beulich wrote: >> Given how p2m_free_entry() works (or is supposed to work in the >> long run), is the new code you add guaranteed to only alter leaf >> entries? > > This path may also be called with tables. I think we want to move the > check in p2m_free_entry() so we can find the correct leaf type. > >> If not, the freeing of page tables needs deferring until >> after qemu has dropped its mappings. > > Freeing the page tables doesn't release a page. So may I ask why we > would need to defer it?
Oh, sorry - qemu of course doesn't use the same p2m, so the intermediate page tables are private to the subject guest. >> And with there being refcounting only for foreign pages, how do >> you prevent the freeing of the page just unmapped before qemu has >> dropped its possible mapping? > QEMU mappings can only be done using the foreign mapping interface. This > means that page reference count will be incremented for each QEMU > mappings. Therefore the page cannot disappear until QEMU dropped the > last reference. Okay, sorry for the noise then. Jan