Re: [RFC 00/14] Dynamic Kernel Stacks

From: Matthew Wilcox
Date: Mon Mar 18 2024 - 11:20:12 EST


On Mon, Mar 18, 2024 at 11:09:47AM -0400, Pasha Tatashin wrote:
> The TLB load is going to be exactly the same as today, we already use
> small pages for VMA mapped stacks. We won't need to have extra
> flushing either, the mappings are in the kernel space, and once pages
> are removed from the page table, no one is going to access that VA
> space until that thread enters the kernel again. We will need to
> invalidate the VA range only when the pages are mapped, and only on
> the local cpu.

No; we can pass pointers to our kernel stack to other threads. The
obvious one is a mutex; we put a mutex_waiter on our own stack and
add its list_head to the mutex's waiter list. I'm sure you can
think of many other places we do this (eg wait queues, poll(), select(),
etc).