| .. | .. |
|---|
| 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 | } |
|---|