From: Anup Patel <anup@brainfault.org> To: damon <liush.damon@gmail.com> Cc: Palmer Dabbelt <palmer@sifive.com>, Albert Ou <aou@eecs.berkeley.edu>, Anup Patel <anup.patel@wdc.com>, Mike Rapoport <rppt@linux.ibm.com>, sorear2@gmail.com, linux-riscv@lists.infradead.org, "linux-kernel@vger.kernel.org List" <linux-kernel@vger.kernel.org> Subject: Re: [PATCH] RISC-V: redefine PTRS_PER_PGD/PTRS_PER_PMD/PTRS_PER_PTE Date: Thu, 18 Apr 2019 11:43:27 +0530 [thread overview] Message-ID: <CAAhSdy1ra-khBQU2s14StbiojFMk4tokGqAbp-u3j51bksbjQA@mail.gmail.com> (raw) In-Reply-To: <1555548975-7011-1-git-send-email-liush.damon@gmail.com> On Thu, Apr 18, 2019 at 6:26 AM damon <liush.damon@gmail.com> wrote: > > Use the number of addresses to define the relevant macros. > > Signed-off-by: damon <liush.damon@gmail.com> > --- > arch/riscv/include/asm/pgtable-32.h | 2 ++ > arch/riscv/include/asm/pgtable-64.h | 3 ++- > arch/riscv/include/asm/pgtable.h | 4 ++-- > 3 files changed, 6 insertions(+), 3 deletions(-) > > diff --git a/arch/riscv/include/asm/pgtable-32.h b/arch/riscv/include/asm/pgtable-32.h > index d61974b7..93607f6 100644 > --- a/arch/riscv/include/asm/pgtable-32.h > +++ b/arch/riscv/include/asm/pgtable-32.h > @@ -17,8 +17,10 @@ > #include <asm-generic/pgtable-nopmd.h> > #include <linux/const.h> > > +#define MAX_USER_VA_BITS 32 > /* Size of region mapped by a page global directory */ > #define PGDIR_SHIFT 22 > +#define PMD_SHIFT PGDIR_SHIFT We don't have PMD in RV32. We have only two level page table for RV32 so defining PMD_SHIFT is misleading and in-correct. I suggest you drop PMD_SHIFT here instead look at below suggestion for defining PTRS_PER_PTE in asm/pgtable.h > #define PGDIR_SIZE (_AC(1, UL) << PGDIR_SHIFT) > #define PGDIR_MASK (~(PGDIR_SIZE - 1)) > > diff --git a/arch/riscv/include/asm/pgtable-64.h b/arch/riscv/include/asm/pgtable-64.h > index 7aa0ea9..a56d4d0 100644 > --- a/arch/riscv/include/asm/pgtable-64.h > +++ b/arch/riscv/include/asm/pgtable-64.h > @@ -16,6 +16,7 @@ > > #include <linux/const.h> > > +#define MAX_USER_VA_BITS 39 > #define PGDIR_SHIFT 30 > /* Size of region mapped by a page global directory */ > #define PGDIR_SIZE (_AC(1, UL) << PGDIR_SHIFT) > @@ -34,7 +35,7 @@ > #define pmd_val(x) ((x).pmd) > #define __pmd(x) ((pmd_t) { (x) }) > > -#define PTRS_PER_PMD (PAGE_SIZE / sizeof(pmd_t)) > +#define PTRS_PER_PMD (1 << (PGDIR_SHIFT - PMD_SHIFT)) > > static inline int pud_present(pud_t pud) > { > diff --git a/arch/riscv/include/asm/pgtable.h b/arch/riscv/include/asm/pgtable.h > index 1141364..d9cb3c8 100644 > --- a/arch/riscv/include/asm/pgtable.h > +++ b/arch/riscv/include/asm/pgtable.h > @@ -33,9 +33,9 @@ > #endif /* CONFIG_64BIT */ > > /* Number of entries in the page global directory */ > -#define PTRS_PER_PGD (PAGE_SIZE / sizeof(pgd_t)) > +#define PTRS_PER_PGD (1 << (MAX_USER_VA_BITS - PGDIR_SHIFT)) > /* Number of entries in the page table */ > -#define PTRS_PER_PTE (PAGE_SIZE / sizeof(pte_t)) > +#define PTRS_PER_PTE (1 << (PMD_SHIFT - PAGE_SHIFT)) Instead of defining PTRS_PER_PTD using PMD_SHIFT for both RV32 and RV64, do the following: #ifdef __PAGETABLE_PMD_FOLDED #define PTRS_PER_PTE (1 << (PGDIR_SHIFT - PAGE_SHIFT)) #else #define PTRS_PER_PTE (1 << (PMD_SHIFT - PAGE_SHIFT)) #endif > > /* Number of PGD entries that a user-mode program can use */ > #define USER_PTRS_PER_PGD (TASK_SIZE / PGDIR_SIZE) > -- > 1.9.1 > Regards, Anup
WARNING: multiple messages have this Message-ID (diff)
From: Anup Patel <anup@brainfault.org> To: damon <liush.damon@gmail.com> Cc: sorear2@gmail.com, Palmer Dabbelt <palmer@sifive.com>, Anup Patel <anup.patel@wdc.com>, "linux-kernel@vger.kernel.org List" <linux-kernel@vger.kernel.org>, Mike Rapoport <rppt@linux.ibm.com>, Albert Ou <aou@eecs.berkeley.edu>, linux-riscv@lists.infradead.org Subject: Re: [PATCH] RISC-V: redefine PTRS_PER_PGD/PTRS_PER_PMD/PTRS_PER_PTE Date: Thu, 18 Apr 2019 11:43:27 +0530 [thread overview] Message-ID: <CAAhSdy1ra-khBQU2s14StbiojFMk4tokGqAbp-u3j51bksbjQA@mail.gmail.com> (raw) In-Reply-To: <1555548975-7011-1-git-send-email-liush.damon@gmail.com> On Thu, Apr 18, 2019 at 6:26 AM damon <liush.damon@gmail.com> wrote: > > Use the number of addresses to define the relevant macros. > > Signed-off-by: damon <liush.damon@gmail.com> > --- > arch/riscv/include/asm/pgtable-32.h | 2 ++ > arch/riscv/include/asm/pgtable-64.h | 3 ++- > arch/riscv/include/asm/pgtable.h | 4 ++-- > 3 files changed, 6 insertions(+), 3 deletions(-) > > diff --git a/arch/riscv/include/asm/pgtable-32.h b/arch/riscv/include/asm/pgtable-32.h > index d61974b7..93607f6 100644 > --- a/arch/riscv/include/asm/pgtable-32.h > +++ b/arch/riscv/include/asm/pgtable-32.h > @@ -17,8 +17,10 @@ > #include <asm-generic/pgtable-nopmd.h> > #include <linux/const.h> > > +#define MAX_USER_VA_BITS 32 > /* Size of region mapped by a page global directory */ > #define PGDIR_SHIFT 22 > +#define PMD_SHIFT PGDIR_SHIFT We don't have PMD in RV32. We have only two level page table for RV32 so defining PMD_SHIFT is misleading and in-correct. I suggest you drop PMD_SHIFT here instead look at below suggestion for defining PTRS_PER_PTE in asm/pgtable.h > #define PGDIR_SIZE (_AC(1, UL) << PGDIR_SHIFT) > #define PGDIR_MASK (~(PGDIR_SIZE - 1)) > > diff --git a/arch/riscv/include/asm/pgtable-64.h b/arch/riscv/include/asm/pgtable-64.h > index 7aa0ea9..a56d4d0 100644 > --- a/arch/riscv/include/asm/pgtable-64.h > +++ b/arch/riscv/include/asm/pgtable-64.h > @@ -16,6 +16,7 @@ > > #include <linux/const.h> > > +#define MAX_USER_VA_BITS 39 > #define PGDIR_SHIFT 30 > /* Size of region mapped by a page global directory */ > #define PGDIR_SIZE (_AC(1, UL) << PGDIR_SHIFT) > @@ -34,7 +35,7 @@ > #define pmd_val(x) ((x).pmd) > #define __pmd(x) ((pmd_t) { (x) }) > > -#define PTRS_PER_PMD (PAGE_SIZE / sizeof(pmd_t)) > +#define PTRS_PER_PMD (1 << (PGDIR_SHIFT - PMD_SHIFT)) > > static inline int pud_present(pud_t pud) > { > diff --git a/arch/riscv/include/asm/pgtable.h b/arch/riscv/include/asm/pgtable.h > index 1141364..d9cb3c8 100644 > --- a/arch/riscv/include/asm/pgtable.h > +++ b/arch/riscv/include/asm/pgtable.h > @@ -33,9 +33,9 @@ > #endif /* CONFIG_64BIT */ > > /* Number of entries in the page global directory */ > -#define PTRS_PER_PGD (PAGE_SIZE / sizeof(pgd_t)) > +#define PTRS_PER_PGD (1 << (MAX_USER_VA_BITS - PGDIR_SHIFT)) > /* Number of entries in the page table */ > -#define PTRS_PER_PTE (PAGE_SIZE / sizeof(pte_t)) > +#define PTRS_PER_PTE (1 << (PMD_SHIFT - PAGE_SHIFT)) Instead of defining PTRS_PER_PTD using PMD_SHIFT for both RV32 and RV64, do the following: #ifdef __PAGETABLE_PMD_FOLDED #define PTRS_PER_PTE (1 << (PGDIR_SHIFT - PAGE_SHIFT)) #else #define PTRS_PER_PTE (1 << (PMD_SHIFT - PAGE_SHIFT)) #endif > > /* Number of PGD entries that a user-mode program can use */ > #define USER_PTRS_PER_PGD (TASK_SIZE / PGDIR_SIZE) > -- > 1.9.1 > Regards, Anup _______________________________________________ linux-riscv mailing list linux-riscv@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-riscv
next prev parent reply other threads:[~2019-04-18 6:13 UTC|newest] Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-04-18 0:56 [PATCH] RISC-V: redefine PTRS_PER_PGD/PTRS_PER_PMD/PTRS_PER_PTE damon 2019-04-18 0:56 ` damon 2019-04-18 6:13 ` Anup Patel [this message] 2019-04-18 6:13 ` Anup Patel 2019-04-24 7:51 damon 2019-04-24 7:51 ` damon 2019-04-24 7:59 ` Anup Patel 2019-04-24 7:59 ` Anup Patel 2019-04-24 8:11 damon 2019-04-24 8:11 ` damon 2019-04-24 8:13 ` Anup Patel 2019-04-24 8:13 ` Anup Patel 2019-06-28 18:52 ` Paul Walmsley 2019-06-28 18:52 ` Paul Walmsley 2019-07-24 12:36 ` sh liu 2019-07-24 12:36 ` sh liu
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=CAAhSdy1ra-khBQU2s14StbiojFMk4tokGqAbp-u3j51bksbjQA@mail.gmail.com \ --to=anup@brainfault.org \ --cc=anup.patel@wdc.com \ --cc=aou@eecs.berkeley.edu \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-riscv@lists.infradead.org \ --cc=liush.damon@gmail.com \ --cc=palmer@sifive.com \ --cc=rppt@linux.ibm.com \ --cc=sorear2@gmail.com \ /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: linkBe 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.