Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp719466ybt; Wed, 1 Jul 2020 08:27:47 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyCVw0tDVQ8q3RxH1WIhnZcGjJ/B6FwE1oDWPDVHIWsM2RKv622kH4K73nMltdnyUvhrhmG X-Received: by 2002:a50:88e1:: with SMTP id d88mr29787276edd.74.1593617266954; Wed, 01 Jul 2020 08:27:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1593617266; cv=none; d=google.com; s=arc-20160816; b=Dho2iCxnmti+lxxsSZxwkcbh8NtMaaIJpFGHXLw9kh0hrkrh/20rJv/BovYr8H6shZ AqK2neOdSf4m8sO68ZsNq/Pgcz1ORfVO79qGxdZCkfFEq/y0OJE433wEwQVssBxO1R/7 qBMPQaosTjnyIgRM54yFMmEJGf2QDFD10YLGZPBxq4yto7GsYKXdcopzUdXyDjpHyJvx bKW6OOfjo8iwI48uRL9AhUuwdl/7lVElpK2VNR9PMiLOauJC57S3WjsyeNIACIl4JLN0 zQXoH8WBdJI9u1l/E642wrIAo7z0MbGbr0GL+HNOpBeYuuXaxzs5t8nVuAlCZzTlwNOQ XnJw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=3csL+sEW9EtyxFcarcRVAV9qSfTD2xTHOC1F2WH2pJg=; b=Zu8nODMVi5p14KG3kbUeVJJXc/HyxENlfRJs/0ZZz+IpR19haI4DvFGhZ3BOSq9CPm zVBA3BFXy5OQLk36wBn1W36x3biWRBd0FJVljT3kd3LVk8kaY/ugzzx9iUWqDoQc+DKi TowQi2DKoorH9wwAa5/l+SENLGMg0k17zQ4UE8lfU0Hpk8tH6nJhged05sKoPpwJ6Eqo 8LkPeOpIuoKb/ZVQPkGegT/Pq0ZV02KbueO+W8g/lvJXZKNozjESxi0Zn8w08uigmTxx TdunEsN2/fhnwvoP02+hCfvBPv+BQoiPVr0NeAbTwjqK8ePHjCti0nsP4IEDy/Z8gjA7 +tiQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=M5yhaRzN; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id co20si3954624edb.131.2020.07.01.08.27.23; Wed, 01 Jul 2020 08:27:46 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=M5yhaRzN; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731794AbgGAP1B (ORCPT + 99 others); Wed, 1 Jul 2020 11:27:01 -0400 Received: from mail.kernel.org ([198.145.29.99]:56092 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731648AbgGAP1A (ORCPT ); Wed, 1 Jul 2020 11:27:00 -0400 Received: from mail-ot1-f49.google.com (mail-ot1-f49.google.com [209.85.210.49]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id C11FB20760; Wed, 1 Jul 2020 15:26:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1593617219; bh=Oa6a2Qzn/MoTE1lw9BpNRadpq5vVpTNDMhhVIVB/lwg=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=M5yhaRzNZGUMYUaKz0WPmaLoe0gifX7v1ow+0tBxtC1LqmUc16dy4CdDVQnYBxU8N cfDVcdmi/eFGdPEmxiSLR+aZGFuZ8CcCf7XKIUo7AXyN7D+0035rKLpGHDUb/KPE0c 0aLN8oqQiS77R2sn5Ev83eRMAKFB9E3wxLFFDgws= Received: by mail-ot1-f49.google.com with SMTP id t18so8904586otq.5; Wed, 01 Jul 2020 08:26:59 -0700 (PDT) X-Gm-Message-State: AOAM533IzNHwrSJykwDdJVmCxn1ru5cfo36Fud6OTvhLWyIC9iebHR9P RcpXkwZoBsJ00Bi8XaD1WDpDk37MeBZIM31jBfQ= X-Received: by 2002:a9d:4a8f:: with SMTP id i15mr24510513otf.77.1593617218421; Wed, 01 Jul 2020 08:26:58 -0700 (PDT) MIME-Version: 1.0 References: <20200701141731.377252388@hpe.com> <20200701141732.832256169@hpe.com> In-Reply-To: <20200701141732.832256169@hpe.com> From: Ard Biesheuvel Date: Wed, 1 Jul 2020 17:26:47 +0200 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [patch 11/13] Remove references to no-longer-used efi_have_uv1_memmap() To: Steve Wahl Cc: Jonathan Corbet , Thomas Gleixner , Ingo Molnar , Borislav Petkov , X86 ML , "H. Peter Anvin" , Darren Hart , Andy Shevchenko , Mauro Carvalho Chehab , Andrew Morton , Greg Kroah-Hartman , "Paul E. McKenney" , Pawan Gupta , Juergen Gross , Mike Kravetz , Oliver Neukum , Mike Travis , Dimitri Sivanich , Benjamin Thiel , Andy Lutomirski , Arnd Bergmann , James Morris , David Howells , Kees Cook , Dave Young , Dan Williams , Logan Gunthorpe , Alexandre Chartre , "Peter Zijlstra (Intel)" , Austin Kim , Alexey Dobriyan , Linux Doc Mailing List , Linux Kernel Mailing List , linux-efi , Russ Anderson Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, 1 Jul 2020 at 16:18, wrote: > > In removing UV1 support, efi_have_uv1_memmap is no longer used. > > Signed-off-by: Steve Wahl Reviewed-by: Ard Biesheuvel > --- > arch/x86/kernel/kexec-bzimage64.c | 9 --------- > arch/x86/platform/efi/efi.c | 14 +++----------- > arch/x86/platform/efi/efi_64.c | 38 +++----------------------------------- > arch/x86/platform/efi/quirks.c | 8 -------- > 4 files changed, 6 insertions(+), 63 deletions(-) > > --- linux.orig/arch/x86/kernel/kexec-bzimage64.c 2020-06-25 13:17:57.780344455 -0500 > +++ linux/arch/x86/kernel/kexec-bzimage64.c 2020-06-25 14:13:03.012966676 -0500 > @@ -170,15 +170,6 @@ setup_efi_state(struct boot_params *para > if (!current_ei->efi_memmap_size) > return 0; > > - /* > - * If 1:1 mapping is not enabled, second kernel can not setup EFI > - * and use EFI run time services. User space will have to pass > - * acpi_rsdp= on kernel command line to make second kernel boot > - * without efi. > - */ > - if (efi_have_uv1_memmap()) > - return 0; > - > params->secure_boot = boot_params.secure_boot; > ei->efi_loader_signature = current_ei->efi_loader_signature; > ei->efi_systab = current_ei->efi_systab; > --- linux.orig/arch/x86/platform/efi/efi.c 2020-06-25 13:17:57.780344455 -0500 > +++ linux/arch/x86/platform/efi/efi.c 2020-06-25 15:44:12.355019679 -0500 > @@ -648,7 +648,7 @@ static inline void *efi_map_next_entry_r > */ > static void *efi_map_next_entry(void *entry) > { > - if (!efi_have_uv1_memmap() && efi_enabled(EFI_64BIT)) { > + if (efi_enabled(EFI_64BIT)) { > /* > * Starting in UEFI v2.5 the EFI_PROPERTIES_TABLE > * config table feature requires us to map all entries > @@ -777,11 +777,9 @@ static void __init kexec_enter_virtual_m > > /* > * We don't do virtual mode, since we don't do runtime services, on > - * non-native EFI. With the UV1 memmap, we don't do runtime services in > - * kexec kernel because in the initial boot something else might > - * have been mapped at these virtual addresses. > + * non-native EFI. > */ > - if (efi_is_mixed() || efi_have_uv1_memmap()) { > + if (efi_is_mixed()) { > efi_memmap_unmap(); > clear_bit(EFI_RUNTIME_SERVICES, &efi.flags); > return; > @@ -832,12 +830,6 @@ static void __init kexec_enter_virtual_m > * has the runtime attribute bit set in its memory descriptor into the > * efi_pgd page table. > * > - * The old method which used to update that memory descriptor with the > - * virtual address obtained from ioremap() is still supported when the > - * kernel is booted on SG1 UV1 hardware. Same old method enabled the > - * runtime services to be called without having to thunk back into > - * physical mode for every invocation. > - * > * The new method does a pagetable switch in a preemption-safe manner > * so that we're in a different address space when calling a runtime > * function. For function arguments passing we do copy the PUDs of the > --- linux.orig/arch/x86/platform/efi/efi_64.c 2020-06-25 13:17:57.780344455 -0500 > +++ linux/arch/x86/platform/efi/efi_64.c 2020-06-25 14:13:03.044966641 -0500 > @@ -74,9 +74,6 @@ int __init efi_alloc_page_tables(void) > pud_t *pud; > gfp_t gfp_mask; > > - if (efi_have_uv1_memmap()) > - return 0; > - > gfp_mask = GFP_KERNEL | __GFP_ZERO; > efi_pgd = (pgd_t *)__get_free_pages(gfp_mask, PGD_ALLOCATION_ORDER); > if (!efi_pgd) > @@ -115,9 +112,6 @@ void efi_sync_low_kernel_mappings(void) > pud_t *pud_k, *pud_efi; > pgd_t *efi_pgd = efi_mm.pgd; > > - if (efi_have_uv1_memmap()) > - return; > - > /* > * We can share all PGD entries apart from the one entry that > * covers the EFI runtime mapping space. > @@ -206,9 +200,6 @@ int __init efi_setup_page_tables(unsigne > unsigned npages; > pgd_t *pgd = efi_mm.pgd; > > - if (efi_have_uv1_memmap()) > - return 0; > - > /* > * It can happen that the physical address of new_memmap lands in memory > * which is not mapped in the EFI page table. Therefore we need to go > @@ -315,9 +306,6 @@ void __init efi_map_region(efi_memory_de > unsigned long size = md->num_pages << PAGE_SHIFT; > u64 pa = md->phys_addr; > > - if (efi_have_uv1_memmap()) > - return old_map_region(md); > - > /* > * Make sure the 1:1 mappings are present as a catch-all for b0rked > * firmware which doesn't update all internal pointers after switching > @@ -420,12 +408,6 @@ void __init efi_runtime_update_mappings( > { > efi_memory_desc_t *md; > > - if (efi_have_uv1_memmap()) { > - if (__supported_pte_mask & _PAGE_NX) > - runtime_code_page_mkexec(); > - return; > - } > - > /* > * Use the EFI Memory Attribute Table for mapping permissions if it > * exists, since it is intended to supersede EFI_PROPERTIES_TABLE. > @@ -474,10 +456,7 @@ void __init efi_runtime_update_mappings( > void __init efi_dump_pagetable(void) > { > #ifdef CONFIG_EFI_PGT_DUMP > - if (efi_have_uv1_memmap()) > - ptdump_walk_pgd_level(NULL, &init_mm); > - else > - ptdump_walk_pgd_level(NULL, &efi_mm); > + ptdump_walk_pgd_level(NULL, &efi_mm); > #endif > } > > @@ -849,21 +828,13 @@ efi_set_virtual_address_map(unsigned lon > const efi_system_table_t *systab = (efi_system_table_t *)systab_phys; > efi_status_t status; > unsigned long flags; > - pgd_t *save_pgd = NULL; > > if (efi_is_mixed()) > return efi_thunk_set_virtual_address_map(memory_map_size, > descriptor_size, > descriptor_version, > virtual_map); > - > - if (efi_have_uv1_memmap()) { > - save_pgd = efi_uv1_memmap_phys_prolog(); > - if (!save_pgd) > - return EFI_ABORTED; > - } else { > - efi_switch_mm(&efi_mm); > - } > + efi_switch_mm(&efi_mm); > > kernel_fpu_begin(); > > @@ -879,10 +850,7 @@ efi_set_virtual_address_map(unsigned lon > /* grab the virtually remapped EFI runtime services table pointer */ > efi.runtime = READ_ONCE(systab->runtime); > > - if (save_pgd) > - efi_uv1_memmap_phys_epilog(save_pgd); > - else > - efi_switch_mm(efi_scratch.prev_mm); > + efi_switch_mm(efi_scratch.prev_mm); > > return status; > } > --- linux.orig/arch/x86/platform/efi/quirks.c 2020-06-25 14:11:39.301053295 -0500 > +++ linux/arch/x86/platform/efi/quirks.c 2020-06-25 14:13:03.048966638 -0500 > @@ -381,14 +381,6 @@ static void __init efi_unmap_pages(efi_m > u64 va = md->virt_addr; > > /* > - * To Do: Remove this check after adding functionality to unmap EFI boot > - * services code/data regions from direct mapping area because the UV1 > - * memory map maps EFI regions in swapper_pg_dir. > - */ > - if (efi_have_uv1_memmap()) > - return; > - > - /* > * EFI mixed mode has all RAM mapped to access arguments while making > * EFI runtime calls, hence don't unmap EFI boot services code/data > * regions. >