From mboxrd@z Thu Jan 1 00:00:00 1970 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=-14.0 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS 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 1559CC433ED for ; Thu, 22 Apr 2021 10:10:18 +0000 (UTC) Received: from desiato.infradead.org (desiato.infradead.org [90.155.92.199]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 696A861458 for ; Thu, 22 Apr 2021 10:10:17 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 696A861458 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding :Content-Type:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References:Message-ID: Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=BLQ05NvvLYBehZYsxcOqLKk7Q8nz5miBrVHpazbDO4Y=; b=IUmU+7pB5FVk2CHeQGiKYhtBt V68C7fBZwf/mclvxuvDuybJS9zLKzFpAohAAYfIv9TMCs0E8L8R+mPrGcYTQCLL71+YwcZ/lmoMLP JrewEAkUEKbzHm6GZtyEWNUgZBFnksT4Ie9GtxdASXOfDqX8V1xSNSel2L9+uA5mFo/OpY9OzaEZy rtKwgeHQpjNGTgzZ3cBxPvw83Yq9vl2wAOamsYEbJbflikJvNkIoRyFyJ4f5W6fPVydC2mdGORtFH GzLsu5NyURbfR2IivW4bUyb7/5OW5pOXSXLQSHH99nRGwq/N2X6rEz+X/QDC5oJZNnBoL0YIqmAtE 8RmRON3mA==; Received: from localhost ([::1] helo=desiato.infradead.org) by desiato.infradead.org with esmtp (Exim 4.94 #2 (Red Hat Linux)) id 1lZWFw-00GQXW-4f; Thu, 22 Apr 2021 10:08:20 +0000 Received: from bombadil.infradead.org ([2607:7c80:54:e::133]) by desiato.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lZWFt-00GQWh-Cf for linux-arm-kernel@desiato.infradead.org; Thu, 22 Apr 2021 10:08:17 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=In-Reply-To:Content-Type:MIME-Version :References:Message-ID:Subject:Cc:To:From:Date:Sender:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description; bh=KBlFrZOiDWVmSvd6X41rnz9QOxjX9wrVxuoN1p5FMi4=; b=UqbLCt3EM5szEEMaRkwpiGXxPD jjFd9kGUB+scD0iZn72y/86hZEFRBHA/HZ1Af8k7JmGNMgd0pgk8fcToiXZ39KS5awre1ctxJW8ED IXWtso0onnCiSJ5b95uGpiYri2kYlywhxUeoSvLptCLw0jAc29vrZ2TZeFCM+h9Py8YOv/7NjHFNk 7DUWz4ANWdCvYlcGHfsAtsobq1ZU4HRYS8DmDQPbxADxOi/DvdfZpAcM5IyJQ0x/E5SzBdZmFM30t wmV8ca/Ipo4Da/RldxFUzDIiKhpsWB8dUkctxTwBUj6U7Xd/wu02FjIxN7ItWQynUn7oMvrJuozSI lv7J+nWw==; Received: from mail.kernel.org ([198.145.29.99]) by bombadil.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lZWFq-00DZIf-CE for linux-arm-kernel@lists.infradead.org; Thu, 22 Apr 2021 10:08:16 +0000 Received: by mail.kernel.org (Postfix) with ESMTPSA id 3678F61435; Thu, 22 Apr 2021 10:08:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1619086093; bh=sOfPRjTiKcPYTO1rdEcnOlBPPFvLPx5gG7c+zjV01l0=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=IXxwuI1sPdqmG0qECYMusWVAZcyFSCe6cfp6RGZ61WpUGreEgcIvlrc70EdRPwTt9 UjlR8PCwodlbE5g5oi2TFIvRQCdm4QpP+720s+HgebBVzV+NDnI37bAOKDbLVzw5YA oGt5rpw85gpiJWvI39aQcQ3Q0tXVPE81XtRYdhvXJMFemexQUw7ljN03JCKvcQHoFo yuUrWOvRHx4ff7hJ92Oq5JL67FUVTACiuSQJIskXwuAPvvW5Om9zlnQ9ZXsAeajIa8 15hDb2ndUxwBcCtA75Xy4/xkJJICR7slW1mnWdbjNUvopfgSYlK7HCR2y1bOsvSGqG dKUU7ltBzQASg== Date: Thu, 22 Apr 2021 13:08:06 +0300 From: Mike Rapoport To: Catalin Marinas Cc: linux-arm-kernel@lists.infradead.org, Ard Biesheuvel , Marc Zyngier , Mark Rutland , Anshuman Khandual , Will Deacon Subject: Re: [PATCH] arm64: Force SPARSEMEM_VMEMMAP as the only memory management model Message-ID: References: <20210420093559.23168-1-catalin.marinas@arm.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20210420093559.23168-1-catalin.marinas@arm.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210422_030814_528588_0B40A5FF X-CRM114-Status: GOOD ( 29.30 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org On Tue, Apr 20, 2021 at 10:35:59AM +0100, Catalin Marinas wrote: > Currently arm64 allows a choice of FLATMEM, SPARSEMEM and > SPARSEMEM_VMEMMAP. However, only the latter is tested regularly. FLATMEM > does not seem to boot in certain configurations (guest under KVM with > Qemu as a VMM). Since the reduction of the SECTION_SIZE_BITS to 27 (4K > pages) or 29 (64K page), there's little argument against the memory > wasted by the mem_map array with SPARSEMEM. > > Make SPARSEMEM_VMEMMAP the only available option, non-selectable, and > remove the corresponding #ifdefs under arch/arm64/. > > Signed-off-by: Catalin Marinas > Cc: Will Deacon Acked-by: Mike Rapoport > --- > > If there are any concerns, please shout (but show numbers as well to > back it up). > > arch/arm64/Kconfig | 10 +--------- > arch/arm64/include/asm/kernel-pgtable.h | 2 +- > arch/arm64/include/asm/memory.h | 4 ++-- > arch/arm64/include/asm/sparsemem.h | 3 --- > arch/arm64/mm/init.c | 8 ++------ > arch/arm64/mm/mmu.c | 2 -- > arch/arm64/mm/ptdump.c | 2 -- > 7 files changed, 6 insertions(+), 25 deletions(-) > > diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig > index 9b4d629f7628..01c294035928 100644 > --- a/arch/arm64/Kconfig > +++ b/arch/arm64/Kconfig > @@ -1040,15 +1040,7 @@ source "kernel/Kconfig.hz" > config ARCH_SPARSEMEM_ENABLE > def_bool y > select SPARSEMEM_VMEMMAP_ENABLE > - > -config ARCH_SPARSEMEM_DEFAULT > - def_bool ARCH_SPARSEMEM_ENABLE > - > -config ARCH_SELECT_MEMORY_MODEL > - def_bool ARCH_SPARSEMEM_ENABLE > - > -config ARCH_FLATMEM_ENABLE > - def_bool !NUMA > + select SPARSEMEM_VMEMMAP > > config HW_PERF_EVENTS > def_bool y > diff --git a/arch/arm64/include/asm/kernel-pgtable.h b/arch/arm64/include/asm/kernel-pgtable.h > index 587c504a4c8b..d44df9d62fc9 100644 > --- a/arch/arm64/include/asm/kernel-pgtable.h > +++ b/arch/arm64/include/asm/kernel-pgtable.h > @@ -136,7 +136,7 @@ > * has a direct correspondence, and needs to appear sufficiently aligned > * in the virtual address space. > */ > -#if defined(CONFIG_SPARSEMEM_VMEMMAP) && ARM64_MEMSTART_SHIFT < SECTION_SIZE_BITS > +#if ARM64_MEMSTART_SHIFT < SECTION_SIZE_BITS > #define ARM64_MEMSTART_ALIGN (1UL << SECTION_SIZE_BITS) > #else > #define ARM64_MEMSTART_ALIGN (1UL << ARM64_MEMSTART_SHIFT) > diff --git a/arch/arm64/include/asm/memory.h b/arch/arm64/include/asm/memory.h > index b943879c1c24..15018dc59554 100644 > --- a/arch/arm64/include/asm/memory.h > +++ b/arch/arm64/include/asm/memory.h > @@ -329,7 +329,7 @@ static inline void *phys_to_virt(phys_addr_t x) > */ > #define ARCH_PFN_OFFSET ((unsigned long)PHYS_PFN_OFFSET) > > -#if !defined(CONFIG_SPARSEMEM_VMEMMAP) || defined(CONFIG_DEBUG_VIRTUAL) > +#if defined(CONFIG_DEBUG_VIRTUAL) > #define page_to_virt(x) ({ \ > __typeof__(x) __page = x; \ > void *__addr = __va(page_to_phys(__page)); \ > @@ -349,7 +349,7 @@ static inline void *phys_to_virt(phys_addr_t x) > u64 __addr = VMEMMAP_START + (__idx * sizeof(struct page)); \ > (struct page *)__addr; \ > }) > -#endif /* !CONFIG_SPARSEMEM_VMEMMAP || CONFIG_DEBUG_VIRTUAL */ > +#endif /* CONFIG_DEBUG_VIRTUAL */ > > #define virt_addr_valid(addr) ({ \ > __typeof__(addr) __addr = __tag_reset(addr); \ > diff --git a/arch/arm64/include/asm/sparsemem.h b/arch/arm64/include/asm/sparsemem.h > index eb4a75d720ed..4b73463423c3 100644 > --- a/arch/arm64/include/asm/sparsemem.h > +++ b/arch/arm64/include/asm/sparsemem.h > @@ -5,7 +5,6 @@ > #ifndef __ASM_SPARSEMEM_H > #define __ASM_SPARSEMEM_H > > -#ifdef CONFIG_SPARSEMEM > #define MAX_PHYSMEM_BITS CONFIG_ARM64_PA_BITS > > /* > @@ -27,6 +26,4 @@ > #define SECTION_SIZE_BITS 27 > #endif /* CONFIG_ARM64_64K_PAGES */ > > -#endif /* CONFIG_SPARSEMEM*/ > - > #endif > diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c > index 3685e12aba9b..a205538aa1d5 100644 > --- a/arch/arm64/mm/init.c > +++ b/arch/arm64/mm/init.c > @@ -220,6 +220,7 @@ static void __init zone_sizes_init(unsigned long min, unsigned long max) > int pfn_valid(unsigned long pfn) > { > phys_addr_t addr = PFN_PHYS(pfn); > + struct mem_section *ms; > > /* > * Ensure the upper PAGE_SHIFT bits are clear in the > @@ -230,10 +231,6 @@ int pfn_valid(unsigned long pfn) > if (PHYS_PFN(addr) != pfn) > return 0; > > -#ifdef CONFIG_SPARSEMEM > -{ > - struct mem_section *ms; > - > if (pfn_to_section_nr(pfn) >= NR_MEM_SECTIONS) > return 0; > > @@ -252,8 +249,7 @@ int pfn_valid(unsigned long pfn) > */ > if (!early_section(ms)) > return pfn_section_valid(ms, pfn); > -} > -#endif > + > return memblock_is_map_memory(addr); > } > EXPORT_SYMBOL(pfn_valid); > diff --git a/arch/arm64/mm/mmu.c b/arch/arm64/mm/mmu.c > index fac957ff5187..af0ebcad3e1f 100644 > --- a/arch/arm64/mm/mmu.c > +++ b/arch/arm64/mm/mmu.c > @@ -1113,7 +1113,6 @@ static void free_empty_tables(unsigned long addr, unsigned long end, > } > #endif > > -#ifdef CONFIG_SPARSEMEM_VMEMMAP > #if !ARM64_SWAPPER_USES_SECTION_MAPS > int __meminit vmemmap_populate(unsigned long start, unsigned long end, int node, > struct vmem_altmap *altmap) > @@ -1177,7 +1176,6 @@ void vmemmap_free(unsigned long start, unsigned long end, > free_empty_tables(start, end, VMEMMAP_START, VMEMMAP_END); > #endif > } > -#endif /* CONFIG_SPARSEMEM_VMEMMAP */ > > static inline pud_t *fixmap_pud(unsigned long addr) > { > diff --git a/arch/arm64/mm/ptdump.c b/arch/arm64/mm/ptdump.c > index a50e92ea1878..a1937dfff31c 100644 > --- a/arch/arm64/mm/ptdump.c > +++ b/arch/arm64/mm/ptdump.c > @@ -51,10 +51,8 @@ static struct addr_marker address_markers[] = { > { FIXADDR_TOP, "Fixmap end" }, > { PCI_IO_START, "PCI I/O start" }, > { PCI_IO_END, "PCI I/O end" }, > -#ifdef CONFIG_SPARSEMEM_VMEMMAP > { VMEMMAP_START, "vmemmap start" }, > { VMEMMAP_START + VMEMMAP_SIZE, "vmemmap end" }, > -#endif > { -1, NULL }, > }; > > > _______________________________________________ > linux-arm-kernel mailing list > linux-arm-kernel@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel -- Sincerely yours, Mike. _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel