On Wed, 12 Dec 2007, Jeremy Fitzhardinge wrote: > I'm looking at unifying the various pgalloc+pgd_lists mechanisms between > 32-bit (PAE and non-PAE) and 64-bit, so I'm trying to understand why > these differences exist in the first place. > > Change da8f153e51290e7438ba7da66234a864e5d3e1c1 reverted the use of > quicklists for allocating pagetables, because of concerns about ordering > with respect to tlb flushes.
These issues only exist with NUMA because of the freeing of off node pages before the TLB flush was done. There was a discussion about this issue and my fix of simply not freeing the offnode pages early was ignored. Instead the x86_64 implementation (which has no problems that I know of) was pulled leaving the issue open in the core. Benjamin Herrrenschmidt wanted to take a look at these issues (CCing him). Here is the fix again. Could we please reapply the x86_64 quicklist patch after applying this one? (I have another patch in testing that maintains separate lists for off and on node pages and frees all off node pages on flush but that one adds new capabilities). http://marc.info/?t=119039827700001&r=1&w=2 [NUMA] quicklists: Do not release off node pages early quicklists must keep even off node pages on the quicklists until the TLB flush has been completed. Signed-off-by: Christoph Lameter <[EMAIL PROTECTED]> Index: linux-2.6/include/linux/quicklist.h =================================================================== --- linux-2.6.orig/include/linux/quicklist.h 2007-12-13 11:42:21.000000000 -0800 +++ linux-2.6/include/linux/quicklist.h 2007-12-13 11:42:37.000000000 -0800 @@ -56,14 +56,6 @@ static inline void __quicklist_free(int struct page *page) { struct quicklist *q; - int nid = page_to_nid(page); - - if (unlikely(nid != numa_node_id())) { - if (dtor) - dtor(p); - __free_page(page); - return; - } q = &get_cpu_var(quicklist)[nr]; *(void **)p = q->page; -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/