From: Wei Fu <wefu@redhat.com> To: Christoph Hellwig <hch@infradead.org> Cc: "Anup Patel" <anup.patel@wdc.com>, "Atish Patra" <atish.patra@wdc.com>, "Palmer Dabbelt" <palmerdabbelt@google.com>, guoren@kernel.org, christoph.muellner@vrull.eu, "Philipp Tomsich" <philipp.tomsich@vrull.eu>, "Christoph Hellwig" <hch@lst.de>, "Liu Shaohua" <liush@allwinnertech.com>, "Wei Wu (吴伟)" <lazyparser@gmail.com>, "Drew Fustini" <drew@beagleboard.org>, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, taiten.peng@canonical.com, aniket.ponkshe@canonical.com, heinrich.schuchardt@canonical.com, gordan.markus@canonical.com, guoren@linux.alibaba.com, "Arnd Bergmann" <arnd@arndb.de>, "Chen-Yu Tsai" <wens@csie.org>, "Maxime Ripard" <maxime@cerno.tech>, "Daniel Lustig" <dlustig@nvidia.com>, "Greg Favor" <gfavor@ventanamicro.com>, "Andrea Mondelli" <andrea.mondelli@huawei.com>, "Jonathan Behrens" <behrensj@mit.edu>, Xinhaoqu <xinhaoqu@huawei.com>, "Bill Huffman" <huffman@cadence.com>, "Nick Kossifidis" <mick@ics.forth.gr>, "Allen Baum" <allen.baum@esperantotech.com>, "Josh Scheid" <jscheid@ventanamicro.com>, "Richard Trauben" <rtrauben@gmail.com> Subject: Re: [RESEND PATCH V3 2/2] riscv: add RISC-V Svpbmt extension supports Date: Mon, 25 Oct 2021 22:49:11 +0800 [thread overview] Message-ID: <CA+YCwKn1VA8=NSa=bdhP99jfpokYGHBvqVSKvZmdndQOz6UUPA@mail.gmail.com> (raw) In-Reply-To: <YXZU/3/YmRGFrOXK@infradead.org> Hi Christoph, I hope I understand this correctly, On Mon, Oct 25, 2021 at 2:57 PM Christoph Hellwig <hch@infradead.org> wrote: > > On Mon, Oct 25, 2021 at 12:06:07PM +0800, wefu@redhat.com wrote: > > static inline pmd_t *pud_pgtable(pud_t pud) > > { > > - return (pmd_t *)pfn_to_virt(pud_val(pud) >> _PAGE_PFN_SHIFT); > > + return (pmd_t *)pfn_to_virt((pud_val(pud) & _PAGE_CHG_MASK) > > + >> _PAGE_PFN_SHIFT); > > } > > > > static inline struct page *pud_page(pud_t pud) > > { > > - return pfn_to_page(pud_val(pud) >> _PAGE_PFN_SHIFT); > > + return pfn_to_page((pud_val(pud) & _PAGE_CHG_MASK) > > + >> _PAGE_PFN_SHIFT); > > > static inline unsigned long _pmd_pfn(pmd_t pmd) > > { > > - return pmd_val(pmd) >> _PAGE_PFN_SHIFT; > > + return (pmd_val(pmd) & _PAGE_CHG_MASK) >> _PAGE_PFN_SHIFT; > > } > > The "(pud_val(pud) & _PAGE_CHG_MASK) >> _PAGE_PFN_SHIFT" expression begs > for readable and well-documented helper. How about these: #define _chg_of_pmd(pmd) (pmd_val(pmd) & _PAGE_CHG_MASK) #define _chg_of_pud(pud) (pud_val(pud) & _PAGE_CHG_MASK) > > > +#define _SVPBMT_PMA ((unsigned long)0x0 << 61) > > +#define _SVPBMT_NC ((unsigned long)0x1 << 61) > > +#define _SVPBMT_IO ((unsigned long)0x2 << 61) > > 0UL << 61 > 1UL << 61 > ... > > > +#define _SVPBMT_MASK (_SVPBMT_PMA | _SVPBMT_NC | _SVPBMT_IO) > > + > > +extern struct __riscv_svpbmt_struct { > > + unsigned long mask; > > + unsigned long mt_pma; > > + unsigned long mt_nc; > > + unsigned long mt_io; > > +} __riscv_svpbmt; > > + > > +#define _PAGE_MT_MASK __riscv_svpbmt.mask > > +#define _PAGE_MT_PMA __riscv_svpbmt.mt_pma > > +#define _PAGE_MT_NC __riscv_svpbmt.mt_nc > > +#define _PAGE_MT_IO __riscv_svpbmt.mt_io > > Using a struct over individual variables seems a little odd here. > How about : extern unsigned long _svpbmt_mask extern unsigned long _svpbmt_mt_pma extern unsigned long _svpbmt_mt_nc extern unsigned long _svpbmt_mt_io #define _PAGE_MT_MASK _svpbmt_mask #define _PAGE_MT_PMA _svpbmt_mt_pma #define _PAGE_MT_NC _svpbmt_mt_nc #define _PAGE_MT_IO _svpbmt_mt_io > Also why not use the standard names for these _PAGE bits used by > most other architectures? > > > - return (unsigned long)pfn_to_virt(pmd_val(pmd) >> _PAGE_PFN_SHIFT); > > + return (unsigned long)pfn_to_virt((pmd_val(pmd) & _PAGE_CHG_MASK) >> _PAGE_PFN_SHIFT); > > Overly long line, could use a helper. Btw, what is the point in having > this _PAGE_PFN_SHIFT macro to start with? > > _______________________________________________ > linux-riscv mailing list > linux-riscv@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-riscv >
WARNING: multiple messages have this Message-ID (diff)
From: Wei Fu <wefu@redhat.com> To: Christoph Hellwig <hch@infradead.org> Cc: "Anup Patel" <anup.patel@wdc.com>, "Atish Patra" <atish.patra@wdc.com>, "Palmer Dabbelt" <palmerdabbelt@google.com>, guoren@kernel.org, christoph.muellner@vrull.eu, "Philipp Tomsich" <philipp.tomsich@vrull.eu>, "Christoph Hellwig" <hch@lst.de>, "Liu Shaohua" <liush@allwinnertech.com>, "Wei Wu (吴伟)" <lazyparser@gmail.com>, "Drew Fustini" <drew@beagleboard.org>, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, taiten.peng@canonical.com, aniket.ponkshe@canonical.com, heinrich.schuchardt@canonical.com, gordan.markus@canonical.com, guoren@linux.alibaba.com, "Arnd Bergmann" <arnd@arndb.de>, "Chen-Yu Tsai" <wens@csie.org>, "Maxime Ripard" <maxime@cerno.tech>, "Daniel Lustig" <dlustig@nvidia.com>, "Greg Favor" <gfavor@ventanamicro.com>, "Andrea Mondelli" <andrea.mondelli@huawei.com>, "Jonathan Behrens" <behrensj@mit.edu>, Xinhaoqu <xinhaoqu@huawei.com>, "Bill Huffman" <huffman@cadence.com>, "Nick Kossifidis" <mick@ics.forth.gr>, "Allen Baum" <allen.baum@esperantotech.com>, "Josh Scheid" <jscheid@ventanamicro.com>, "Richard Trauben" <rtrauben@gmail.com> Subject: Re: [RESEND PATCH V3 2/2] riscv: add RISC-V Svpbmt extension supports Date: Mon, 25 Oct 2021 22:49:11 +0800 [thread overview] Message-ID: <CA+YCwKn1VA8=NSa=bdhP99jfpokYGHBvqVSKvZmdndQOz6UUPA@mail.gmail.com> (raw) In-Reply-To: <YXZU/3/YmRGFrOXK@infradead.org> Hi Christoph, I hope I understand this correctly, On Mon, Oct 25, 2021 at 2:57 PM Christoph Hellwig <hch@infradead.org> wrote: > > On Mon, Oct 25, 2021 at 12:06:07PM +0800, wefu@redhat.com wrote: > > static inline pmd_t *pud_pgtable(pud_t pud) > > { > > - return (pmd_t *)pfn_to_virt(pud_val(pud) >> _PAGE_PFN_SHIFT); > > + return (pmd_t *)pfn_to_virt((pud_val(pud) & _PAGE_CHG_MASK) > > + >> _PAGE_PFN_SHIFT); > > } > > > > static inline struct page *pud_page(pud_t pud) > > { > > - return pfn_to_page(pud_val(pud) >> _PAGE_PFN_SHIFT); > > + return pfn_to_page((pud_val(pud) & _PAGE_CHG_MASK) > > + >> _PAGE_PFN_SHIFT); > > > static inline unsigned long _pmd_pfn(pmd_t pmd) > > { > > - return pmd_val(pmd) >> _PAGE_PFN_SHIFT; > > + return (pmd_val(pmd) & _PAGE_CHG_MASK) >> _PAGE_PFN_SHIFT; > > } > > The "(pud_val(pud) & _PAGE_CHG_MASK) >> _PAGE_PFN_SHIFT" expression begs > for readable and well-documented helper. How about these: #define _chg_of_pmd(pmd) (pmd_val(pmd) & _PAGE_CHG_MASK) #define _chg_of_pud(pud) (pud_val(pud) & _PAGE_CHG_MASK) > > > +#define _SVPBMT_PMA ((unsigned long)0x0 << 61) > > +#define _SVPBMT_NC ((unsigned long)0x1 << 61) > > +#define _SVPBMT_IO ((unsigned long)0x2 << 61) > > 0UL << 61 > 1UL << 61 > ... > > > +#define _SVPBMT_MASK (_SVPBMT_PMA | _SVPBMT_NC | _SVPBMT_IO) > > + > > +extern struct __riscv_svpbmt_struct { > > + unsigned long mask; > > + unsigned long mt_pma; > > + unsigned long mt_nc; > > + unsigned long mt_io; > > +} __riscv_svpbmt; > > + > > +#define _PAGE_MT_MASK __riscv_svpbmt.mask > > +#define _PAGE_MT_PMA __riscv_svpbmt.mt_pma > > +#define _PAGE_MT_NC __riscv_svpbmt.mt_nc > > +#define _PAGE_MT_IO __riscv_svpbmt.mt_io > > Using a struct over individual variables seems a little odd here. > How about : extern unsigned long _svpbmt_mask extern unsigned long _svpbmt_mt_pma extern unsigned long _svpbmt_mt_nc extern unsigned long _svpbmt_mt_io #define _PAGE_MT_MASK _svpbmt_mask #define _PAGE_MT_PMA _svpbmt_mt_pma #define _PAGE_MT_NC _svpbmt_mt_nc #define _PAGE_MT_IO _svpbmt_mt_io > Also why not use the standard names for these _PAGE bits used by > most other architectures? > > > - return (unsigned long)pfn_to_virt(pmd_val(pmd) >> _PAGE_PFN_SHIFT); > > + return (unsigned long)pfn_to_virt((pmd_val(pmd) & _PAGE_CHG_MASK) >> _PAGE_PFN_SHIFT); > > Overly long line, could use a helper. Btw, what is the point in having > this _PAGE_PFN_SHIFT macro to start with? > > _______________________________________________ > linux-riscv mailing list > linux-riscv@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-riscv > _______________________________________________ linux-riscv mailing list linux-riscv@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-riscv
next prev parent reply other threads:[~2021-10-25 14:50 UTC|newest] Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-10-25 4:06 [RESEND PATCH V3 0/2] riscv: add RISC-V Svpbmt Standard Extension supports wefu 2021-10-25 4:06 ` wefu 2021-10-25 4:06 ` [RESEND PATCH V3 1/2] dt-bindings: riscv: add mmu-supports-svpbmt for Svpbmt wefu 2021-10-25 4:06 ` wefu 2021-10-25 4:17 ` Anup Patel 2021-10-25 4:17 ` Anup Patel 2021-10-25 6:00 ` Guo Ren 2021-10-25 6:00 ` Guo Ren 2021-10-25 6:08 ` Anup Patel 2021-10-25 6:08 ` Anup Patel 2021-10-25 13:21 ` Philipp Tomsich 2021-10-25 13:21 ` Philipp Tomsich 2021-10-25 6:09 ` Guo Ren 2021-10-25 6:09 ` Guo Ren 2021-10-25 4:06 ` [RESEND PATCH V3 2/2] riscv: add RISC-V Svpbmt extension supports wefu 2021-10-25 4:06 ` wefu 2021-10-25 6:55 ` Christoph Hellwig 2021-10-25 6:55 ` Christoph Hellwig 2021-10-25 10:55 ` Wei Fu 2021-10-25 10:55 ` Wei Fu 2021-11-02 6:07 ` Christoph Hellwig 2021-11-02 6:07 ` Christoph Hellwig 2021-11-07 7:23 ` Wei Fu 2021-11-07 7:23 ` Wei Fu 2021-10-25 14:49 ` Wei Fu [this message] 2021-10-25 14:49 ` Wei Fu 2021-11-02 6:04 ` Christoph Hellwig 2021-11-02 6:04 ` Christoph Hellwig 2021-11-07 6:54 ` Wei Fu 2021-11-07 6:54 ` Wei Fu 2021-10-27 0:12 ` [RESEND PATCH V3 0/2] riscv: add RISC-V Svpbmt Standard Extension supports Palmer Dabbelt 2021-10-27 0:12 ` Palmer Dabbelt 2021-10-27 7:54 ` Heinrich Schuchardt 2021-10-27 7:54 ` Heinrich Schuchardt 2021-11-02 2:07 ` Guo Ren 2021-11-02 2:07 ` Guo Ren 2021-11-02 5:58 ` Christoph Hellwig 2021-11-02 5:58 ` Christoph Hellwig 2021-11-02 8:51 ` Guo Ren 2021-11-02 8:51 ` Guo Ren 2021-11-07 7:12 ` Wei Fu 2021-11-07 7:12 ` Wei Fu 2021-11-08 7:52 ` Christoph Hellwig 2021-11-08 7:52 ` Christoph Hellwig 2021-11-26 16:23 ` Wei Fu 2021-11-26 16:23 ` Wei Fu
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='CA+YCwKn1VA8=NSa=bdhP99jfpokYGHBvqVSKvZmdndQOz6UUPA@mail.gmail.com' \ --to=wefu@redhat.com \ --cc=allen.baum@esperantotech.com \ --cc=andrea.mondelli@huawei.com \ --cc=aniket.ponkshe@canonical.com \ --cc=anup.patel@wdc.com \ --cc=arnd@arndb.de \ --cc=atish.patra@wdc.com \ --cc=behrensj@mit.edu \ --cc=christoph.muellner@vrull.eu \ --cc=dlustig@nvidia.com \ --cc=drew@beagleboard.org \ --cc=gfavor@ventanamicro.com \ --cc=gordan.markus@canonical.com \ --cc=guoren@kernel.org \ --cc=guoren@linux.alibaba.com \ --cc=hch@infradead.org \ --cc=hch@lst.de \ --cc=heinrich.schuchardt@canonical.com \ --cc=huffman@cadence.com \ --cc=jscheid@ventanamicro.com \ --cc=lazyparser@gmail.com \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-riscv@lists.infradead.org \ --cc=liush@allwinnertech.com \ --cc=maxime@cerno.tech \ --cc=mick@ics.forth.gr \ --cc=palmerdabbelt@google.com \ --cc=philipp.tomsich@vrull.eu \ --cc=rtrauben@gmail.com \ --cc=taiten.peng@canonical.com \ --cc=wens@csie.org \ --cc=xinhaoqu@huawei.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.