All of lore.kernel.org
 help / color / mirror / Atom feed
From: steve.wahl@hpe.com
To: Steve Wahl <steve.wahl@hpe.com>, Jonathan Corbet <corbet@lwn.net>,
	Ard Biesheuvel <ardb@kernel.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>,
	x86@kernel.org, "H. Peter Anvin" <hpa@zytor.com>,
	Darren Hart <dvhart@infradead.org>,
	Andy Shevchenko <andy@infradead.org>,
	Mauro Carvalho Chehab <mchehab+huawei@kernel.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	"Paul E. McKenney" <paulmck@kernel.org>,
	Pawan Gupta <pawan.kumar.gupta@linux.intel.com>,
	Juergen Gross <jgross@suse.com>,
	Mike Kravetz <mike.kravetz@oracle.com>,
	Oliver Neukum <oneukum@suse.com>,
	Mike Travis <mike.travis@hpe.com>,
	Dimitri Sivanich <dimitri.sivanich@hpe.com>,
	Benjamin Thiel <b.thiel@posteo.de>,
	Andy Lutomirski <luto@kernel.org>, Arnd Bergmann <arnd@arndb.de>,
	James Morris <jmorris@namei.org>,
	David Howells <dhowells@redhat.com>,
	Kees Cook <keescook@chromium.org>, Dave Young <dyoung@redhat.com>,
	Dan Williams <dan.j.williams@intel.com>,
	Logan Gunthorpe <logang@deltatee.com>,
	Alexandre Chartre <alexandre.chartre@oracle.com>,
	"Peter Zijlstra (Intel)" <peterz@infradead.org>,
	Austin Kim <austindh.kim@gmail.com>,
	Alexey Dobriyan <adobriyan@gmail.com>,
	linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-efi@vger.kernel.org
Cc: Russ Anderson <rja@hpe.com>
Subject: [patch v3 12/13] x86: Remove uv bios and efi code related to (now unused) EFI_UV1_MEMMAP
Date: Mon, 13 Jul 2020 16:30:06 -0500	[thread overview]
Message-ID: <20200713212955.902592618@hpe.com> (raw)
In-Reply-To: 20200713212954.444086564@hpe.com

With UV1 removed, EFI_UV1_MEMMAP is not used.  Remove code used by it
in arch/x86/platform/uv/bios_uv.c and turn off code in
arch/x86/platform/efi/efi.c that referenced this code.

Signed-off-by: Steve Wahl <steve.wahl@hpe.com>
Reviewed-by: Ard Biesheuvel <ardb@kernel.org>
---
 arch/x86/platform/efi/efi.c    |    2 
 arch/x86/platform/uv/bios_uv.c |  159 -----------------------------------------
 2 files changed, 2 insertions(+), 159 deletions(-)

--- linux.orig/arch/x86/platform/uv/bios_uv.c	2020-07-07 10:56:15.025045961 -0500
+++ linux/arch/x86/platform/uv/bios_uv.c	2020-07-07 10:56:15.613045257 -0500
@@ -30,17 +30,7 @@ static s64 __uv_bios_call(enum uv_bios_c
 		 */
 		return BIOS_STATUS_UNIMPLEMENTED;
 
-	/*
-	 * If EFI_UV1_MEMMAP is set, we need to fall back to using our old EFI
-	 * callback method, which uses efi_call() directly, with the kernel page tables:
-	 */
-	if (unlikely(efi_enabled(EFI_UV1_MEMMAP))) {
-		kernel_fpu_begin();
-		ret = efi_call((void *)__va(tab->function), (u64)which, a1, a2, a3, a4, a5);
-		kernel_fpu_end();
-	} else {
-		ret = efi_call_virt_pointer(tab, function, (u64)which, a1, a2, a3, a4, a5);
-	}
+	ret = efi_call_virt_pointer(tab, function, (u64)which, a1, a2, a3, a4, a5);
 
 	return ret;
 }
@@ -209,150 +199,3 @@ int uv_bios_init(void)
 	pr_info("UV: UVsystab: Revision:%x\n", uv_systab->revision);
 	return 0;
 }
