[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [RFC PATCH] xen/gnttab: Store frame GFN in struct page_info on Arm
On 13.09.2021 21:57, Oleksandr wrote: > > On 13.09.21 09:17, Jan Beulich wrote: > > Hi Jan > >> On 10.09.2021 09:52, Jan Beulich wrote: >>> On 10.09.2021 01:04, Oleksandr Tyshchenko wrote: >>>> @@ -731,11 +733,19 @@ static void p2m_put_l3_page(const lpae_t pte) >>>> */ >>>> if ( p2m_is_foreign(pte.p2m.type) ) >>>> { >>>> - mfn_t mfn = lpae_get_mfn(pte); >>>> - >>>> ASSERT(mfn_valid(mfn)); >>>> put_page(mfn_to_page(mfn)); >>>> } >>>> + >>>> +#ifdef CONFIG_GRANT_TABLE >>>> + /* >>>> + * Check whether we deal with grant table page. As the grant table >>>> page >>>> + * is xen_heap page and its entry has known p2m type, detect it and >>>> mark >>>> + * the stored GFN as invalid. >>>> + */ >>>> + if ( p2m_is_ram(pte.p2m.type) && is_xen_heap_mfn(mfn) ) >>>> + page_set_frame_gfn(mfn_to_page(mfn), INVALID_GFN); >>>> +#endif >>> I take it the write done is benign for other Xen heap pages? I suppose >>> this would want making very explicit, as such an assumption is easy to >>> go stale by entirely unrelated changes. >>> >>> I also wonder whether you really mean to include p2m_ram_ro pages here >>> as well. >> Actually I've meanwhile realized I should put my question here quite >> differently: Aren't you effectively introducing an M2P here for Arm, >> except that you artificially limit it to the Xen heap pages needed for >> the grant table? > > Difficult to say, it might indeed look a bit close to M2P, so the answer > to your question is more yes than no. But, I didn't have a plan to > introduce M2P on Arm. It turned out that stashing GFN into page_info (as > was suggested) avoided huge lookups, so we have got MFN->GFN in the end. > The purpose of this patch was just to fix a potential issue with > remapping grant-table frame on architecture without the M2P (Arm). I understand this is the immediate goal. I wonder though if it's helpful to make this a special case when it can (I think) easily be made general. But of course there may be (perhaps Arm-specific) aspects which I'm simply unaware of. Jan
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |