Re: Creating a per-task kernel space for kmap, user pagetables, et al

William Lee Irwin III
2002-03-21T23:50:39Z

On Wed, Mar 20, 2002 at 11:00:02PM +0100, Andrea Arcangeli wrote:
> Thet's another bit yes, but we'll need 200000 tasks to overflow the
> lowmem (ignoring the fact the lowmem is shared also for the other lowmem
> data structures) and there's the PID limit of 64k tasks. So I don't see
> it as a major thing. Anyways if we really wanted to put the stack [and
> task structure of course] in highmem, we could do that in two additional
> entries after the user stack together with the two entries for the
> pagecache and pagetable persistent kmaps. I think we can officially call
> that area the "userfixmap" or "per-process-fixmap" (no matter if it's in
> user or kernel space). But it is much faster to keep the kernel stack
> always in 4M global tlbs, thus I don't think we need to change that in
> 2.5. (also USB was used to do dma in the kernel stack, not sure if they
> changed it recently)

Another (perhaps obvious) pitfall is stack-allocated storage used for
components of globally-mapped structures. The premier example of this
is probably waitqueues. To keep them working, dynamic allocation of
globally-mapped storage or per-task static allocation thereof is
required as a substitute.

Cheers,
Bill