Re: [PATCH] x86/platform/UV: Bring back the call to map_low_mmrs in uv_system_init

From: Ingo Molnar
Date: Thu May 05 2016 - 03:53:37 EST



* Alex Thorlton <athorlton@xxxxxxx> wrote:

> A while back, commit d394f2d9d8e1 ("x86/platform/UV: Remove EFI memmap
> quirk for UV2+") changed uv_system_init to only call map_low_mmrs on
> older UV1 hardware, which requires EFI_OLD_MEMMAP to be set in order to
> boot. The recent changes to the EFI memory mapping code in commit
> d2f7cbe7b26a ("x86/efi: Runtime services virtual mapping") exposed some
> issues with the fact that we were relying on the EFI memory mapping
> mechanisms to map in our MMRs for us, after commit d394f2d9d8e1.
>
> Rather than revert the entire commit and go back to forcing
> EFI_OLD_MEMMAP on all UVs, we're going to add the call to map_low_mmrs
> back into uv_system_init, and then fix up our EFI runtime calls to use
> the appropriate page table.
>
> For now, UV2+ will still need efi=old_map to boot, but there will be
> other changes soon that should eliminate the need for this.
>
> Signed-off-by: Alex Thorlton <athorlton@xxxxxxx>
> Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
> Cc: Ingo Molnar <mingo@xxxxxxxxxx>
> Cc: "H. Peter Anvin" <hpa@xxxxxxxxx>
> Cc: Matt Fleming <matt@xxxxxxxxxxxxxxxxxxx>
> Cc: Adam Buchbinder <adam.buchbinder@xxxxxxxxx>
> Cc: Len Brown <len.brown@xxxxxxxxx>
> Cc: Borislav Petkov <bp@xxxxxxx>
> Cc: Russ Anderson <rja@xxxxxxx>
> Cc: Dimitri Sivanich <sivanich@xxxxxxx>
> Cc: x86@xxxxxxxxxx
> ---
> arch/x86/kernel/apic/x2apic_uv_x.c | 4 +---
> 1 file changed, 1 insertion(+), 3 deletions(-)
>
> diff --git a/arch/x86/kernel/apic/x2apic_uv_x.c b/arch/x86/kernel/apic/x2apic_uv_x.c
> index 8f4942e..d7ce96a 100644
> --- a/arch/x86/kernel/apic/x2apic_uv_x.c
> +++ b/arch/x86/kernel/apic/x2apic_uv_x.c
> @@ -891,9 +891,7 @@ void __init uv_system_init(void)
> }
> pr_info("UV: Found %s hub\n", hub);
>
> - /* We now only need to map the MMRs on UV1 */
> - if (is_uv1_hub())
> - map_low_mmrs();
> + map_low_mmrs();
>
> m_n_config.v = uv_read_local_mmr(UVH_RH_GAM_CONFIG_MMR );
> m_val = m_n_config.s.m_skt;

I suppose this patch should go upstream via x86/urgent, as both of the dependent
commits are already upstream:

d2f7cbe7b26a x86/efi: Runtime services virtual mapping
d394f2d9d8e1 x86/platform/UV: Remove EFI memmap quirk for UV2+

... right?

Thanks,

Ingo