diff options
author | David S. Miller <davem@sunset.davemloft.net> | 2006-03-08 15:57:03 -0800 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2006-03-20 01:14:23 -0800 |
commit | 17b0e199a10184d8c5bbbd79a4cee993bb1fb257 (patch) | |
tree | c5cf39d072cf908e5b03216e1e1698bf85e86877 /include/asm-sparc64 | |
parent | d1112018b4bc82adf5c8a9c15a08954328f023ae (diff) | |
download | op-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