summaryrefslogtreecommitdiffstats
path: root/include/asm-powerpc
diff options
context:
space:
mode:
authorMichael Ellerman2006-02-28 04:54:26 +0100
committerPaul Mackerras2006-02-28 06:25:55 +0100
commit56ec6462af9cba56a04439154e5768672d6f390f (patch)
treeb2e63269452da95da566d5f675f1f8b277f7f72d /include/asm-powerpc
parent[PATCH] powerpc: fix NULL pointer in handle_eeh_events (diff)
downloadkernel-qcow2-linux-56ec6462af9cba56a04439154e5768672d6f390f.tar.gz
kernel-qcow2-linux-56ec6462af9cba56a04439154e5768672d6f390f.tar.xz
kernel-qcow2-linux-56ec6462af9cba56a04439154e5768672d6f390f.zip
[PATCH] powerpc/iseries: Fix double phys_to_abs bug in htab_bolt_mapping
Before the merge I updated create_pte_mapping() to work for iSeries, by calling iSeries_hpte_bolt_or_insert. (4c55130b2aa93370f1bf52d2304394e91cf8ee39) Later we changed iSeries_hpte_insert to cope with the bolting case, and called that instead from create_pte_mapping() (which was renamed to htab_bolt_mapping) (3c726f8dee6f55e96475574e9f645327e461884c). Unfortunately that change introduced a subtle bug, where we pass an absolute address to iSeries_hpte_insert() where it expects a physical address. This leads to us calling phys_to_abs() twice on the physical address, which is seriously bogus. This only causes a problem if the absolute address from the first translation can be looked up again in the chunk_map, which depends on the size and layout of memory. I've seen it fail on one box, but not others. The minimal fix is to pass the physical address to iSeries_hpte_insert(). For 2.6.17 we should make phys_to_abs() BUG if we try to double-translate an address. Signed-off-by: Michael Ellerman <michael@ellerman.id.au> Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'include/asm-powerpc')
0 files changed, 0 insertions, 0 deletions