Received: by 2002:a25:683:0:0:0:0:0 with SMTP id 125csp313180ybg; Wed, 3 Jun 2020 01:15:50 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxGYT1KAhyFto/jBmfA7ppNEMhDB9ab7AcwvxG0/MSTm+ZLjkQMNHEJ8odIqEn1BQSnxl/b X-Received: by 2002:a17:907:9486:: with SMTP id dm6mr5536528ejc.248.1591172150185; Wed, 03 Jun 2020 01:15:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1591172150; cv=none; d=google.com; s=arc-20160816; b=P/eSOyR9QcAryk3aZYflZaPmg5v71GOg51t8iEGADS3LrtCUsE3X+0Sa+n5E161Lgo 19PB4yy1QFbhvY4fqM26tQSSYq8u5JWDE6Pe9Jfp/85oeFjvOzymdBsCg2jFvtmIkcKk K5PzPgOXLNXrqGrhA/EfCBTectpBr84dOBc1pPy/IT2AoFMV8UMtPFTYXFIfEP55x/ld iYgDTLXDAsUMj7KDUHaFE85DaL4YnjBTxW6oZRLkQ2Tq9eGHng/zdBZMvMIKLlOdZ2ld 3EetZPjNSt8C66r2VMZOOXvzQvphdG7ifKUjU/h0Cl2Yeg0D15RsiJjaNmFfFwq+I51X jugA== 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=w2XjdPI8hGYuYqKWPfabt3rYgYeMhjiKplVZpu6NGEk=; b=xiDmKxWS0YLuM7YiTu9NxCPcK/IrgKTmGsL4oQDmOIB3FUKYx6EyNMSLRBn5pigIst FKOjBtSXMWjvrNHLMvueVlYUwny9xwIKFs/J0mq3JpFjOjlr+RiOu1BqSyhmvcOkA7yD BqZUxjHbA60gBaRZNzX+BzssTpMmvB/5zHDTY2U2BCQg3g/3I6D5WmvGlRFa3U/plwHJ +rdOdWHs19ZpEMkgRz1FkhftC+VC3snQFk6q6wYgBVM/1o0YXMmEld8us/ltNDEeKe87 4DSpYDpgoHyi/5tTNWoLqc68zZQAeLFF3YxzdFPLyVXO9Zoin82sxhczwYikIV5mx8VK QMTw== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id gy17si710107ejb.244.2020.06.03.01.15.27; Wed, 03 Jun 2020 01:15:50 -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; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726380AbgFCINQ (ORCPT + 99 others); Wed, 3 Jun 2020 04:13:16 -0400 Received: from relay6-d.mail.gandi.net ([217.70.183.198]:42533 "EHLO relay6-d.mail.gandi.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725854AbgFCINO (ORCPT ); Wed, 3 Jun 2020 04:13:14 -0400 X-Originating-IP: 90.112.45.105 Received: from debian.home (lfbn-gre-1-325-105.w90-112.abo.wanadoo.fr [90.112.45.105]) (Authenticated sender: alex@ghiti.fr) by relay6-d.mail.gandi.net (Postfix) with ESMTPSA id 12634C0006; Wed, 3 Jun 2020 08:13:11 +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: [PATCH v2 2/8] riscv: Allow to dynamically define VA_BITS Date: Wed, 3 Jun 2020 04:10:58 -0400 Message-Id: <20200603081104.14004-3-alex@ghiti.fr> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200603081104.14004-1-alex@ghiti.fr> References: <20200603081104.14004-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 | 11 +++++++++-- arch/riscv/include/asm/sparsemem.h | 6 +++++- 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig index 93127d5913fe..64b25a90d60f 100644 --- a/arch/riscv/Kconfig +++ b/arch/riscv/Kconfig @@ -101,16 +101,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 94ef3b49dfb6..ec9694624f3c 100644 --- a/arch/riscv/include/asm/pgtable.h +++ b/arch/riscv/include/asm/pgtable.h @@ -40,8 +40,14 @@ * struct pages to map half the virtual address space. Then * position vmemmap directly below the VMALLOC region. */ +#ifdef CONFIG_64BIT +#define VA_BITS 39 +#else +#define VA_BITS 32 +#endif + #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) @@ -80,6 +86,7 @@ #endif /* CONFIG_64BIT */ #ifdef CONFIG_MMU + /* Number of entries in the page global directory */ #define PTRS_PER_PGD (PAGE_SIZE / sizeof(pgd_t)) /* Number of entries in the page table */ @@ -466,7 +473,7 @@ static inline int ptep_clear_flush_young(struct vm_area_struct *vma, * and give the kernel the other (upper) half. */ #ifdef CONFIG_64BIT -#define KERN_VIRT_START (-(BIT(CONFIG_VA_BITS)) + TASK_SIZE) +#define KERN_VIRT_START (-(BIT(VA_BITS)) + TASK_SIZE) #else #define KERN_VIRT_START FIXADDR_START #endif diff --git a/arch/riscv/include/asm/sparsemem.h b/arch/riscv/include/asm/sparsemem.h index 45a7018a8118..63acaecc3374 100644 --- a/arch/riscv/include/asm/sparsemem.h +++ b/arch/riscv/include/asm/sparsemem.h @@ -4,7 +4,11 @@ #define _ASM_RISCV_SPARSEMEM_H #ifdef CONFIG_SPARSEMEM -#define MAX_PHYSMEM_BITS CONFIG_PA_BITS +#ifdef CONFIG_64BIT +#define MAX_PHYSMEM_BITS 56 +#else +#define MAX_PHYSMEM_BITS 34 +#endif /* CONFIG_64BIT */ #define SECTION_SIZE_BITS 27 #endif /* CONFIG_SPARSEMEM */ -- 2.20.1