Re: [PATCH v3 03/14] xen/grant-table: stop setting PG_private on pages for grant mapping

From: Zi Yan

Date: Tue Sep 08 2026 - 12:11:36 EST


On Tue Sep 8, 2026 at 11:16 AM EDT, David Hildenbrand (Arm) wrote:
> On 9/8/26 04:56, Zi Yan wrote:
>> gnttab_alloc_pages() stores xen_page_foreign in page->private. On 32-bit, a
>> pointer to an allocated xen_page_foreign is stored; on 64-bit,
>> xen_page_foreign is stored inline. Checking page->private != NULL is enough
>> to tell whether a xen_page_foreign needs to be freed on 32-bit and
>> page->private is zeroed unconditionally on 64-bit.
>>
>> It prepares for a future commit that remove PG_private.
>>
>> No functional change intended.
>>
>> Assisted-by: Claude:claude-opus-4-8
>> Assisted-by: Codex:gpt-5
>> Signed-off-by: Zi Yan <ziy@xxxxxxxxxx>
>> To: Juergen Gross <jgross@xxxxxxxx>
>> To: Stefano Stabellini <sstabellini@xxxxxxxxxx>
>> Cc: Oleksandr Tyshchenko <oleksandr_tyshchenko@xxxxxxxx>
>> Cc: xen-devel@xxxxxxxxxxxxxxxxxxxx
>> Cc: linux-kernel@xxxxxxxxxxxxxxx
>> ---
>> drivers/xen/balloon.c | 5 +++++
>> drivers/xen/grant-table.c | 11 +++++------
>> 2 files changed, 10 insertions(+), 6 deletions(-)
>>
>> diff --git a/drivers/xen/balloon.c b/drivers/xen/balloon.c
>> index e7f74ea7cd5eb..fdb18348cfdfe 100644
>> --- a/drivers/xen/balloon.c
>> +++ b/drivers/xen/balloon.c
>> @@ -182,6 +182,11 @@ static struct page *balloon_retrieve(bool require_lowmem)
>>
>> __ClearPageOffline(page);
>> dec_node_page_state(page, NR_BALLOON_PAGES);
>> + /*
>> + * clear page->private before giving it out, since it might be used to
>> + * store xen_page_foreign info.
>> + */
>> + set_page_private(page, 0);
>
> Who would have set it to != 0 in the first place?

No one else, except
>
> e.g., gnttab_free_pages() resets it to 0 now before calling
> xen_free_unpopulated_pages().

After reading more, I agree with you that the above change is unnecesary
and will remove it in the next version. Thanks.

--
Best Regards,
Yan, Zi