On 3/23/22 16:48, Junaid Shahid wrote:
Hi Matthew,
On 3/23/22 14:06, Matthew Wilcox wrote:
On Tue, Feb 22, 2022 at 09:21:46PM -0800, Junaid Shahid wrote:
standard ASI instances. A new page flag is also added so that when
these pages are freed, they can also be unmapped from the ASI page
tables.
It's cute how you just throw this in as an aside. Page flags are
in high demand and just adding them is not to be done lightly. Is
there any other way of accomplishing what you want?
I suppose we may be able to use page_ext instead. That certainly should be
feasible for the PG_local_nonsensitive flag introduced in a later patch,
although I am not completely sure about the PG_global_nonsensitive flag. That
could get slightly tricky (though likely still possible to do) in case we need
to allocate any non-sensitive memory before page_ext is initialized. One concern
with using page_ext could be the extra memory usage on large machines.
BTW is page flag scarcity an issue on 64-bit systems as well, or only 32-bit
systems? ASI is only supported on 64-bit systems (at least currently).
One other thing that we could do to remove the need for the
PG_global_nonsensitive flag altogether (though not the PG_local_nonsensitive
flag) would be to always try to unmap pages from the asi_global_nonsensitive_pgd
in free_pages(). Basically, that would mean adding a page table walk to every
free_pages() rather than just non-sensitive free_pages(). Do you think that may
be a better trade-off in order to avoid the flag?
Thanks,
Junaid