lkml.org 
[lkml]   [1998]   [Aug]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
SubjectRe: [PATCH] Fix to make check_pgt_cache work on !i386 architectures
Date
> |> The case when there are multiple page tables within one page is far more
> |> complicated. It cannot be per-cpu any longer (as otherwise freeing of the
> |> pages would be really difficult without locking), one has to keep track on
> |> which chunks of the page are free and which are allocated. So, even the
> |> check_pgt_cache routine for that has to take those things into account and
> |> free only pages which are completely free (but still it is a lot better
> |> than before with the big/small chunk allocator).
>
> I don't understand the problem with partial page pgd/pmd. The page table
> cache that i have implemented for m68k works ok.

The solution you use might be applicable to sparc64 UP, but would give very
bad results for sparc32 SMP. If some page has a couple of chunks in one CPUs
quicklist, other chunks in other CPUs, some chunks allocated to different
CPUs and some out of any quicklists, it would create really horrible
fragmentation. There has to be some locking even in the check_pgt_cache
case (as currently implemented in srmmu_check_pgt_cache).
What I don't like on your solution is that you basically maintain two lists
instead of one (one is the pmd_quicklist, the other is the internal
get_pointer_table list), have to go back and forth between those lists.
And no matter which solution you use for m68k, I think it would be much
better to overload some unused struct page entries (like it is done on
sparc32/sparc64), instead of allocating the get_pointer_table internal
structures by kmalloc. And, you should not need any cli() there...

Cheers,
Jakub
___________________________________________________________________
Jakub Jelinek | jj@sunsite.mff.cuni.cz | http://sunsite.mff.cuni.cz
Administrator of SunSITE Czech Republic, MFF, Charles University
___________________________________________________________________
Ultralinux - first 64bit OS to take full power of the UltraSparc
Linux version 2.1.112 on a sparc64 machine (498.80 BogoMips).
___________________________________________________________________

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.altern.org/andrebalsa/doc/lkml-faq.html

\
 
 \ /
  Last update: 2005-03-22 13:43    [W:0.105 / U:0.440 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site