diff options
author | Liang Li <[email protected]> | 2010-04-30 18:01:51 +0800 |
---|---|---|
committer | Ingo Molnar <[email protected]> | 2010-04-30 12:19:53 +0200 |
commit | e67a807f3d9a82fa91817871f1c0e2e04da993b8 (patch) | |
tree | a11fc1799ae2e3dea2f42f87b078f0864039340d /tools/perf/scripts/python/Perf-Trace-Util/lib | |
parent | 66f41d4c5c8a5deed66fdcc84509376c9a0bf9d8 (diff) |
x86: Fix 'reservetop=' functionality
When specifying the 'reservetop=0xbadc0de' kernel parameter,
the kernel will stop booting due to a early_ioremap bug that
relates to commit 8827247ff.
The root cause of boot failure problem is the value of
'slot_virt[i]' was initialized in setup_arch->early_ioremap_init().
But later in setup_arch, the function 'parse_early_param' will
modify 'FIXADDR_TOP' when 'reservetop=0xbadc0de' being specified.
The simplest fix might be use __fix_to_virt(idx0) to get updated
value of 'FIXADDR_TOP' in '__early_ioremap' instead of reference
old value from slot_virt[slot] directly.
Changelog since v0:
-v1: When reservetop being handled then FIXADDR_TOP get
adjusted, Hence check prev_map then re-initialize slot_virt and
PMD based on new FIXADDR_TOP.
-v2: place fixup_early_ioremap hence call early_ioremap_init in
reserve_top_address to re-initialize slot_virt and
corresponding PMD when parse_reservertop
-v3: move fixup_early_ioremap out of reserve_top_address to make
sure other clients of reserve_top_address like xen/lguest won't
broken
Signed-off-by: Liang Li <[email protected]>
Tested-by: Konrad Rzeszutek Wilk <[email protected]>
Acked-by: Yinghai Lu <[email protected]>
Acked-by: Jeremy Fitzhardinge <[email protected]>
Cc: Wang Chen <[email protected]>
Cc: "H. Peter Anvin" <[email protected]>
Cc: Andrew Morton <[email protected]>
LKML-Reference: <[email protected]>
[ fixed three small cleanliness details in fixup_early_ioremap() ]
Signed-off-by: Ingo Molnar <[email protected]>
Diffstat (limited to 'tools/perf/scripts/python/Perf-Trace-Util/lib')
0 files changed, 0 insertions, 0 deletions