On 2011-11-23 02:14, David Rientjes wrote: > From: Mike Snitzer <snitzer@xxxxxxxxxx> > > struct request_queue is allocated with __GFP_ZERO so its "node" field is > zero before initialization. This causes an oops if node 0 is offline in > the page allocator because its zonelists are not initialized. From Dave > Young's dmesg: > > SRAT: Node 1 PXM 2 0-d0000000 > SRAT: Node 1 PXM 2 100000000-330000000 > SRAT: Node 0 PXM 1 330000000-630000000 > Initmem setup node 1 0000000000000000-000000000affb000 > ... > Built 1 zonelists in Node order, mobility grouping on. > ... > BUG: unable to handle kernel paging request at 0000000000001c08 > IP: [<ffffffff8111c355>] __alloc_pages_nodemask+0xb5/0x870 > > and __alloc_pages_nodemask+0xb5 translates to a NULL pointer on > zonelist->_zonerefs. > > The fix is to initialize q->node at the time of allocation so the correct > node is passed to the slab allocator later. > > Since blk_init_allocated_queue_node() is no longer needed, merge it with > blk_init_allocated_queue(). Thanks, queued for current release. -- Jens Axboe -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/ Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>