.. | .. |
---|
41 | 41 | __add_active_range(nid, start_pfn, end_pfn); |
---|
42 | 42 | |
---|
43 | 43 | /* Node-local pgdat */ |
---|
44 | | - NODE_DATA(nid) = __va(memblock_alloc_base(sizeof(struct pglist_data), |
---|
45 | | - SMP_CACHE_BYTES, end)); |
---|
46 | | - memset(NODE_DATA(nid), 0, sizeof(struct pglist_data)); |
---|
| 44 | + NODE_DATA(nid) = memblock_alloc_node(sizeof(struct pglist_data), |
---|
| 45 | + SMP_CACHE_BYTES, nid); |
---|
| 46 | + if (!NODE_DATA(nid)) |
---|
| 47 | + panic("%s: Failed to allocate %zu bytes align=0x%x nid=%d\n", |
---|
| 48 | + __func__, sizeof(struct pglist_data), SMP_CACHE_BYTES, |
---|
| 49 | + nid); |
---|
47 | 50 | |
---|
48 | 51 | NODE_DATA(nid)->node_start_pfn = start_pfn; |
---|
49 | 52 | NODE_DATA(nid)->node_spanned_pages = end_pfn - start_pfn; |
---|
50 | 53 | |
---|
51 | 54 | /* It's up */ |
---|
52 | 55 | node_set_online(nid); |
---|
53 | | - |
---|
54 | | - /* Kick sparsemem */ |
---|
55 | | - sparse_memory_present_with_active_regions(nid); |
---|
56 | 56 | } |
---|