From patchwork Thu Jun 25 23:45:07 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Atish Patra X-Patchwork-Id: 206286 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.8 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1A6A3C433E1 for ; Thu, 25 Jun 2020 23:46:10 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id E9EDE206DD for ; Thu, 25 Jun 2020 23:46:09 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b="lYHCGA3E" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726615AbgFYXqJ (ORCPT ); Thu, 25 Jun 2020 19:46:09 -0400 Received: from esa4.hgst.iphmx.com ([216.71.154.42]:4086 "EHLO esa4.hgst.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726432AbgFYXp0 (ORCPT ); Thu, 25 Jun 2020 19:45:26 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1593128725; x=1624664725; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=ihAfLD97lU7TjJORSki+rGBXYnAkG5Afd7XbqxsjX2E=; b=lYHCGA3E/jq0z65NNz9rwuM1PwPljpWwadb3Vj6uNpcE/s8ZOtRfyOvM fduZGylMe/17rgw+47zHMlXLgxqlNicDV008757AItvmdcodVPD7f81YV 9m/e4puztJKJ6W/J862zsOftMZqGNp+C5sCM1tLju9wntfjoWTSPJESLY wvvVZbUa3ysAoeWLXlbmgrlmJ7TwUTgW/zUTasCPd/3HtxEGN6QKPqWfp Brt96zJqvIvLx7UTvjzSyDfjDsPBdJ5oOCXPHhQjQwvZW2XpbZ6jyfbAt NIU9oiC30Q1o9n6yU4mt/RmwH1zMq73SntMovUDguZwp9mAwhOBHV5fY/ A==; IronPort-SDR: csWlZbDninCU3z035NM70X/GxUxdY5YB2iNVESY2DzsTd9F1JkxONJ7Gfxg3Xi82GW8tfjtv1n TG2jNOlK19q+3JHaz21TIPJ9gAFsldxtceYzWEJ5rKSVzXNzhpLIG0vcrD7MVaqGZY+hf/P4ff K3kWgKE6j03BSLt6SrDQufy0hgjQCzDANAWBnjnk+Eu8eFHYFQodTKK68ffSn5CAPRcDtsHy6c OIcqGSIT6bkfjPZIX0DfEepZlXCa4lZvZ+8vo3qA5TL3kX/xwU9JGaTgg7ZHio8dAwsbCebU0e joU= X-IronPort-AV: E=Sophos;i="5.75,280,1589212800"; d="scan'208";a="140953453" Received: from uls-op-cesaip01.wdc.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 26 Jun 2020 07:45:24 +0800 IronPort-SDR: Rp6d6OnTh/CwHQQudlOPXdK3h6mzf7lqHeercJRfFFKb9axytnkHNPF4aHXrLycWwgkCyp5lOi e2ke5Lmp6wFBwA5FEkheTRrWci8RAGtr8= Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Jun 2020 16:34:24 -0700 IronPort-SDR: XdKBNVU/O42ety0Whagt21NSpSDmF4gQyI7GoUuTMQqteQT1/4HNm3PvjdfucV4L3ZKPI2hZ1I N+hsiIBqSVNg== WDCIronportException: Internal Received: from 2349pbt5e4f.ad.shared (HELO jedi-01.hgst.com) ([10.86.58.78]) by uls-op-cesaip01.wdc.com with ESMTP; 25 Jun 2020 16:45:24 -0700 From: Atish Patra To: linux-kernel@vger.kernel.org Cc: Anup Patel , Atish Patra , Ard Biesheuvel , linux-efi@vger.kernel.org, linux-riscv@lists.infradead.org, Masahiro Yamada , Palmer Dabbelt , Heinrich Schuchardt , linux-arm-kernel@lists.infradead.org Subject: [RFC PATCH 02/11] RISC-V: Move DT mapping outof fixmap Date: Thu, 25 Jun 2020 16:45:07 -0700 Message-Id: <20200625234516.31406-3-atish.patra@wdc.com> X-Mailer: git-send-email 2.24.0 In-Reply-To: <20200625234516.31406-1-atish.patra@wdc.com> References: <20200625234516.31406-1-atish.patra@wdc.com> MIME-Version: 1.0 Sender: linux-efi-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-efi@vger.kernel.org From: Anup Patel Currently, RISC-V reserves 1MB of fixmap memory for device tree. However, it maps only single PMD (2MB) space for fixmap which leaves only < 1MB space left for other kernel features such as early ioremap which requires fixmap as well. The fixmap size can be increased by another 2MB but it brings additional complexity and changes the virtual memory layout as well. If we require some additional feature requiring fixmap again, it has to be moved again. Technically, DT doesn't need a fixmap as the memory occupied by the DT is only used during boot. Thus, init memory section can be used for the same purpose as well. This simplifies fixmap implementation. Signed-off-by: Anup Patel Signed-off-by: Atish Patra --- arch/riscv/include/asm/fixmap.h | 3 --- arch/riscv/kernel/head.S | 1 - arch/riscv/kernel/head.h | 2 -- arch/riscv/kernel/setup.c | 8 +++----- arch/riscv/mm/init.c | 36 ++++++++++++++------------------- 5 files changed, 18 insertions(+), 32 deletions(-) diff --git a/arch/riscv/include/asm/fixmap.h b/arch/riscv/include/asm/fixmap.h index 1ff075a8dfc7..11613f38228a 100644 --- a/arch/riscv/include/asm/fixmap.h +++ b/arch/riscv/include/asm/fixmap.h @@ -22,9 +22,6 @@ */ enum fixed_addresses { FIX_HOLE, -#define FIX_FDT_SIZE SZ_1M - FIX_FDT_END, - FIX_FDT = FIX_FDT_END + FIX_FDT_SIZE / PAGE_SIZE - 1, FIX_PTE, FIX_PMD, FIX_TEXT_POKE1, diff --git a/arch/riscv/kernel/head.S b/arch/riscv/kernel/head.S index 7ed1b22950fd..c5b529234ad8 100644 --- a/arch/riscv/kernel/head.S +++ b/arch/riscv/kernel/head.S @@ -244,7 +244,6 @@ clear_bss_done: #endif /* Start the kernel */ call soc_early_init - call parse_dtb tail start_kernel .Lsecondary_start: diff --git a/arch/riscv/kernel/head.h b/arch/riscv/kernel/head.h index 105fb0496b24..b48dda3d04f6 100644 --- a/arch/riscv/kernel/head.h +++ b/arch/riscv/kernel/head.h @@ -16,6 +16,4 @@ asmlinkage void __init setup_vm(uintptr_t dtb_pa); extern void *__cpu_up_stack_pointer[]; extern void *__cpu_up_task_pointer[]; -void __init parse_dtb(void); - #endif /* __ASM_HEAD_H */ diff --git a/arch/riscv/kernel/setup.c b/arch/riscv/kernel/setup.c index f04373be54a6..8519a6d29857 100644 --- a/arch/riscv/kernel/setup.c +++ b/arch/riscv/kernel/setup.c @@ -49,8 +49,9 @@ atomic_t hart_lottery __section(.sdata); unsigned long boot_cpu_hartid; static DEFINE_PER_CPU(struct cpu, cpu_devices); -void __init parse_dtb(void) +static void __init parse_dtb(void) { + /* Early scan of device tree from init memory */ if (early_init_dt_scan(dtb_early_va)) return; @@ -63,6 +64,7 @@ void __init parse_dtb(void) void __init setup_arch(char **cmdline_p) { + parse_dtb(); init_mm.start_code = (unsigned long) _stext; init_mm.end_code = (unsigned long) _etext; init_mm.end_data = (unsigned long) _edata; @@ -74,11 +76,7 @@ void __init setup_arch(char **cmdline_p) setup_bootmem(); paging_init(); -#if IS_ENABLED(CONFIG_BUILTIN_DTB) unflatten_and_copy_device_tree(); -#else - unflatten_device_tree(); -#endif clint_init_boot_cpu(); #ifdef CONFIG_SWIOTLB diff --git a/arch/riscv/mm/init.c b/arch/riscv/mm/init.c index f4adb3684f3d..c18c94ab3b23 100644 --- a/arch/riscv/mm/init.c +++ b/arch/riscv/mm/init.c @@ -28,7 +28,6 @@ unsigned long empty_zero_page[PAGE_SIZE / sizeof(unsigned long)] EXPORT_SYMBOL(empty_zero_page); extern char _start[]; -void *dtb_early_va; static void __init zone_sizes_init(void) { @@ -120,8 +119,6 @@ static void __init setup_initrd(void) } #endif /* CONFIG_BLK_DEV_INITRD */ -static phys_addr_t dtb_early_pa __initdata; - void __init setup_bootmem(void) { struct memblock_region *reg; @@ -158,13 +155,9 @@ void __init setup_bootmem(void) setup_initrd(); #endif /* CONFIG_BLK_DEV_INITRD */ - /* - * Avoid using early_init_fdt_reserve_self() since __pa() does - * not work for DTB pointers that are fixmap addresses - */ - memblock_reserve(dtb_early_pa, fdt_totalsize(dtb_early_va)); - + early_init_fdt_reserve_self(); early_init_fdt_scan_reserved_mem(); + memblock_allow_resize(); memblock_dump_all(); @@ -184,6 +177,10 @@ EXPORT_SYMBOL(va_pa_offset); unsigned long pfn_base; EXPORT_SYMBOL(pfn_base); +#define DTB_EARLY_SIZE SZ_1M +static char early_dtb[DTB_EARLY_SIZE] __initdata; +void *dtb_early_va __initdata = early_dtb; + pgd_t swapper_pg_dir[PTRS_PER_PGD] __page_aligned_bss; pgd_t trampoline_pg_dir[PTRS_PER_PGD] __page_aligned_bss; pte_t fixmap_pte[PTRS_PER_PTE] __page_aligned_bss; @@ -375,7 +372,8 @@ static uintptr_t __init best_map_size(phys_addr_t base, phys_addr_t size) asmlinkage void __init setup_vm(uintptr_t dtb_pa) { - uintptr_t va, end_va; + int dtb_size; + uintptr_t va, pa, end_va; uintptr_t load_pa = (uintptr_t)(&_start); uintptr_t load_sz = (uintptr_t)(&_end) - load_pa; uintptr_t map_size = best_map_size(load_pa, MAX_EARLY_MAPPING_SIZE); @@ -424,17 +422,11 @@ asmlinkage void __init setup_vm(uintptr_t dtb_pa) load_pa + (va - PAGE_OFFSET), map_size, PAGE_KERNEL_EXEC); - /* Create fixed mapping for early FDT parsing */ - end_va = __fix_to_virt(FIX_FDT) + FIX_FDT_SIZE; - for (va = __fix_to_virt(FIX_FDT); va < end_va; va += PAGE_SIZE) - create_pte_mapping(fixmap_pte, va, - dtb_pa + (va - __fix_to_virt(FIX_FDT)), - PAGE_SIZE, PAGE_KERNEL); - - /* Save pointer to DTB for early FDT parsing */ - dtb_early_va = (void *)fix_to_virt(FIX_FDT) + (dtb_pa & ~PAGE_MASK); - /* Save physical address for memblock reservation */ - dtb_early_pa = dtb_pa; + /* Copy FDT to init memory for early scan */ + pa = load_pa + ((unsigned long)dtb_early_va - PAGE_OFFSET); + dtb_size = fdt_totalsize((void *)dtb_pa); + dtb_size = (dtb_size > DTB_EARLY_SIZE) ? DTB_EARLY_SIZE : dtb_size; + memcpy((void *)pa, (void *)dtb_pa, dtb_size); } static void __init setup_vm_final(void) @@ -481,6 +473,8 @@ static void __init setup_vm_final(void) local_flush_tlb_all(); } #else +void *dtb_early_va __initdata; + asmlinkage void __init setup_vm(uintptr_t dtb_pa) { #ifdef CONFIG_BUILTIN_DTB From patchwork Thu Jun 25 23:45:10 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Atish Patra X-Patchwork-Id: 206287 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.8 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SIGNED_OFF_BY, SPF_HELO_NONE, SPF_PASS, URIBL_BLOCKED, USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8CBB2C433E2 for ; Thu, 25 Jun 2020 23:46:08 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 6A5FC206DD for ; Thu, 25 Jun 2020 23:46:08 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b="m2g3X/X9" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726469AbgFYXp3 (ORCPT ); Thu, 25 Jun 2020 19:45:29 -0400 Received: from esa4.hgst.iphmx.com ([216.71.154.42]:4091 "EHLO esa4.hgst.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726457AbgFYXp2 (ORCPT ); Thu, 25 Jun 2020 19:45:28 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1593128727; x=1624664727; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=e1f5tFToh6jF2Fr3c6Bri7MNiVrYpT85jVmyBw2a1o8=; b=m2g3X/X97ZnejNVH+0H0YGOdYfRxqSmWdb3qcY0yvPouNFrwA6bJo1wu LLj44Or+jFf6+NPHt+WA67oVfvBeJ5APxAvyzyTgLLoNgkKls4HqJLpZQ wbhurwGLi5VMAzLD9y9PJXdlI+PHWYmks+iQg7MtahKqWWR7GiX9k/4NX OEhcrF0zQSAnLR014mL8I84hSQoWioyyAQV6ZQrFtUcCOPYtQn7dVim3L Fc5mx8GaAy3OYWLYX76swNp3RhHrgz+5p+2udiLMgKc7xVazVKQDhkMHq 8mSU2qewvPu2CVIXtdGDTXqxGD6Enyhd1punU8czCUJBv396Nq614l43T Q==; IronPort-SDR: qX1qg5jeylABftySsqZzHFj07feV4/u2Ek6lzIUrcOBXCcLf2izTsDK7Lg9MpM13iv4GndSiFH WHUOCTDjTl7sFzHY/ThYQguAiBv7La+UbzlaSM63byekIzXbmW2X/V92Ta0UAD1ZORoO1QZlR5 5RRnncmrWkDQiKI9i/nxBTWGTjYdi8o0YlkFm868heSaefHtdHDwKiFZGAzwWorh/4aHGMKbLM hgTFyioa6u37YIIEPhCD6VZmZxq0BMgzrwsmJJnWkXkIM2ZZmdd9BM2+AXsSQx6OwVCF6eqcCQ uRE= X-IronPort-AV: E=Sophos;i="5.75,280,1589212800"; d="scan'208";a="140953458" Received: from uls-op-cesaip01.wdc.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 26 Jun 2020 07:45:26 +0800 IronPort-SDR: HXJziFOxcWoQuCNpJ4F0qvmPIyk/65NHqTXHkTS6UtZPT+hLX1Q7bKSl0oQL/AeTuC/HugEVNt pegJFmyErxe83AiZf5xKh3R6qyXy5a9Vw= Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Jun 2020 16:34:26 -0700 IronPort-SDR: x27YsbO1KVXuwcO1coWKuCCOUz0CEkeOSTXMxHLCyjOMlyEdoh9s5hWmoxbaG9WTGee2GcC+DR DbQR7vLieVwg== WDCIronportException: Internal Received: from 2349pbt5e4f.ad.shared (HELO jedi-01.hgst.com) ([10.86.58.78]) by uls-op-cesaip01.wdc.com with ESMTP; 25 Jun 2020 16:45:26 -0700 From: Atish Patra To: linux-kernel@vger.kernel.org Cc: Atish Patra , Ard Biesheuvel , linux-efi@vger.kernel.org, linux-riscv@lists.infradead.org, Masahiro Yamada , Palmer Dabbelt , Heinrich Schuchardt , linux-arm-kernel@lists.infradead.org Subject: [RFC PATCH 05/11] RISC-V: Set maximum number of mapped pages correctly Date: Thu, 25 Jun 2020 16:45:10 -0700 Message-Id: <20200625234516.31406-6-atish.patra@wdc.com> X-Mailer: git-send-email 2.24.0 In-Reply-To: <20200625234516.31406-1-atish.patra@wdc.com> References: <20200625234516.31406-1-atish.patra@wdc.com> MIME-Version: 1.0 Sender: linux-efi-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-efi@vger.kernel.org Currently, maximum number of mapper pages are set to the pfn calculated from the memblock size of the memblock containing kernel. This will work until that memblock spans the entire memory. However, it will be set to a wrong value if there are multiple memblocks defined in kernel (e.g. with efi runtime services). Set the the maximum value to the pfn calculated from dram size. Signed-off-by: Atish Patra --- arch/riscv/mm/init.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/riscv/mm/init.c b/arch/riscv/mm/init.c index bad60686d080..4021706aef81 100644 --- a/arch/riscv/mm/init.c +++ b/arch/riscv/mm/init.c @@ -147,9 +147,9 @@ void __init setup_bootmem(void) /* Reserve from the start of the kernel to the end of the kernel */ memblock_reserve(vmlinux_start, vmlinux_end - vmlinux_start); - set_max_mapnr(PFN_DOWN(mem_size)); max_pfn = PFN_DOWN(memblock_end_of_DRAM()); max_low_pfn = max_pfn; + set_max_mapnr(max_low_pfn); #ifdef CONFIG_BLK_DEV_INITRD setup_initrd(); From patchwork Thu Jun 25 23:45:11 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Atish Patra X-Patchwork-Id: 206290 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.8 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SIGNED_OFF_BY, SPF_HELO_NONE, SPF_PASS, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0A4D4C433DF for ; Thu, 25 Jun 2020 23:45:32 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id D8B0520768 for ; Thu, 25 Jun 2020 23:45:31 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b="BTZiBGmk" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726475AbgFYXp3 (ORCPT ); Thu, 25 Jun 2020 19:45:29 -0400 Received: from esa4.hgst.iphmx.com ([216.71.154.42]:4086 "EHLO esa4.hgst.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726458AbgFYXp2 (ORCPT ); Thu, 25 Jun 2020 19:45:28 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1593128727; x=1624664727; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=YBy5J4GUHkZ0slWQ+5rpmDzLOi4g2OFkey3S0ni3vEo=; b=BTZiBGmkQ94jPO+XVt45oz6t9i7R+w5X1Mhkb66OL6W4bj5quq0FlNAZ rsO9+r7CWji+wl5mtx/leiDuhPDqmO8Nv7oKMIwRSf7XxoEAQlpYZhtTu 9aWY2lP6TMTZG7v4Lh01LXMMoWZ4Eer+iKknmNf51O4y4NjfEewS0BTmx 0wjTk2RbNo2lWkF7kYldMsTfhqwPX/qS5nHFglJSB1t8JZoKcCAtAlrix Cip3RMF0mC31Mj2OIqTHE75v1lyTZJz/uf/TOuAf+p950dPs6SGjr+L9k K9bs7wCwtYhrDKpVCJp2wann57BrUyLSNOTau8rhHvwvfMg9ZOkGAM2sS g==; IronPort-SDR: dEoQcvSX9taPkXp3+MU8iyUISvauAmtrrhYl+WuRbvkwJVyw4KPrmEvcWM3Imp6vaURyn3rZnK rSslBWbewJgaJ9yuEMjOsFj5kNUDrD4+2QIzSjNTqRFRTZfn6pwcz3k6zc2fPRv/RQwfxbhrCb EGepgHBrCZ5AvS8/9R971KcCuMTLsV+RdVVUS0PfES580rkIuaC74b4pXmqamBqTJVLxljkt8B 5ozRyFgAN4vTdDRpaapgq951Ilu272mZWjLQDHvJ/CRlXaoUv7Bc6PgA98fCOjG4H/MLeMGcfe GHE= X-IronPort-AV: E=Sophos;i="5.75,280,1589212800"; d="scan'208";a="140953462" Received: from uls-op-cesaip01.wdc.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 26 Jun 2020 07:45:26 +0800 IronPort-SDR: Yzri6BT2XllofHLQXlVfX6AnpCw2JkeLrQrjeQYik9w2GxTzy42rN8BiX7XGU20fMyfrCyQZ1i IsDs9K00DcXk7zByn932TJ7632x4+ARrk= Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Jun 2020 16:34:26 -0700 IronPort-SDR: omPnXbB+TYLoTkN1Npd9t1nvmQHGX5tG5Znu8goYNz213K5CBAQXt/9Te3XTTQppRyp0s8My2s L3qp9Y90whDQ== WDCIronportException: Internal Received: from 2349pbt5e4f.ad.shared (HELO jedi-01.hgst.com) ([10.86.58.78]) by uls-op-cesaip01.wdc.com with ESMTP; 25 Jun 2020 16:45:26 -0700 From: Atish Patra To: linux-kernel@vger.kernel.org Cc: Atish Patra , Ard Biesheuvel , linux-efi@vger.kernel.org, linux-riscv@lists.infradead.org, Masahiro Yamada , Palmer Dabbelt , Heinrich Schuchardt , linux-arm-kernel@lists.infradead.org Subject: [RFC PATCH 06/11] riscv: Parse all memory blocks to remove unusable memory Date: Thu, 25 Jun 2020 16:45:11 -0700 Message-Id: <20200625234516.31406-7-atish.patra@wdc.com> X-Mailer: git-send-email 2.24.0 In-Reply-To: <20200625234516.31406-1-atish.patra@wdc.com> References: <20200625234516.31406-1-atish.patra@wdc.com> MIME-Version: 1.0 Sender: linux-efi-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-efi@vger.kernel.org Currently, maximum physical memory allowed is equal to -PAGE_OFFSET. That's why we remove any memory blocks spanning beyond that size. However, it is done only for memblock containing linux kernel which will not work if there are multiple memblocks. Process all memory blocks to figure out how much memory needs to be removed and remove at the end instead of updating the memblock list in place. Signed-off-by: Atish Patra --- arch/riscv/mm/init.c | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/arch/riscv/mm/init.c b/arch/riscv/mm/init.c index 4021706aef81..c5268fe6e6de 100644 --- a/arch/riscv/mm/init.c +++ b/arch/riscv/mm/init.c @@ -123,26 +123,29 @@ void __init setup_bootmem(void) { struct memblock_region *reg; phys_addr_t mem_size = 0; + phys_addr_t total_mem = 0; + phys_addr_t mem_start, end = 0; phys_addr_t vmlinux_end = __pa_symbol(&_end); phys_addr_t vmlinux_start = __pa_symbol(&_start); /* Find the memory region containing the kernel */ for_each_memblock(memory, reg) { - phys_addr_t end = reg->base + reg->size; - - if (reg->base <= vmlinux_start && vmlinux_end <= end) { - mem_size = min(reg->size, (phys_addr_t)-PAGE_OFFSET); - - /* - * Remove memblock from the end of usable area to the - * end of region - */ - if (reg->base + mem_size < end) - memblock_remove(reg->base + mem_size, - end - reg->base - mem_size); - } + end = reg->base + reg->size; + if (!total_mem) + mem_start = reg->base; + if (reg->base <= vmlinux_start && vmlinux_end <= end) + BUG_ON(reg->size == 0); + total_mem = total_mem + reg->size; } - BUG_ON(mem_size == 0); + + /* + * Remove memblock from the end of usable area to the + * end of region + */ + mem_size = min(total_mem, (phys_addr_t)-PAGE_OFFSET); + if (mem_start + mem_size < end) + memblock_remove(mem_start + mem_size, + end - mem_start - mem_size); /* Reserve from the start of the kernel to the end of the kernel */ memblock_reserve(vmlinux_start, vmlinux_end - vmlinux_start); From patchwork Thu Jun 25 23:45:12 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Atish Patra X-Patchwork-Id: 206288 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.8 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SIGNED_OFF_BY, SPF_HELO_NONE, SPF_PASS, URIBL_BLOCKED, USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id D25EEC433DF for ; Thu, 25 Jun 2020 23:46:07 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id B190920768 for ; Thu, 25 Jun 2020 23:46:07 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b="hejhZixO" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726574AbgFYXpz (ORCPT ); Thu, 25 Jun 2020 19:45:55 -0400 Received: from esa4.hgst.iphmx.com ([216.71.154.42]:4093 "EHLO esa4.hgst.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726403AbgFYXp3 (ORCPT ); Thu, 25 Jun 2020 19:45:29 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1593128728; x=1624664728; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=M/aLmMoaf+R1cfTR4Mi4doOLt0MJCtDnvFjCl4cVqNk=; b=hejhZixO4l/dG2gmpj+wQ772nvwNsZrsdT9uuagyDXwYksiO29jdpo8L Np2lEiQI9WyH/VGRtenXV3ms3hP3laxKsKaYFZwO548Fy+4C+pHNkhM4I TrfRwSGNpnAWQIXIy7s308rQhWAVEpod1s+DrOk6m6pLirLM68AvHeRWI 74U4CoEXVhSzm9g5JbXd0FytelzGuRBsA4dGnGi+Go2GrgUqKwIVERj+k vQXZ0K8x4aWGnSnmosxgwSBhBFq+MttV6xVyaccjTawhopSKhUkz/RQWG St95oZTNoS4v8PGI6RC+tn+q3vxkgMsiN5u4iBNY0FzlJfarcmXRc5LW7 g==; IronPort-SDR: 9H6UgJJP6yyYX0w6rCJ4g8kia7YTJu/5AiiQJA7uTfG9K15co5mpZvmEwIl/pwakjC1YyOviRf 2JRzBW5WwtEu6Dxp208/6a5mfuDnqAtXm6WV/92Ok2u9R18HAXF56U77jHKVOD1WErKIb8FO10 bYQ4sL+AyAjuvt2CulllrzLwyIULz9mMzhxmerGaJNOHVlzsR0oBDT5lDV9njJlCDoPONuQUWw nTrALwxyv0dgSoho+RYkFkccyJisbKmfcsZVF6Tg4Z0Tj/sxmkNcsZFIVv4xNNOZH+akFLW6Mm POY= X-IronPort-AV: E=Sophos;i="5.75,280,1589212800"; d="scan'208";a="140953464" Received: from uls-op-cesaip01.wdc.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 26 Jun 2020 07:45:27 +0800 IronPort-SDR: 2nboY54Evh/Vyz4d0NwWoyGAolDfH5VmMn5Ltd7JOkhkOmoxaBLZpnMY3+3ck90eTzHTNaeJe2 TN4fQMaOqaGmQrh+ncMfY6S7QtcqXFZQA= Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Jun 2020 16:34:27 -0700 IronPort-SDR: rsP8xzULUfBFMDuMCtJGe0TMaOrFxT6DTyZwDjC5tdJA7trEYutCByptrNB4uMfLlWXegYkKzb pktVpb+3JPPA== WDCIronportException: Internal Received: from 2349pbt5e4f.ad.shared (HELO jedi-01.hgst.com) ([10.86.58.78]) by uls-op-cesaip01.wdc.com with ESMTP; 25 Jun 2020 16:45:26 -0700 From: Atish Patra To: linux-kernel@vger.kernel.org Cc: Atish Patra , Palmer Dabbelt , Ard Biesheuvel , linux-efi@vger.kernel.org, linux-riscv@lists.infradead.org, Masahiro Yamada , Palmer Dabbelt , Heinrich Schuchardt , linux-arm-kernel@lists.infradead.org Subject: [RFC PATCH 07/11] include: pe.h: Add RISC-V related PE definition Date: Thu, 25 Jun 2020 16:45:12 -0700 Message-Id: <20200625234516.31406-8-atish.patra@wdc.com> X-Mailer: git-send-email 2.24.0 In-Reply-To: <20200625234516.31406-1-atish.patra@wdc.com> References: <20200625234516.31406-1-atish.patra@wdc.com> MIME-Version: 1.0 Sender: linux-efi-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-efi@vger.kernel.org Define RISC-V related machine types. Signed-off-by: Atish Patra Reviewed-by: Palmer Dabbelt Link: https://lore.kernel.org/r/20200415195422.19866-3-atish.patra@wdc.com Signed-off-by: Ard Biesheuvel --- include/linux/pe.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/include/linux/pe.h b/include/linux/pe.h index 8ad71d763a77..daf09ffffe38 100644 --- a/include/linux/pe.h +++ b/include/linux/pe.h @@ -55,6 +55,9 @@ #define IMAGE_FILE_MACHINE_POWERPC 0x01f0 #define IMAGE_FILE_MACHINE_POWERPCFP 0x01f1 #define IMAGE_FILE_MACHINE_R4000 0x0166 +#define IMAGE_FILE_MACHINE_RISCV32 0x5032 +#define IMAGE_FILE_MACHINE_RISCV64 0x5064 +#define IMAGE_FILE_MACHINE_RISCV128 0x5128 #define IMAGE_FILE_MACHINE_SH3 0x01a2 #define IMAGE_FILE_MACHINE_SH3DSP 0x01a3 #define IMAGE_FILE_MACHINE_SH3E 0x01a4 From patchwork Thu Jun 25 23:45:15 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Atish Patra X-Patchwork-Id: 206289 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.8 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 878FDC433E2 for ; Thu, 25 Jun 2020 23:45:49 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 5CA302088E for ; Thu, 25 Jun 2020 23:45:49 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b="gpLkR53P" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726552AbgFYXps (ORCPT ); Thu, 25 Jun 2020 19:45:48 -0400 Received: from esa4.hgst.iphmx.com ([216.71.154.42]:4093 "EHLO esa4.hgst.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726486AbgFYXpd (ORCPT ); Thu, 25 Jun 2020 19:45:33 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1593128732; x=1624664732; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=aWD4YBmJs4KzatxYQf8rnaaoWvjExyC78q596yR2/no=; b=gpLkR53PDcyF5A2LfInAXArW7n0fkm7bEm0HWTNjDxIGqsgoxpP3dwao 5g0G64U9jdXlriIgR9Puyh/To5Mo6RGCc0mJ4uRCqVEuaH2hWnDQAFr6e 5Y1cw9qpUE3H1s+yV3AtkO+KyITCaOepmwKRmzHpUkz1wPlc8FPzmWGkW i2oD0PaZYDNeFeDyaxqFoFWDlYbtIM0R3IsxWRCw8kqWuuojXhAKBq7Af hslzRFt2TVVAjNCVd2DgOsHVbP268kjHIXxVVinusLUlTN/+5umdMuidt x9jm+K3dWqjoq/dBCvFRa/UHDRiorlm0dqr9eIxr83cdVKJf+n3EVEUGO Q==; IronPort-SDR: LEy8adutllvsJbhfcbhPdTyMO4ykJNc+TSPDiiuZSOO9SNcLe7jo/JPUz2xYh6Q6qGqW5ivb0P IyKZVqwUFS16Yh3tPcKcRe4GZjO2DQFqs+/8WzjxcfFSGmlET/Of2HmXZfaqhb9PhCg3Rp7Y0D ZwRSFQooQV4dR6PDvTY1KvStkfBIRlO9HzdgbUAmZT4Tin7W/0W0TXG/LxS6dm1047YRrsi4+i kpyuacw9o8VWaLMrJtl6+N5wetFM/E07v+8XIEctYtLvATgWG1zWVEM++pxdLu2Zacm/26VzkS vzY= X-IronPort-AV: E=Sophos;i="5.75,280,1589212800"; d="scan'208";a="140953470" Received: from uls-op-cesaip01.wdc.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 26 Jun 2020 07:45:28 +0800 IronPort-SDR: 5Y9PsVGruZUsvAKOVgZal1lGdCaGdcrulz/sDjgiA8z+hPScz4D/njnKonzjlqpQnjQZuG5x1k vAdcnkpwS5mkgP5IsQGgRJt3Iotqxss1o= Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Jun 2020 16:34:28 -0700 IronPort-SDR: qzucKY1oxxKLbrAVAstjJ6LHkYhYSEJngCI+ItcjpIHTI3dmgOGrYo+V24ODpy0uGkhcgytR3B fUSIjAQFVOTQ== WDCIronportException: Internal Received: from 2349pbt5e4f.ad.shared (HELO jedi-01.hgst.com) ([10.86.58.78]) by uls-op-cesaip01.wdc.com with ESMTP; 25 Jun 2020 16:45:28 -0700 From: Atish Patra To: linux-kernel@vger.kernel.org Cc: Atish Patra , Ard Biesheuvel , linux-efi@vger.kernel.org, linux-riscv@lists.infradead.org, Masahiro Yamada , Palmer Dabbelt , Heinrich Schuchardt , linux-arm-kernel@lists.infradead.org Subject: [RFC PATCH 10/11] efi: Rename arm-init to efi-init common for all arch Date: Thu, 25 Jun 2020 16:45:15 -0700 Message-Id: <20200625234516.31406-11-atish.patra@wdc.com> X-Mailer: git-send-email 2.24.0 In-Reply-To: <20200625234516.31406-1-atish.patra@wdc.com> References: <20200625234516.31406-1-atish.patra@wdc.com> MIME-Version: 1.0 Sender: linux-efi-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-efi@vger.kernel.org arm-init is responsible for setting up efi runtime and doesn't actually do any ARM specific stuff. RISC-V can use the same source code as it is. Rename it to efi-init so that RISC-V can use it. Signed-off-by: Atish Patra --- drivers/firmware/efi/{arm-init.c => efi-init.c} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename drivers/firmware/efi/{arm-init.c => efi-init.c} (100%) diff --git a/drivers/firmware/efi/arm-init.c b/drivers/firmware/efi/efi-init.c similarity index 100% rename from drivers/firmware/efi/arm-init.c rename to drivers/firmware/efi/efi-init.c