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