On 8 Jun 2026, at 15:59, Gregory Price wrote:

> On Mon, Jun 08, 2026 at 02:04:28PM +0100, Matthew Wilcox wrote:
>> On Mon, Jun 08, 2026 at 12:06:35PM +0100, Lorenzo Stoakes wrote:
>>> But instead of overloading user_addr to indicate all kinds of things, 
>>> instead
>>> make life easier by actually breaking things out.
>>>
>>> Like:
>>>
>>> enum alloc_context_type {
>>>     KERNEL_ALLOCATION,
>>>     USER_MAPPED_ALLOCATION,
>>>     USER_UNMAPPED_ALLOCATION, // Maybe? Do we ever?
>>>     /* Perhaps some other states we want to encode? */
>>> };
>>>
>>> struct alloc_context {
>>>     ...
>>>
>>>     enum alloc_context_type type;
>>>     unsigned long user_addr; // Only set if type == USER_ALLOCATION
>>>
>>>     // Maybe something suggesting context or whether we init before in some
>>>     // cases?
>>> };
>>
>> Ugh, please, no.  As I suggested last time I commented on this
>> trainwreck of a series, lift the zeroing functionality from
>> alloc_frozen_pages() into its callers.
>
> This sort of just implies writing the "alloc_frozen_zeroed_pages()"
> wrapper that does the zeroing at the end before return, and then killing
> the post hook nonsense associated with it in the first place.

This means it is going to be a multi-step optimization. This is probably
step 1.

>
> None of this resolves the user address annoyance which is needed on some
> archs for cache flushing.  Whether anyone agrees that the page allocator
> should be responsible for this particular operation - open debate.

This is probably step 2. But does the virtio use case apply to these
archs? Does the performance matter for them? If not, maybe this part can
be left as a TODO.


Best Regards,
Yan, Zi

Reply via email to