--- mm/page_alloc.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) Index: linux-2.6/mm/page_alloc.c =================================================================== --- linux-2.6.orig/mm/page_alloc.c 2008-01-28 23:24:38.373886371 -0800 +++ linux-2.6/mm/page_alloc.c 2008-01-28 23:24:43.150019588 -0800 @@ -1002,8 +1002,12 @@ static void fastcall free_hot_cold_page( kernel_map_pages(page, 1, 0); local_irq_save(flags); + printk("zone->pageset=%p THIS_CPU(x)=%p\n", zone->pageset, THIS_CPU(zone->pageset)); pcp = &THIS_CPU(zone->pageset)->pcp[cold]; + printk("free_hot_cold_page pcp =%p", pcp); __count_vm_event(PGFREE); + printk("pcp->count=%d pcp->high=%d pcp->batch=%d pcp->list=%p/%p\n", + pcp->count, pcp->high, pcp->batch, pcp->list.next, pcp->list.prev); list_add(&page->lru, &pcp->list); set_page_private(page, get_pageblock_migratetype(page)); pcp->count++; @@ -2768,9 +2772,9 @@ static __meminit void zone_pcp_init(stru * Deferral also allows slab allocators to perform their * initialization without resorting to bootmem. */ - zone->pageset = SHIFT_PERCPU_PTR(&boot_pageset, - -__per_cpu_offset(smp_processor_id())); + zone->pageset = SHIFT_PERCPU_PTR(&boot_pageset, - __per_cpu_start); setup_pageset(&boot_pageset, 0); + printk("zone_pcp_init: Setting up fake boot_pageset at %p pageset=%p SHIFT=%p\n", zone->pageset, &boot_pageset, THIS_CPU(zone->pageset)); if (zone->present_pages) printk(KERN_DEBUG " %s zone: %lu pages, LIFO batch:%u\n", zone->name, zone->present_pages,