sparse-vmemmap.c (756a025f00091918d9d09ca3229defb160b409c0) | sparse-vmemmap.c (1170532bb49f9468aedabdc1d5a560e2521a2bcc) |
---|---|
1/* 2 * Virtual Memory Map support 3 * 4 * (C) 2007 sgi. Christoph Lameter. 5 * 6 * Virtual memory maps allow VM primitives pfn_to_page, page_to_pfn, 7 * virt_to_page, page_address() to be implemented as a base offset 8 * calculation without memory access. --- 152 unchanged lines hidden (view full) --- 161 162void __meminit vmemmap_verify(pte_t *pte, int node, 163 unsigned long start, unsigned long end) 164{ 165 unsigned long pfn = pte_pfn(*pte); 166 int actual_node = early_pfn_to_nid(pfn); 167 168 if (node_distance(actual_node, node) > LOCAL_DISTANCE) | 1/* 2 * Virtual Memory Map support 3 * 4 * (C) 2007 sgi. Christoph Lameter. 5 * 6 * Virtual memory maps allow VM primitives pfn_to_page, page_to_pfn, 7 * virt_to_page, page_address() to be implemented as a base offset 8 * calculation without memory access. --- 152 unchanged lines hidden (view full) --- 161 162void __meminit vmemmap_verify(pte_t *pte, int node, 163 unsigned long start, unsigned long end) 164{ 165 unsigned long pfn = pte_pfn(*pte); 166 int actual_node = early_pfn_to_nid(pfn); 167 168 if (node_distance(actual_node, node) > LOCAL_DISTANCE) |
169 printk(KERN_WARNING "[%lx-%lx] potential offnode page_structs\n", 170 start, end - 1); | 169 pr_warn("[%lx-%lx] potential offnode page_structs\n", 170 start, end - 1); |
171} 172 173pte_t * __meminit vmemmap_pte_populate(pmd_t *pmd, unsigned long addr, int node) 174{ 175 pte_t *pte = pte_offset_kernel(pmd, addr); 176 if (pte_none(*pte)) { 177 pte_t entry; 178 void *p = alloc_block_buf(PAGE_SIZE, node); --- 108 unchanged lines hidden (view full) --- 287 288 if (!present_section_nr(pnum)) 289 continue; 290 291 map_map[pnum] = sparse_mem_map_populate(pnum, nodeid); 292 if (map_map[pnum]) 293 continue; 294 ms = __nr_to_section(pnum); | 171} 172 173pte_t * __meminit vmemmap_pte_populate(pmd_t *pmd, unsigned long addr, int node) 174{ 175 pte_t *pte = pte_offset_kernel(pmd, addr); 176 if (pte_none(*pte)) { 177 pte_t entry; 178 void *p = alloc_block_buf(PAGE_SIZE, node); --- 108 unchanged lines hidden (view full) --- 287 288 if (!present_section_nr(pnum)) 289 continue; 290 291 map_map[pnum] = sparse_mem_map_populate(pnum, nodeid); 292 if (map_map[pnum]) 293 continue; 294 ms = __nr_to_section(pnum); |
295 printk(KERN_ERR "%s: sparsemem memory map backing failed some memory will not be available.\n", | 295 pr_err("%s: sparsemem memory map backing failed some memory will not be available\n", |
296 __func__); 297 ms->section_mem_map = 0; 298 } 299 300 if (vmemmap_buf_start) { 301 /* need to free left buf */ 302 memblock_free_early(__pa(vmemmap_buf), 303 vmemmap_buf_end - vmemmap_buf); 304 vmemmap_buf = NULL; 305 vmemmap_buf_end = NULL; 306 } 307} | 296 __func__); 297 ms->section_mem_map = 0; 298 } 299 300 if (vmemmap_buf_start) { 301 /* need to free left buf */ 302 memblock_free_early(__pa(vmemmap_buf), 303 vmemmap_buf_end - vmemmap_buf); 304 vmemmap_buf = NULL; 305 vmemmap_buf_end = NULL; 306 } 307} |