-
-static void __init early_code_mapping_set_exec(int executable)
-{
-	efi_memory_desc_t *md;
-
-	if (!(__supported_pte_mask & _PAGE_NX))
-		return;
-
-	/* Make EFI service code area executable */
-	for_each_efi_memory_desc(md) {
-		if (md->type == EFI_RUNTIME_SERVICES_CODE ||
-		    md->type == EFI_BOOT_SERVICES_CODE)
-			efi_set_executable(md, executable);
-	}
-}
-
-void __init efi_uv1_memmap_phys_epilog(pgd_t *save_pgd)
-{
-	/*
-	 * After the lock is released, the original page table is restored.
-	 */
-	int pgd_idx, i;
-	int nr_pgds;
-	pgd_t *pgd;
-	p4d_t *p4d;
-	pud_t *pud;
-
-	nr_pgds = DIV_ROUND_UP((max_pfn << PAGE_SHIFT) , PGDIR_SIZE);
-
-	for (pgd_idx = 0; pgd_idx < nr_pgds; pgd_idx++) {
-		pgd = pgd_offset_k(pgd_idx * PGDIR_SIZE);
-		set_pgd(pgd_offset_k(pgd_idx * PGDIR_SIZE), save_pgd[pgd_idx]);
-
-		if (!pgd_present(*pgd))
-			continue;
-
-		for (i = 0; i < PTRS_PER_P4D; i++) {
-			p4d = p4d_offset(pgd,
-					 pgd_idx * PGDIR_SIZE + i * P4D_SIZE);
-
-			if (!p4d_present(*p4d))
-				continue;
-
-			pud = (pud_t *)p4d_page_vaddr(*p4d);
-			pud_free(&init_mm, pud);
-		}
-
-		p4d = (p4d_t *)pgd_page_vaddr(*pgd);
-		p4d_free(&init_mm, p4d);
-	}
-
-	kfree(save_pgd);
-
-	__flush_tlb_all();
-	early_code_mapping_set_exec(0);
-}
-
-pgd_t * __init efi_uv1_memmap_phys_prolog(void)
-{
-	unsigned long vaddr, addr_pgd, addr_p4d, addr_pud;
-	pgd_t *save_pgd, *pgd_k, *pgd_efi;
-	p4d_t *p4d, *p4d_k, *p4d_efi;
-	pud_t *pud;
-
-	int pgd;
-	int n_pgds, i, j;
-
-	early_code_mapping_set_exec(1);
-
-	n_pgds = DIV_ROUND_UP((max_pfn << PAGE_SHIFT), PGDIR_SIZE);
-	save_pgd = kmalloc_array(n_pgds, sizeof(*save_pgd), GFP_KERNEL);
-	if (!save_pgd)
-		return NULL;
-
-	/*
-	 * Build 1:1 identity mapping for UV1 memmap usage. Note that
-	 * PAGE_OFFSET is PGDIR_SIZE aligned when KASLR is disabled, while
-	 * it is PUD_SIZE ALIGNED with KASLR enabled. So for a given physical
-	 * address X, the pud_index(X) != pud_index(__va(X)), we can only copy
-	 * PUD entry of __va(X) to fill in pud entry of X to build 1:1 mapping.
-	 * This means here we can only reuse the PMD tables of the direct mapping.
-	 */
-	for (pgd = 0; pgd < n_pgds; pgd++) {
-		addr_pgd = (unsigned long)(pgd * PGDIR_SIZE);
-		vaddr = (unsigned long)__va(pgd * PGDIR_SIZE);
-		pgd_efi = pgd_offset_k(addr_pgd);
-		save_pgd[pgd] = *pgd_efi;
-
-		p4d = p4d_alloc(&init_mm, pgd_efi, addr_pgd);
-		if (!p4d) {
-			pr_err("Failed to allocate p4d table!\n");
-			goto out;
-		}
-
-		for (i = 0; i < PTRS_PER_P4D; i++) {
-			addr_p4d = addr_pgd + i * P4D_SIZE;
-			p4d_efi = p4d + p4d_index(addr_p4d);
-
-			pud = pud_alloc(&init_mm, p4d_efi, addr_p4d);
-			if (!pud) {
-				pr_err("Failed to allocate pud table!\n");
-				goto out;
-			}
-
-			for (j = 0; j < PTRS_PER_PUD; j++) {
-				addr_pud = addr_p4d + j * PUD_SIZE;
-
-				if (addr_pud > (max_pfn << PAGE_SHIFT))
-					break;
-
-				vaddr = (unsigned long)__va(addr_pud);
-
-				pgd_k = pgd_offset_k(vaddr);
-				p4d_k = p4d_offset(pgd_k, vaddr);
-				pud[j] = *pud_offset(p4d_k, vaddr);
-			}
-		}
-		pgd_offset_k(pgd * PGDIR_SIZE)->pgd &= ~_PAGE_NX;
-	}
-
-	__flush_tlb_all();
-	return save_pgd;
-out:
-	efi_uv1_memmap_phys_epilog(save_pgd);
-	return NULL;
-}
-
-void __iomem *__init efi_ioremap(unsigned long phys_addr, unsigned long size,
-				 u32 type, u64 attribute)
-{
-	unsigned long last_map_pfn;
-
-	if (type == EFI_MEMORY_MAPPED_IO)
-		return ioremap(phys_addr, size);
-
-	last_map_pfn = init_memory_mapping(phys_addr, phys_addr + size,
-					   PAGE_KERNEL);
-	if ((last_map_pfn << PAGE_SHIFT) < phys_addr + size) {
-		unsigned long top = last_map_pfn << PAGE_SHIFT;
-		efi_ioremap(top, size - (top - phys_addr), type, attribute);
-	}
-
-	if (!(attribute & EFI_MEMORY_WB))
-		efi_memory_uc((u64)(unsigned long)__va(phys_addr), size);
-
-	return (void __iomem *)__va(phys_addr);
-}
--- linux.orig/arch/x86/platform/efi/efi.c	2020-07-07 10:56:15.401045510 -0500
+++ linux/arch/x86/platform/efi/efi.c	2020-07-07 10:56:15.625045241 -0500
@@ -496,7 +496,7 @@ void __init efi_init(void)
 		efi_print_memmap();
 }
 
