diff options
| author | Jack Steiner <steiner@sgi.com> | 2009-09-09 11:43:39 -0400 |
|---|---|---|
| committer | Ingo Molnar <mingo@elte.hu> | 2009-09-18 08:06:40 -0400 |
| commit | daf7b9c9216e2b82e4c14b7248a85286dab021c3 (patch) | |
| tree | 4e9e085514a56cc9c15332c91ab249de8eb5d9ab | |
| parent | 8dc579e868addafd24c0a015c12f0e536b1084b1 (diff) | |
x86: SGI UV: Map MMIO-High memory range
UV depends on the MMRHI space being identity mapped. The patch:
x86: Make 64-bit efi_ioremap use ioremap on MMIO regions
changed this to make efi regions at a different address using
ioremap. Add the identity mapping to uv_system_init.
( Note this code was previously present but was deleted when BIOS
added the ranges to the EFI map - previous efi code identify
mapped the ranges. )
Signed-off-by: Jack Steiner <steiner@sgi.com>
LKML-Reference: <20090909154339.GA7946@sgi.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
| -rw-r--r-- | arch/x86/kernel/apic/x2apic_uv_x.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/arch/x86/kernel/apic/x2apic_uv_x.c b/arch/x86/kernel/apic/x2apic_uv_x.c index 601159374e87..f5f5886a6b53 100644 --- a/arch/x86/kernel/apic/x2apic_uv_x.c +++ b/arch/x86/kernel/apic/x2apic_uv_x.c | |||
| @@ -389,6 +389,16 @@ static __init void map_gru_high(int max_pnode) | |||
| 389 | map_high("GRU", gru.s.base, shift, max_pnode, map_wb); | 389 | map_high("GRU", gru.s.base, shift, max_pnode, map_wb); |
| 390 | } | 390 | } |
| 391 | 391 | ||
| 392 | static __init void map_mmr_high(int max_pnode) | ||
| 393 | { | ||
| 394 | union uvh_rh_gam_mmr_overlay_config_mmr_u mmr; | ||
| 395 | int shift = UVH_RH_GAM_MMR_OVERLAY_CONFIG_MMR_BASE_SHFT; | ||
| 396 | |||
| 397 | mmr.v = uv_read_local_mmr(UVH_RH_GAM_MMR_OVERLAY_CONFIG_MMR); | ||
| 398 | if (mmr.s.enable) | ||
| 399 | map_high("MMR", mmr.s.base, shift, max_pnode, map_uc); | ||
| 400 | } | ||
| 401 | |||
| 392 | static __init void map_mmioh_high(int max_pnode) | 402 | static __init void map_mmioh_high(int max_pnode) |
| 393 | { | 403 | { |
| 394 | union uvh_rh_gam_mmioh_overlay_config_mmr_u mmioh; | 404 | union uvh_rh_gam_mmioh_overlay_config_mmr_u mmioh; |
| @@ -643,6 +653,7 @@ void __init uv_system_init(void) | |||
| 643 | } | 653 | } |
| 644 | 654 | ||
| 645 | map_gru_high(max_pnode); | 655 | map_gru_high(max_pnode); |
| 656 | map_mmr_high(max_pnode); | ||
| 646 | map_mmioh_high(max_pnode); | 657 | map_mmioh_high(max_pnode); |
| 647 | 658 | ||
| 648 | uv_cpu_init(); | 659 | uv_cpu_init(); |
