Received: by 2002:a25:6193:0:0:0:0:0 with SMTP id v141csp2628403ybb; Sun, 22 Mar 2020 04:04:51 -0700 (PDT) X-Google-Smtp-Source: ADFU+vtDqgRiJbQ8dsiqJM3ptaGyJrSei6MHMVCOpIZO69Jw7YpDOPqt+H70Iq1t5nMynlQVfbkN X-Received: by 2002:a9d:1708:: with SMTP id i8mr13954875ota.250.1584875091405; Sun, 22 Mar 2020 04:04:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1584875091; cv=none; d=google.com; s=arc-20160816; b=O8SjSX3eH8YNKhcP9fi7LFKvQD21MPDUJLYnt7b1o5PjtIsCTa40ETx6GE7v21aVLJ xh69xwub8d/XRfV/nvmaeZsxTft65F/7RaPZikWsWHZlRQZnBa2GPypdXfHKZYKeUpXK wpzW6Yd3lGdW4nKcCj/Ac1oGx8mKu9j8Nw9SRgNqHirv6NhfVZJpUh2zBgZ5iVSW+dXk MRxKFCsTFGZxTQnMJIJjmQ+07XKteBzu8YdCthkgMwlTF219DSBDjtFKE5+Jamlhn7sA zDRTyAvjQ2WncgPgYPVAxUEtIY07TwPdLBpBmrr8XBrfmk3DNC5wMhd7IqRlomxNUAGk y8TA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=CpUiJcARW2Io9xZpVdqwriEoIZHr45spqI4RYiBCM2Q=; b=MIij8VZ0N7TWOMiA/p+3mno1KYuY9qF9Vi4e3MMm11fojsI72kYxvsVkNS4eOZZr3O g+c7iCNORzKr8aTEF77PSGhcSkCMXZLkvhW9kV8io8ZmDEDEo8UTl87ei0yGnj6DxKkV KSqSY7jhuMFIjqQ48loJDmmzFSo4bEJS/yMurStoYi3bcNnQNYwS5AmB5IYYM+NL4CSl hypsMJMB8Av2aUlBAOiXF/FmHHCJ12rP3rGqaxkFHvP+TfQ5uFzFNHAHDLjg3fujGIc+ kn36xZIPXvZ3zSf0EaZWkLX3Vo/l7VE9u9GKxyilG8IgAf8tRXPBca4Ov1vGGfHcvbNd OyUQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id p9si105416oti.202.2020.03.22.04.04.39; Sun, 22 Mar 2020 04:04:51 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727032AbgCVLCn (ORCPT + 99 others); Sun, 22 Mar 2020 07:02:43 -0400 Received: from relay6-d.mail.gandi.net ([217.70.183.198]:51445 "EHLO relay6-d.mail.gandi.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726936AbgCVLCn (ORCPT ); Sun, 22 Mar 2020 07:02:43 -0400 X-Originating-IP: 2.7.45.25 Received: from localhost.localdomain (lfbn-lyo-1-453-25.w2-7.abo.wanadoo.fr [2.7.45.25]) (Authenticated sender: alex@ghiti.fr) by relay6-d.mail.gandi.net (Postfix) with ESMTPSA id 1BE05C0002; Sun, 22 Mar 2020 11:02:39 +0000 (UTC) From: Alexandre Ghiti To: Paul Walmsley , Palmer Dabbelt , Zong Li , Anup Patel , Christoph Hellwig , linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org Cc: Alexandre Ghiti Subject: [RFC PATCH 2/7] riscv: Allow to dynamically define VA_BITS Date: Sun, 22 Mar 2020 07:00:23 -0400 Message-Id: <20200322110028.18279-3-alex@ghiti.fr> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200322110028.18279-1-alex@ghiti.fr> References: <20200322110028.18279-1-alex@ghiti.fr> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org With 4-level page table folding at runtime, we don't know at compile time the size of the virtual address space so we must set VA_BITS dynamically so that sparsemem reserves the right amount of memory for struct pages. Signed-off-by: Alexandre Ghiti --- arch/riscv/Kconfig | 10 ---------- arch/riscv/include/asm/pgtable.h | 10 +++++++++- arch/riscv/include/asm/sparsemem.h | 2 +- 3 files changed, 10 insertions(+), 12 deletions(-) diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig index f5f3d474504d..8e4b1cbcf2c2 100644 --- a/arch/riscv/Kconfig +++ b/arch/riscv/Kconfig @@ -99,16 +99,6 @@ config ZONE_DMA32 bool default y if 64BIT -config VA_BITS - int - default 32 if 32BIT - default 39 if 64BIT - -config PA_BITS - int - default 34 if 32BIT - default 56 if 64BIT - config PAGE_OFFSET hex default 0xC0000000 if 32BIT && MAXPHYSMEM_2GB diff --git a/arch/riscv/include/asm/pgtable.h b/arch/riscv/include/asm/pgtable.h index 185ffe3723ec..dce401eed1d3 100644 --- a/arch/riscv/include/asm/pgtable.h +++ b/arch/riscv/include/asm/pgtable.h @@ -26,6 +26,14 @@ #endif /* CONFIG_64BIT */ #ifdef CONFIG_MMU +#ifdef CONFIG_64BIT +#define VA_BITS 39 +#define PA_BITS 56 +#else +#define VA_BITS 32 +#define PA_BITS 34 +#endif + /* Number of entries in the page global directory */ #define PTRS_PER_PGD (PAGE_SIZE / sizeof(pgd_t)) /* Number of entries in the page table */ @@ -108,7 +116,7 @@ extern pgd_t swapper_pg_dir[]; * position vmemmap directly below the VMALLOC region. */ #define VMEMMAP_SHIFT \ - (CONFIG_VA_BITS - PAGE_SHIFT - 1 + STRUCT_PAGE_MAX_SHIFT) + (VA_BITS - PAGE_SHIFT - 1 + STRUCT_PAGE_MAX_SHIFT) #define VMEMMAP_SIZE BIT(VMEMMAP_SHIFT) #define VMEMMAP_END (VMALLOC_START - 1) #define VMEMMAP_START (VMALLOC_START - VMEMMAP_SIZE) diff --git a/arch/riscv/include/asm/sparsemem.h b/arch/riscv/include/asm/sparsemem.h index 45a7018a8118..f08d72155bc8 100644 --- a/arch/riscv/include/asm/sparsemem.h +++ b/arch/riscv/include/asm/sparsemem.h @@ -4,7 +4,7 @@ #define _ASM_RISCV_SPARSEMEM_H #ifdef CONFIG_SPARSEMEM -#define MAX_PHYSMEM_BITS CONFIG_PA_BITS +#define MAX_PHYSMEM_BITS PA_BITS #define SECTION_SIZE_BITS 27 #endif /* CONFIG_SPARSEMEM */ -- 2.20.1