Index: linux-2.6.17-mm6/mm/page_alloc.c =================================================================== --- linux-2.6.17-mm6.orig/mm/page_alloc.c 2006-07-06 19:59:54.025433021 -0700 +++ linux-2.6.17-mm6/mm/page_alloc.c 2006-07-06 21:02:50.011797299 -0700 @@ -1812,6 +1812,8 @@ void zonetable_add(struct zone *zone, in unsigned long snum = pfn_to_section_nr(pfn); unsigned long end = pfn_to_section_nr(pfn + size); + printk(KERN_EMERG "zonetable_add(%p,%d,%d,%lx,%lu) snum=%lx end=%lx\n", + zone, nid, zid, pfn, size, snum, end); if (FLAGS_HAS_NODE) zone_table[ZONETABLE_INDEX(nid, zid)] = zone; else Index: linux-2.6.17-mm6/include/linux/mm.h =================================================================== --- linux-2.6.17-mm6.orig/include/linux/mm.h 2006-07-06 15:34:40.509763594 -0700 +++ linux-2.6.17-mm6/include/linux/mm.h 2006-07-06 21:00:05.899864983 -0700 @@ -488,6 +488,9 @@ static inline int page_zone_id(struct pa } static inline struct zone *page_zone(struct page *page) { + if (page_zone_id(page)) + printk(KERN_EMERG "page_zone(%p) flags=%lx zone_id=%d\n", + page, page->flags, page_zone_id(page)); return zone_table[page_zone_id(page)]; } Index: linux-2.6.17-mm6/kernel/wait.c =================================================================== --- linux-2.6.17-mm6.orig/kernel/wait.c 2006-07-03 13:47:22.520387566 -0700 +++ linux-2.6.17-mm6/kernel/wait.c 2006-07-06 20:20:36.325641056 -0700 @@ -243,6 +243,9 @@ fastcall wait_queue_head_t *bit_waitqueu const int shift = BITS_PER_LONG == 32 ? 5 : 6; const struct zone *zone = page_zone(virt_to_page(word)); unsigned long val = (unsigned long)word << shift | bit; + + printk(KERN_EMERG "bit_waitqueue: %p bit=%d zone=%p shift=%d val=%d\n", + word, bit, zone, shift, val); return &zone->wait_table[hash_long(val, zone->wait_table_bits)]; }