x86, UV: Delete mapping of MMR rangs mapped by BIOS
Subsystems (3)
PATCH 1/1 x86, UV: Delete mapping of MMR rangs mapped by BIOS
The UV BIOS has added additional MMR ranges that are mapped via EFI virtual mode mappings. These ranges should be deleted from ranges mapped by uv_system_init().
Signed-off-by Jack Steiner <[email protected]>
--- arch/x86/kernel/apic/x2apic_uv_x.c | 31 +------------------------------ 1 file changed, 1 insertion(+), 30 deletions(-)
arch/x86/kernel/apic/x2apic_uv_x.c +1 -30
@@ -363,12 +363,6 @@ static __init void get_lowmem_redirect(upanic ("get_lowmem_redirect: no match!" ); } -static __init void map_low_mmrs (void ) -{ -init_extra_mapping_uc (UV_GLOBAL_MMR32_BASE ,UV_GLOBAL_MMR32_SIZE ); -init_extra_mapping_uc (UV_LOCAL_MMR_BASE ,UV_LOCAL_MMR_SIZE ); -} -enum map_type {map_wb, map_uc}; static __init void map_high(char *id, unsigned long base, int shift,
@@ -396,26 +390,6 @@ static __init void map_gru_high(int max_map_high ("GRU" , gru.s.base, shift, max_pnode, map_wb); } -static __init void map_config_high (int max_pnode) -{ -union uvh_rh_gam_cfg_overlay_config_mmr_u cfg; -int shift =UVH_RH_GAM_CFG_OVERLAY_CONFIG_MMR_BASE_SHFT ; - - cfg.v =uv_read_local_mmr (UVH_RH_GAM_CFG_OVERLAY_CONFIG_MMR ); -if (cfg.s.enable) -map_high ("CONFIG" , cfg.s.base, shift, max_pnode, map_uc); -} - -static __init void map_mmr_high (int max_pnode) -{ -union uvh_rh_gam_mmr_overlay_config_mmr_u mmr; -int shift =UVH_RH_GAM_MMR_OVERLAY_CONFIG_MMR_BASE_SHFT ; - - mmr.v =uv_read_local_mmr (UVH_RH_GAM_MMR_OVERLAY_CONFIG_MMR ); -if (mmr.s.enable) -map_high ("MMR" , mmr.s.base, shift, max_pnode, map_uc); -} -static __init void map_mmioh_high (int max_pnode) {union uvh_rh_gam_mmioh_overlay_config_mmr_u mmioh;
@@ -567,8 +541,6 @@ void __init uv_system_init(void)unsigned long mmr_base, present, paddr;unsigned short pnode_mask; -map_low_mmrs (); - m_n_config.v =uv_read_local_mmr (UVH_SI_ADDR_MAP_CONFIG ); m_val = m_n_config.s.m_skt; n_val = m_n_config.s.n_skt;
@@ -668,11 +640,10 @@ void __init uv_system_init(void) pnode = (paddr >> m_val) & pnode_mask; blade =boot_pnode_to_blade (pnode); uv_node_to_blade[nid] = blade; + max_pnode =max (pnode, max_pnode); }map_gru_high (max_pnode); -map_mmr_high (max_pnode); -map_config_high (max_pnode);map_mmioh_high (max_pnode);uv_cpu_init ();
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Commit-ID: cc5e4fa1bd4d2f56da07f9092281afdcd2374ab9 Gitweb: http://git.kernel.org/tip/cc5e4fa1bd4d2f56da07f9092281afdcd2374ab9 Author: Jack Steiner <[email protected]> AuthorDate: Mon, 27 Jul 2009 09:36:56 -0500 Committer: Ingo Molnar <[email protected]> CommitDate: Tue, 4 Aug 2009 16:18:02 +0200
x86, UV: Delete mapping of MMR rangs mapped by BIOS
The UV BIOS has added additional MMR ranges that are mapped via EFI virtual mode mappings. These ranges should be deleted from ranges mapped by uv_system_init().
Signed-off-by Jack Steiner <[email protected]>
LKML-Reference: <[email protected]>
Signed-off-by Ingo Molnar <[email protected]>
--- arch/x86/kernel/apic/x2apic_uv_x.c | 31 +------------------------------ 1 files changed, 1 insertions(+), 30 deletions(-)
arch/x86/kernel/apic/x2apic_uv_x.c +1 -30
@@ -362,12 +362,6 @@ static __init void get_lowmem_redirect(unsigned long *base, unsigned long *size)BUG (); } -static __init void map_low_mmrs (void ) -{ -init_extra_mapping_uc (UV_GLOBAL_MMR32_BASE ,UV_GLOBAL_MMR32_SIZE ); -init_extra_mapping_uc (UV_LOCAL_MMR_BASE ,UV_LOCAL_MMR_SIZE ); -} -enum map_type {map_wb, map_uc}; static __init void map_high(char *id, unsigned long base, int shift,
@@ -395,26 +389,6 @@ static __init void map_gru_high(int max_pnode)map_high ("GRU" , gru.s.base, shift, max_pnode, map_wb); } -static __init void map_config_high (int max_pnode) -{ -union uvh_rh_gam_cfg_overlay_config_mmr_u cfg; -int shift =UVH_RH_GAM_CFG_OVERLAY_CONFIG_MMR_BASE_SHFT ; - - cfg.v =uv_read_local_mmr (UVH_RH_GAM_CFG_OVERLAY_CONFIG_MMR ); -if (cfg.s.enable) -map_high ("CONFIG" , cfg.s.base, shift, max_pnode, map_uc); -} - -static __init void map_mmr_high (int max_pnode) -{ -union uvh_rh_gam_mmr_overlay_config_mmr_u mmr; -int shift =UVH_RH_GAM_MMR_OVERLAY_CONFIG_MMR_BASE_SHFT ; - - mmr.v =uv_read_local_mmr (UVH_RH_GAM_MMR_OVERLAY_CONFIG_MMR ); -if (mmr.s.enable) -map_high ("MMR" , mmr.s.base, shift, max_pnode, map_uc); -} -static __init void map_mmioh_high (int max_pnode) {union uvh_rh_gam_mmioh_overlay_config_mmr_u mmioh;
@@ -566,8 +540,6 @@ void __init uv_system_init(void)unsigned long mmr_base, present, paddr;unsigned short pnode_mask; -map_low_mmrs (); - m_n_config.v =uv_read_local_mmr (UVH_SI_ADDR_MAP_CONFIG ); m_val = m_n_config.s.m_skt; n_val = m_n_config.s.n_skt;
@@ -667,11 +639,10 @@ void __init uv_system_init(void) pnode = (paddr >> m_val) & pnode_mask; blade =boot_pnode_to_blade (pnode); uv_node_to_blade[nid] = blade; + max_pnode =max (pnode, max_pnode); }map_gru_high (max_pnode); -map_mmr_high (max_pnode); -map_config_high (max_pnode);map_mmioh_high (max_pnode);uv_cpu_init ();