-#if defined(CONFIG_X86_32) || defined(CONFIG_X86_UV)
+#if defined(CONFIG_X86_32)
 
 void __init efi_set_executable(efi_memory_desc_t *md, bool executable)
 {


  parent reply	other threads:[~2020-07-13 21:31 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-07-13 21:29 [patch v3 00/13] Remove UV1 platform support and associated efi=oldmap option steve.wahl
2020-07-13 21:29 ` [patch v3 01/13] x86: Remove support for UV1 platform from uv_time.c steve.wahl
2020-07-17 14:51   ` [tip: x86/platform] x86/platform/uv: Remove support for UV1 platform from uv_time tip-bot2 for steve.wahl@hpe.com
2020-07-13 21:29 ` [patch v3 02/13] x86: Remove support for UV1 platform from uv_tlb.c steve.wahl
2020-07-17 14:51   ` [tip: x86/platform] x86/platform/uv: Remove support for UV1 platform from uv_tlb tip-bot2 for steve.wahl@hpe.com
2020-07-13 21:29 ` [patch v3 03/13] x86: Remove support for UV1 platform from x2apic_uv_x.c steve.wahl
2020-07-17 14:51   ` [tip: x86/platform] x86/platform/uv: Remove support for UV1 platform from x2apic_uv_x tip-bot2 for steve.wahl@hpe.com
2020-07-13 21:29 ` [patch v3 04/13] x86: Remove support for UV1 platform from uv_mmrs.h steve.wahl
2020-07-17 14:51   ` [tip: x86/platform] x86/platform/uv: Remove support for UV1 platform from uv_mmrs tip-bot2 for steve.wahl@hpe.com
2020-07-13 21:29 ` [patch v3 05/13] x86: Remove support for UV1 platform from uv_bau.h steve.wahl
2020-07-17 14:51   ` [tip: x86/platform] x86/platform/uv: Remove support for UV1 platform from uv_bau tip-bot2 for steve.wahl@hpe.com
2020-07-13 21:30 ` [patch v3 06/13] x86: Remove support for uv1 platform from uv_hub.h steve.wahl
2020-07-17 14:51   ` [tip: x86/platform] x86/platform/uv: Remove support for uv1 platform from uv_hub tip-bot2 for steve.wahl@hpe.com
2020-07-13 21:30 ` [patch v3 07/13] x86: Remove support for UV1 platform from uv.h steve.wahl
2020-07-17 14:51   ` [tip: x86/platform] x86/platform/uv: Remove support for UV1 platform from uv tip-bot2 for steve.wahl@hpe.com
2020-07-13 21:30 ` [patch v3 08/13] x86: Remove vestigial mention of UV1 platform from arch/x86/include/asm/uv/bios.h steve.wahl
2020-07-17 14:51   ` [tip: x86/platform] x86/platform/uv: Remove vestigial mention of UV1 platform from bios header tip-bot2 for steve.wahl@hpe.com
2020-07-13 21:30 ` [patch v3 09/13] x86: Remove efi=old_map command line option steve.wahl
2020-07-17 14:51   ` [tip: x86/platform] x86/platform/uv: " tip-bot2 for steve.wahl@hpe.com
2020-07-13 21:30 ` [patch v3 10/13] x86: Delete SGI UV1 detection steve.wahl
2020-07-17 14:51   ` [tip: x86/platform] x86/efi: " tip-bot2 for steve.wahl@hpe.com
2020-07-13 21:30 ` [patch v3 11/13] x86: Remove references to no-longer-used efi_have_uv1_memmap() steve.wahl
2020-07-17 14:51   ` [tip: x86/platform] x86/efi: " tip-bot2 for steve.wahl@hpe.com
2020-07-13 21:30 ` steve.wahl [this message]
2020-07-17 14:51   ` [tip: x86/platform] x86/platform/uv: Remove uv bios and efi code related to EFI_UV1_MEMMAP tip-bot2 for steve.wahl@hpe.com
2020-07-13 21:30 ` [patch v3 13/13] x86: Remove (now unused) EFI_UV1_MEMMAP from efi.h steve.wahl
2020-07-17 14:51   ` [tip: x86/platform] x86/efi: Remove unused EFI_UV1_MEMMAP code tip-bot2 for steve.wahl@hpe.com

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200713212955.902592618@hpe.com \
    --to=steve.wahl@hpe.com \
    --cc=adobriyan@gmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=alexandre.chartre@oracle.com \
    --cc=andy@infradead.org \
    --cc=ardb@kernel.org \
    --cc=arnd@arndb.de \
    --cc=austindh.kim@gmail.com \
    --cc=b.thiel@posteo.de \
    --cc=bp@alien8.de \
    --cc=corbet@lwn.net \
    --cc=dan.j.williams@intel.com \
    --cc=dhowells@redhat.com \
    --cc=dimitri.sivanich@hpe.com \
    --cc=dvhart@infradead.org \
    --cc=dyoung@redhat.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=hpa@zytor.com \
    --cc=jgross@suse.com \
    --cc=jmorris@namei.org \
    --cc=keescook@chromium.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-efi@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=logang@deltatee.com \
    --cc=luto@kernel.org \
    --cc=mchehab+huawei@kernel.org \
    --cc=mike.kravetz@oracle.com \
    --cc=mike.travis@hpe.com \
    --cc=mingo@redhat.com \
    --cc=oneukum@suse.com \
    --cc=paulmck@kernel.org \
    --cc=pawan.kumar.gupta@linux.intel.com \
    --cc=peterz@infradead.org \
    --cc=rja@hpe.com \
    --cc=tglx@linutronix.de \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.