summaryrefslogtreecommitdiffstats
path: root/include/asm-sparc64
diff options
context:
space:
mode:
authorDavid S. Miller <davem@sunset.davemloft.net>2006-03-08 15:57:03 -0800
committerDavid S. Miller <davem@sunset.davemloft.net>2006-03-20 01:14:23 -0800
commit17b0e199a10184d8c5bbbd79a4cee993bb1fb257 (patch)
treec5cf39d072cf908e5b03216e1e1698bf85e86877 /include/asm-sparc64
parentd1112018b4bc82adf5c8a9c15a08954328f023ae (diff)
downloadop-kernel-dev-17b0e199a10184d8c5bbbd79a4cee993bb1fb257.zip
op-kernel-dev-17b0e199a10184d8c5bbbd79a4cee993bb1fb257.tar.gz
[SPARC64]: Fix 32-bit truncation which broke sparsemem.
The page->flags manipulations done by the D-cache dirty state tracking was broken because the constants were not marked with "UL" to make them 64-bit, which means we were clobbering the upper 32-bits of page->flags all the time. This doesn't jive well with sparsemem which stores the section and indexing information in the top 32-bits of page->flags. This is yet another sparc64 bug which has been with us forever. While we're here, tidy up some things in bootmem_init() and paginig_init(): 1) Pass min_low_pfn to init_bootmem_node(), it's identical to (phys_base >> PAGE_SHIFT) but we should use consistent with the variable names we print in CONFIG_BOOTMEM_DEBUG 2) max_mapnr, although no longer used, was being set inaccurately, we shouldn't subtract pfn_base any more. 3) All the games with phys_base in the zones_*[] arrays we pass to free_area_init_node() are no longer necessary. Thanks to Josh Grebe and Fabbione for the bug reports and testing. Fix also verified locally on an SB2500 which had a memory layout that triggered the same problem. Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/asm-sparc64')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud