From: "David Hildenbrand (Arm)" <david@kernel.org>
To: Yeoreum Yun <yeoreum.yun@arm.com>,
Russell King <linux@armlinux.org.uk>,
Huacai Chen <chenhuacai@kernel.org>,
WANG Xuerui <kernel@xen0n.name>,
Thomas Bogendoerfer <tsbogend@alpha.franken.de>,
Catalin Marinas <catalin.marinas@arm.com>,
Will Deacon <will@kernel.org>, Arnd Bergmann <arnd@arndb.de>,
Andrew Morton <akpm@linux-foundation.org>,
Kairui Song <kasong@tencent.com>, Qi Zheng <qi.zheng@linux.dev>,
Shakeel Butt <shakeel.butt@linux.dev>,
Barry Song <baohua@kernel.org>,
Axel Rasmussen <axelrasmussen@google.com>,
Yuanchu Xie <yuanchu@google.com>, Wei Xu <weixugc@google.com>,
Johannes Weiner <hannes@cmpxchg.org>,
Michal Hocko <mhocko@kernel.org>,
Lorenzo Stoakes <ljs@kernel.org>,
Tianrui Zhao <zhaotianrui@loongson.cn>,
Bibo Mao <maobibo@loongson.cn>, Anup Patel <anup@brainfault.org>,
Atish Patra <atish.patra@linux.dev>,
Paul Walmsley <pjw@kernel.org>,
Palmer Dabbelt <palmer@dabbelt.com>,
Albert Ou <aou@eecs.berkeley.edu>,
Alexandre Ghiti <alex@ghiti.fr>,
Dave Hansen <dave.hansen@linux.intel.com>,
Andy Lutomirski <luto@kernel.org>,
Peter Zijlstra <peterz@infradead.org>,
Thomas Gleixner <tglx@kernel.org>, Ingo Molnar <mingo@redhat.com>,
Borislav Petkov <bp@alien8.de>,
x86@kernel.org, "H. Peter Anvin" <hpa@zytor.com>,
"Liam R. Howlett" <liam@infradead.org>,
Vlastimil Babka <vbabka@kernel.org>,
Mike Rapoport <rppt@kernel.org>,
Suren Baghdasaryan <surenb@google.com>,
Michal Hocko <mhocko@suse.com>, Jonas Bonn <jonas@southpole.se>,
Stefan Kristiansson <stefan.kristiansson@saunalahti.fi>,
Stafford Horne <shorne@gmail.com>
Cc: linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, loongarch@lists.linux.dev,
linux-mips@vger.kernel.org, linux-arch@vger.kernel.org,
linux-mm@kvack.org, kvm@vger.kernel.org,
kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org,
linux-openrisc@vger.kernel.org
Subject: Re: [PATCH 11/21] riscv: mm: use proper set_pXd() for generic compile-time folded patable in vmalloc_fault()
Date: Wed, 14 Oct 2026 11:37:48 +0200 [thread overview]
Message-ID: <e4bbf208-41d3-480f-92c4-231d69a749cd@kernel.org> (raw)
In-Reply-To: <20260921-dummy_ptxp3-v1-11-cd40cf68242e@arm.com>
On 9/21/26 12:55, Yeoreum Yun wrote:
> The behaviour of pXdp_get() will change with generic compile-time folded
> page tables, making it invalid to use set_pXd() with the result of
> pXdp_get(). Instead, the appropriate first-level set_pXd() must be paired
> with the corresponding pXdp_get().
>
> Therefore, call the appropriate set_pXd() for generic compile-time folded
> page tables so that vmalloc_fault() continues to handle folded entries
> correctly when checking pXd_present().
>
> There should be no functional change.
>
> Since most architectures use a similar pattern to handle vmalloc fault
> by syncing the faulted entry, it would be worth cleaning this up by
> introducing a common helper in the near future.
>
> Signed-off-by: Yeoreum Yun <yeoreum.yun@arm.com>
> ---
@ Riscv maintainers, is this good enough until we get some more generic cleanups
in this area?
> arch/riscv/mm/fault.c | 52 ++++++++++++++++++++++++++++++++-------------------
> 1 file changed, 33 insertions(+), 19 deletions(-)
>
> diff --git a/arch/riscv/mm/fault.c b/arch/riscv/mm/fault.c
> index 04ed6f8acae4f..b2bcaf10d13f1 100644
> --- a/arch/riscv/mm/fault.c
> +++ b/arch/riscv/mm/fault.c
> @@ -167,14 +167,16 @@ bad_area(struct pt_regs *regs, struct mm_struct *mm, int code,
>
> static inline void vmalloc_fault(struct pt_regs *regs, int code, unsigned long addr)
> {
> - pgd_t *pgd, *pgd_k;
> - pud_t *pud_k;
> - p4d_t *p4d_k;
> - pmd_t *pmd_k;
> - pte_t *pte_k;
> + pgd_t *pgdp_k, *pgdp, pgd_k;
> + p4d_t *p4dp_k, *p4dp;
> + pud_t *pudp_k, *pudp, pud_k;
> + pmd_t *pmdp_k, *pmdp, pmd_k;
> + pte_t *ptep_k;
> int index;
> unsigned long pfn;
>
> + BUILD_BUG_ON(CONFIG_PGTABLE_LEVELS != 5 && CONFIG_PGTABLE_LEVELS != 2);
> +
> /* User mode accesses just cause a SIGSEGV */
> if (user_mode(regs))
> return do_trap(regs, SIGSEGV, code, addr);
> @@ -189,39 +191,51 @@ static inline void vmalloc_fault(struct pt_regs *regs, int code, unsigned long a
> */
> index = pgd_index(addr);
> pfn = csr_read(CSR_SATP) & SATP_PPN;
> - pgd = (pgd_t *)pfn_to_virt(pfn) + index;
> - pgd_k = init_mm.pgd + index;
>
> - if (!pgd_present(pgdp_get(pgd_k))) {
> + pgdp = (pgd_t *)pfn_to_virt(pfn) + index;
> + pgdp_k = init_mm.pgd + index;
> +
> + pgd_k = pgdp_get(pgdp_k);
> + if (!pgd_present(pgd_k)) {
> no_context(regs, addr);
> return;
> }
> - set_pgd(pgd, pgdp_get(pgd_k));
> + if (CONFIG_PGTABLE_LEVELS == 5)
> + set_pgd(pgdp, pgd_k);
>
> - p4d_k = p4d_offset(pgd_k, addr);
> - if (!p4d_present(p4dp_get(p4d_k))) {
> + p4dp = p4d_offset(pgdp, addr);
> + p4dp_k = p4d_offset(pgdp_k, addr);
> + if (!p4d_present(p4dp_get(p4dp_k))) {
> no_context(regs, addr);
> return;
> }
>
> - pud_k = pud_offset(p4d_k, addr);
> - if (!pud_present(pudp_get(pud_k))) {
> + pudp = pud_offset(p4dp, addr);
> + pudp_k = pud_offset(p4dp_k, addr);
> +
> + pud_k = pudp_get(pudp_k);
> + if (!pud_present(pud_k)) {
> no_context(regs, addr);
> return;
> }
> - if (pud_leaf(pudp_get(pud_k)))
> + if (pud_leaf(pud_k))
> goto flush_tlb;
>
> /*
> * Since the vmalloc area is global, it is unnecessary
> * to copy individual PTEs
> */
> - pmd_k = pmd_offset(pud_k, addr);
> - if (!pmd_present(pmdp_get(pmd_k))) {
> + pmdp = pmd_offset(pudp, addr);
> + pmdp_k = pmd_offset(pudp_k, addr);
> +
> + pmd_k = pmdp_get(pmdp_k);
> + if (!pmd_present(pmd_k)) {
> no_context(regs, addr);
> return;
> }
> - if (pmd_leaf(pmdp_get(pmd_k)))
> + if (CONFIG_PGTABLE_LEVELS == 2)
> + set_pmd(pmdp, pmd_k);
> + if (pmd_leaf(pmd_k))
> goto flush_tlb;
>
> /*
> @@ -230,8 +244,8 @@ static inline void vmalloc_fault(struct pt_regs *regs, int code, unsigned long a
> * addresses. If we don't do this, this will just
> * silently loop forever.
> */
> - pte_k = pte_offset_kernel(pmd_k, addr);
> - if (!pte_present(ptep_get(pte_k))) {
> + ptep_k = pte_offset_kernel(pmdp_k, addr);
> + if (!pte_present(ptep_get(ptep_k))) {
> no_context(regs, addr);
> return;
> }
>
--
Cheers,
David
WARNING: multiple messages have this Message-ID (diff)
From: "David Hildenbrand (Arm)" <david@kernel.org>
To: Yeoreum Yun <yeoreum.yun@arm.com>,
Russell King <linux@armlinux.org.uk>,
Huacai Chen <chenhuacai@kernel.org>,
WANG Xuerui <kernel@xen0n.name>,
Thomas Bogendoerfer <tsbogend@alpha.franken.de>,
Catalin Marinas <catalin.marinas@arm.com>,
Will Deacon <will@kernel.org>, Arnd Bergmann <arnd@arndb.de>,
Andrew Morton <akpm@linux-foundation.org>,
Kairui Song <kasong@tencent.com>, Qi Zheng <qi.zheng@linux.dev>,
Shakeel Butt <shakeel.butt@linux.dev>,
Barry Song <baohua@kernel.org>,
Axel Rasmussen <axelrasmussen@google.com>,
Yuanchu Xie <yuanchu@google.com>, Wei Xu <weixugc@google.com>,
Johannes Weiner <hannes@cmpxchg.org>,
Michal Hocko <mhocko@kernel.org>,
Lorenzo Stoakes <ljs@kernel.org>,
Tianrui Zhao <zhaotianrui@loongson.cn>,
Bibo Mao <maobibo@loongson.cn>, Anup Patel <anup@brainfault.org>,
Atish Patra <atish.patra@linux.dev>,
Paul Walmsley <pjw@kernel.org>,
Palmer Dabbelt <palmer@dabbelt.com>,
Albert Ou <aou@eecs.berkeley.edu>,
Alexandre Ghiti <alex@ghiti.fr>,
Dave Hansen <dave.hansen@linux.intel.com>,
Andy Lutomirski <luto@kernel.org>,
Peter Zijlstra <peterz@infradead.org>,
Thomas Gleixner <tglx@kernel.org>, Ingo Molnar <mingo@redhat.com>,
Borislav Petkov <bp@alien8.de>,
x86@kernel.org, "H. Peter Anvin" <hpa@zytor.com>,
"Liam R. Howlett" <liam@infradead.org>,
Vlastimil Babka <vbabka@kernel.org>,
Mike Rapoport <rppt@kernel.org>,
Suren Baghdasaryan <surenb@google.com>,
Michal Hocko <mhocko@suse.com>, Jonas Bonn <jonas@southpole.se>,
Stefan Kristiansson <stefan.kristiansson@saunalahti.fi>,
Stafford Horne <shorne@gmail.com>
Cc: linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, loongarch@lists.linux.dev,
linux-mips@vger.kernel.org, linux-arch@vger.kernel.org,
linux-mm@kvack.org, kvm@vger.kernel.org,
kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org,
linux-openrisc@vger.kernel.org
Subject: Re: [PATCH 11/21] riscv: mm: use proper set_pXd() for generic compile-time folded patable in vmalloc_fault()
Date: Wed, 14 Oct 2026 11:37:48 +0200 [thread overview]
Message-ID: <e4bbf208-41d3-480f-92c4-231d69a749cd@kernel.org> (raw)
In-Reply-To: <20260921-dummy_ptxp3-v1-11-cd40cf68242e@arm.com>
On 9/21/26 12:55, Yeoreum Yun wrote:
> The behaviour of pXdp_get() will change with generic compile-time folded
> page tables, making it invalid to use set_pXd() with the result of
> pXdp_get(). Instead, the appropriate first-level set_pXd() must be paired
> with the corresponding pXdp_get().
>
> Therefore, call the appropriate set_pXd() for generic compile-time folded
> page tables so that vmalloc_fault() continues to handle folded entries
> correctly when checking pXd_present().
>
> There should be no functional change.
>
> Since most architectures use a similar pattern to handle vmalloc fault
> by syncing the faulted entry, it would be worth cleaning this up by
> introducing a common helper in the near future.
>
> Signed-off-by: Yeoreum Yun <yeoreum.yun@arm.com>
> ---
@ Riscv maintainers, is this good enough until we get some more generic cleanups
in this area?
> arch/riscv/mm/fault.c | 52 ++++++++++++++++++++++++++++++++-------------------
> 1 file changed, 33 insertions(+), 19 deletions(-)
>
> diff --git a/arch/riscv/mm/fault.c b/arch/riscv/mm/fault.c
> index 04ed6f8acae4f..b2bcaf10d13f1 100644
> --- a/arch/riscv/mm/fault.c
> +++ b/arch/riscv/mm/fault.c
> @@ -167,14 +167,16 @@ bad_area(struct pt_regs *regs, struct mm_struct *mm, int code,
>
> static inline void vmalloc_fault(struct pt_regs *regs, int code, unsigned long addr)
> {
> - pgd_t *pgd, *pgd_k;
> - pud_t *pud_k;
> - p4d_t *p4d_k;
> - pmd_t *pmd_k;
> - pte_t *pte_k;
> + pgd_t *pgdp_k, *pgdp, pgd_k;
> + p4d_t *p4dp_k, *p4dp;
> + pud_t *pudp_k, *pudp, pud_k;
> + pmd_t *pmdp_k, *pmdp, pmd_k;
> + pte_t *ptep_k;
> int index;
> unsigned long pfn;
>
> + BUILD_BUG_ON(CONFIG_PGTABLE_LEVELS != 5 && CONFIG_PGTABLE_LEVELS != 2);
> +
> /* User mode accesses just cause a SIGSEGV */
> if (user_mode(regs))
> return do_trap(regs, SIGSEGV, code, addr);
> @@ -189,39 +191,51 @@ static inline void vmalloc_fault(struct pt_regs *regs, int code, unsigned long a
> */
> index = pgd_index(addr);
> pfn = csr_read(CSR_SATP) & SATP_PPN;
> - pgd = (pgd_t *)pfn_to_virt(pfn) + index;
> - pgd_k = init_mm.pgd + index;
>
> - if (!pgd_present(pgdp_get(pgd_k))) {
> + pgdp = (pgd_t *)pfn_to_virt(pfn) + index;
> + pgdp_k = init_mm.pgd + index;
> +
> + pgd_k = pgdp_get(pgdp_k);
> + if (!pgd_present(pgd_k)) {
> no_context(regs, addr);
> return;
> }
> - set_pgd(pgd, pgdp_get(pgd_k));
> + if (CONFIG_PGTABLE_LEVELS == 5)
> + set_pgd(pgdp, pgd_k);
>
> - p4d_k = p4d_offset(pgd_k, addr);
> - if (!p4d_present(p4dp_get(p4d_k))) {
> + p4dp = p4d_offset(pgdp, addr);
> + p4dp_k = p4d_offset(pgdp_k, addr);
> + if (!p4d_present(p4dp_get(p4dp_k))) {
> no_context(regs, addr);
> return;
> }
>
> - pud_k = pud_offset(p4d_k, addr);
> - if (!pud_present(pudp_get(pud_k))) {
> + pudp = pud_offset(p4dp, addr);
> + pudp_k = pud_offset(p4dp_k, addr);
> +
> + pud_k = pudp_get(pudp_k);
> + if (!pud_present(pud_k)) {
> no_context(regs, addr);
> return;
> }
> - if (pud_leaf(pudp_get(pud_k)))
> + if (pud_leaf(pud_k))
> goto flush_tlb;
>
> /*
> * Since the vmalloc area is global, it is unnecessary
> * to copy individual PTEs
> */
> - pmd_k = pmd_offset(pud_k, addr);
> - if (!pmd_present(pmdp_get(pmd_k))) {
> + pmdp = pmd_offset(pudp, addr);
> + pmdp_k = pmd_offset(pudp_k, addr);
> +
> + pmd_k = pmdp_get(pmdp_k);
> + if (!pmd_present(pmd_k)) {
> no_context(regs, addr);
> return;
> }
> - if (pmd_leaf(pmdp_get(pmd_k)))
> + if (CONFIG_PGTABLE_LEVELS == 2)
> + set_pmd(pmdp, pmd_k);
> + if (pmd_leaf(pmd_k))
> goto flush_tlb;
>
> /*
> @@ -230,8 +244,8 @@ static inline void vmalloc_fault(struct pt_regs *regs, int code, unsigned long a
> * addresses. If we don't do this, this will just
> * silently loop forever.
> */
> - pte_k = pte_offset_kernel(pmd_k, addr);
> - if (!pte_present(ptep_get(pte_k))) {
> + ptep_k = pte_offset_kernel(pmdp_k, addr);
> + if (!pte_present(ptep_get(ptep_k))) {
> no_context(regs, addr);
> return;
> }
>
--
Cheers,
David
--
kvm-riscv mailing list
kvm-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kvm-riscv
WARNING: multiple messages have this Message-ID (diff)
From: "David Hildenbrand (Arm)" <david@kernel.org>
To: Yeoreum Yun <yeoreum.yun@arm.com>,
Russell King <linux@armlinux.org.uk>,
Huacai Chen <chenhuacai@kernel.org>,
WANG Xuerui <kernel@xen0n.name>,
Thomas Bogendoerfer <tsbogend@alpha.franken.de>,
Catalin Marinas <catalin.marinas@arm.com>,
Will Deacon <will@kernel.org>, Arnd Bergmann <arnd@arndb.de>,
Andrew Morton <akpm@linux-foundation.org>,
Kairui Song <kasong@tencent.com>, Qi Zheng <qi.zheng@linux.dev>,
Shakeel Butt <shakeel.butt@linux.dev>,
Barry Song <baohua@kernel.org>,
Axel Rasmussen <axelrasmussen@google.com>,
Yuanchu Xie <yuanchu@google.com>, Wei Xu <weixugc@google.com>,
Johannes Weiner <hannes@cmpxchg.org>,
Michal Hocko <mhocko@kernel.org>,
Lorenzo Stoakes <ljs@kernel.org>,
Tianrui Zhao <zhaotianrui@loongson.cn>,
Bibo Mao <maobibo@loongson.cn>, Anup Patel <anup@brainfault.org>,
Atish Patra <atish.patra@linux.dev>,
Paul Walmsley <pjw@kernel.org>,
Palmer Dabbelt <palmer@dabbelt.com>,
Albert Ou <aou@eecs.berkeley.edu>,
Alexandre Ghiti <alex@ghiti.fr>,
Dave Hansen <dave.hansen@linux.intel.com>,
Andy Lutomirski <luto@kernel.org>,
Peter Zijlstra <peterz@infradead.org>,
Thomas Gleixner <tglx@kernel.org>, Ingo Molnar <mingo@redhat.com>,
Borislav Petkov <bp@alien8.de>,
x86@kernel.org, "H. Peter Anvin" <hpa@zytor.com>,
"Liam R. Howlett" <liam@infradead.org>,
Vlastimil Babka <vbabka@kernel.org>,
Mike Rapoport <rppt@kernel.org>,
Suren Baghdasaryan <surenb@google.com>,
Michal Hocko <mhocko@suse.com>, Jonas Bonn <jonas@southpole.se>,
Stefan Kristiansson <stefan.kristiansson@saunalahti.fi>,
Stafford Horne <shorne@gmail.com>
Cc: linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, loongarch@lists.linux.dev,
linux-mips@vger.kernel.org, linux-arch@vger.kernel.org,
linux-mm@kvack.org, kvm@vger.kernel.org,
kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org,
linux-openrisc@vger.kernel.org
Subject: Re: [PATCH 11/21] riscv: mm: use proper set_pXd() for generic compile-time folded patable in vmalloc_fault()
Date: Wed, 14 Oct 2026 11:37:48 +0200 [thread overview]
Message-ID: <e4bbf208-41d3-480f-92c4-231d69a749cd@kernel.org> (raw)
In-Reply-To: <20260921-dummy_ptxp3-v1-11-cd40cf68242e@arm.com>
On 9/21/26 12:55, Yeoreum Yun wrote:
> The behaviour of pXdp_get() will change with generic compile-time folded
> page tables, making it invalid to use set_pXd() with the result of
> pXdp_get(). Instead, the appropriate first-level set_pXd() must be paired
> with the corresponding pXdp_get().
>
> Therefore, call the appropriate set_pXd() for generic compile-time folded
> page tables so that vmalloc_fault() continues to handle folded entries
> correctly when checking pXd_present().
>
> There should be no functional change.
>
> Since most architectures use a similar pattern to handle vmalloc fault
> by syncing the faulted entry, it would be worth cleaning this up by
> introducing a common helper in the near future.
>
> Signed-off-by: Yeoreum Yun <yeoreum.yun@arm.com>
> ---
@ Riscv maintainers, is this good enough until we get some more generic cleanups
in this area?
> arch/riscv/mm/fault.c | 52 ++++++++++++++++++++++++++++++++-------------------
> 1 file changed, 33 insertions(+), 19 deletions(-)
>
> diff --git a/arch/riscv/mm/fault.c b/arch/riscv/mm/fault.c
> index 04ed6f8acae4f..b2bcaf10d13f1 100644
> --- a/arch/riscv/mm/fault.c
> +++ b/arch/riscv/mm/fault.c
> @@ -167,14 +167,16 @@ bad_area(struct pt_regs *regs, struct mm_struct *mm, int code,
>
> static inline void vmalloc_fault(struct pt_regs *regs, int code, unsigned long addr)
> {
> - pgd_t *pgd, *pgd_k;
> - pud_t *pud_k;
> - p4d_t *p4d_k;
> - pmd_t *pmd_k;
> - pte_t *pte_k;
> + pgd_t *pgdp_k, *pgdp, pgd_k;
> + p4d_t *p4dp_k, *p4dp;
> + pud_t *pudp_k, *pudp, pud_k;
> + pmd_t *pmdp_k, *pmdp, pmd_k;
> + pte_t *ptep_k;
> int index;
> unsigned long pfn;
>
> + BUILD_BUG_ON(CONFIG_PGTABLE_LEVELS != 5 && CONFIG_PGTABLE_LEVELS != 2);
> +
> /* User mode accesses just cause a SIGSEGV */
> if (user_mode(regs))
> return do_trap(regs, SIGSEGV, code, addr);
> @@ -189,39 +191,51 @@ static inline void vmalloc_fault(struct pt_regs *regs, int code, unsigned long a
> */
> index = pgd_index(addr);
> pfn = csr_read(CSR_SATP) & SATP_PPN;
> - pgd = (pgd_t *)pfn_to_virt(pfn) + index;
> - pgd_k = init_mm.pgd + index;
>
> - if (!pgd_present(pgdp_get(pgd_k))) {
> + pgdp = (pgd_t *)pfn_to_virt(pfn) + index;
> + pgdp_k = init_mm.pgd + index;
> +
> + pgd_k = pgdp_get(pgdp_k);
> + if (!pgd_present(pgd_k)) {
> no_context(regs, addr);
> return;
> }
> - set_pgd(pgd, pgdp_get(pgd_k));
> + if (CONFIG_PGTABLE_LEVELS == 5)
> + set_pgd(pgdp, pgd_k);
>
> - p4d_k = p4d_offset(pgd_k, addr);
> - if (!p4d_present(p4dp_get(p4d_k))) {
> + p4dp = p4d_offset(pgdp, addr);
> + p4dp_k = p4d_offset(pgdp_k, addr);
> + if (!p4d_present(p4dp_get(p4dp_k))) {
> no_context(regs, addr);
> return;
> }
>
> - pud_k = pud_offset(p4d_k, addr);
> - if (!pud_present(pudp_get(pud_k))) {
> + pudp = pud_offset(p4dp, addr);
> + pudp_k = pud_offset(p4dp_k, addr);
> +
> + pud_k = pudp_get(pudp_k);
> + if (!pud_present(pud_k)) {
> no_context(regs, addr);
> return;
> }
> - if (pud_leaf(pudp_get(pud_k)))
> + if (pud_leaf(pud_k))
> goto flush_tlb;
>
> /*
> * Since the vmalloc area is global, it is unnecessary
> * to copy individual PTEs
> */
> - pmd_k = pmd_offset(pud_k, addr);
> - if (!pmd_present(pmdp_get(pmd_k))) {
> + pmdp = pmd_offset(pudp, addr);
> + pmdp_k = pmd_offset(pudp_k, addr);
> +
> + pmd_k = pmdp_get(pmdp_k);
> + if (!pmd_present(pmd_k)) {
> no_context(regs, addr);
> return;
> }
> - if (pmd_leaf(pmdp_get(pmd_k)))
> + if (CONFIG_PGTABLE_LEVELS == 2)
> + set_pmd(pmdp, pmd_k);
> + if (pmd_leaf(pmd_k))
> goto flush_tlb;
>
> /*
> @@ -230,8 +244,8 @@ static inline void vmalloc_fault(struct pt_regs *regs, int code, unsigned long a
> * addresses. If we don't do this, this will just
> * silently loop forever.
> */
> - pte_k = pte_offset_kernel(pmd_k, addr);
> - if (!pte_present(ptep_get(pte_k))) {
> + ptep_k = pte_offset_kernel(pmdp_k, addr);
> + if (!pte_present(ptep_get(ptep_k))) {
> no_context(regs, addr);
> return;
> }
>
--
Cheers,
David
_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv
next prev parent reply other threads:[~2026-10-14 9:38 UTC|newest]
Thread overview: 91+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-21 10:55 [PATCH 00/21] mm: change behavior of pXdp_get()/pXd_page() in compile-time folded pgtable Yeoreum Yun
2026-09-21 10:55 ` Yeoreum Yun
2026-09-21 10:55 ` Yeoreum Yun
2026-09-21 10:55 ` [PATCH 01/21] ARM: mm: make nommu pgd_t a scalar Yeoreum Yun
2026-09-21 10:55 ` Yeoreum Yun
2026-09-21 10:55 ` Yeoreum Yun
2026-09-21 10:55 ` [PATCH 02/21] ARM: mm: make 2-level " Yeoreum Yun
2026-09-21 10:55 ` Yeoreum Yun
2026-09-21 10:55 ` Yeoreum Yun
2026-09-21 10:55 ` [PATCH 03/21] ARM: mm: remove custom pgdp_get() Yeoreum Yun
2026-09-21 10:55 ` Yeoreum Yun
2026-09-21 10:55 ` Yeoreum Yun
2026-09-21 10:55 ` [PATCH 04/21] LoongArch: mm: define pud_leaf() only when PUD exists Yeoreum Yun
2026-09-21 10:55 ` Yeoreum Yun
2026-09-21 10:55 ` Yeoreum Yun
2026-09-21 10:55 ` [PATCH 05/21] MIPS: " Yeoreum Yun
2026-09-21 10:55 ` Yeoreum Yun
2026-09-21 10:55 ` Yeoreum Yun
2026-09-21 10:55 ` [PATCH 06/21] mm/pgtable: define (pgd|p4d|pud)_leaf() for folded page tables Yeoreum Yun
2026-09-21 10:55 ` Yeoreum Yun
2026-09-21 10:55 ` Yeoreum Yun
2026-09-21 11:15 ` sashiko-bot
2026-09-21 10:55 ` [PATCH 07/21] mm/pgtable: define (pgd|p4d|pud)_offset_lockless() " Yeoreum Yun
2026-09-21 10:55 ` Yeoreum Yun
2026-09-21 10:55 ` Yeoreum Yun
2026-09-21 10:55 ` [PATCH 08/21] mm: vmscan: remove stack copy address of pud/pmd pass in walk_pud/pmd_range() Yeoreum Yun
2026-09-21 10:55 ` Yeoreum Yun
2026-09-21 10:55 ` Yeoreum Yun
2026-09-21 10:55 ` [PATCH 09/21] loongarch: kvm: remove stack copy address of pXd in pXd_offset() Yeoreum Yun
2026-09-21 10:55 ` Yeoreum Yun
2026-09-21 10:55 ` Yeoreum Yun
2026-09-21 10:55 ` [PATCH 10/21] riscv: " Yeoreum Yun
2026-09-21 10:55 ` Yeoreum Yun
2026-09-21 10:55 ` Yeoreum Yun
2026-09-21 10:55 ` [PATCH 11/21] riscv: mm: use proper set_pXd() for generic compile-time folded patable in vmalloc_fault() Yeoreum Yun
2026-09-21 10:55 ` Yeoreum Yun
2026-09-21 10:55 ` Yeoreum Yun
2026-10-14 9:37 ` David Hildenbrand (Arm) [this message]
2026-10-14 9:37 ` David Hildenbrand (Arm)
2026-10-14 9:37 ` David Hildenbrand (Arm)
2026-09-21 10:55 ` [PATCH 12/21] mm/pgtable: redefine PGTABLE_LEVEL enum with ascend order from PGD Yeoreum Yun
2026-09-21 10:55 ` Yeoreum Yun
2026-09-21 10:55 ` Yeoreum Yun
2026-09-21 10:55 ` [PATCH 13/21] x86/mm: Introduce helper for checking direct map 1G page support Yeoreum Yun
2026-09-21 10:55 ` Yeoreum Yun
2026-09-21 10:55 ` Yeoreum Yun
2026-09-21 10:55 ` [PATCH 14/21] x86: mm: use pgtable_level enum in effective_prot_pXd() Yeoreum Yun
2026-09-21 10:55 ` Yeoreum Yun
2026-09-21 10:55 ` Yeoreum Yun
2026-09-21 10:55 ` [PATCH 15/21] x86: mm: carve out the generic compile-time folded pgtable case in effective_prot() Yeoreum Yun
2026-09-21 10:55 ` Yeoreum Yun
2026-09-21 10:55 ` Yeoreum Yun
2026-09-21 10:55 ` [PATCH 16/21] openrisc/pgtable: drop __pmd_offset() Yeoreum Yun
2026-09-21 10:55 ` Yeoreum Yun
2026-09-21 10:55 ` Yeoreum Yun
2026-09-21 10:55 ` [PATCH 17/21] mm/pgtable: optimize pmdp_get() and friends for folded pagetable levels Yeoreum Yun
2026-09-21 10:55 ` Yeoreum Yun
2026-09-21 10:55 ` Yeoreum Yun
2026-09-21 10:55 ` [PATCH 18/21] mm/pgtable: catch abuse of folded dummy pgd_t/p4d_t/pud_t Yeoreum Yun
2026-09-21 10:55 ` Yeoreum Yun
2026-09-21 10:55 ` Yeoreum Yun
2026-09-21 10:55 ` [PATCH 19/21] mm/pgtable: disallow calling (pgd|p4d|pud)_page, pgd_page_vaddr() and (p4d|pud)_pgtable with dummy Yeoreum Yun
2026-09-21 10:55 ` Yeoreum Yun
2026-09-21 10:55 ` Yeoreum Yun
2026-09-21 10:55 ` [PATCH 20/21] mm/pgtable: disallow calling folded set_pgd/set_p4d/set_pud " Yeoreum Yun
2026-09-21 10:55 ` Yeoreum Yun
2026-09-21 10:55 ` Yeoreum Yun
2026-09-21 10:55 ` [PATCH 21/21] Documentation: mm: clarify behaviour of compile-time folded page tables Yeoreum Yun
2026-09-21 10:55 ` Yeoreum Yun
2026-09-21 10:55 ` Yeoreum Yun
2026-09-21 16:20 ` Randy Dunlap
2026-09-21 16:20 ` Randy Dunlap
2026-09-21 16:20 ` Randy Dunlap
2026-09-21 20:26 ` Yeoreum Yun
2026-09-21 20:26 ` Yeoreum Yun
2026-09-21 20:26 ` Yeoreum Yun
2026-09-21 21:11 ` [PATCH 00/21] mm: change behavior of pXdp_get()/pXd_page() in compile-time folded pgtable Muhammad Usama Anjum
2026-09-21 21:11 ` Muhammad Usama Anjum
2026-09-21 21:11 ` Muhammad Usama Anjum
2026-10-02 15:19 ` Yeoreum Yun
2026-10-02 15:19 ` Yeoreum Yun
2026-10-02 15:19 ` Yeoreum Yun
2026-10-13 9:31 ` Yeoreum Yun
2026-10-13 9:31 ` Yeoreum Yun
2026-10-13 9:31 ` Yeoreum Yun
2026-10-14 9:37 ` David Hildenbrand (Arm)
2026-10-14 9:37 ` David Hildenbrand (Arm)
2026-10-14 9:37 ` David Hildenbrand (Arm)
2026-10-14 9:40 ` Yeoreum Yun
2026-10-14 9:40 ` Yeoreum Yun
2026-10-14 9:40 ` Yeoreum Yun
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=e4bbf208-41d3-480f-92c4-231d69a749cd@kernel.org \
--to=david@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=alex@ghiti.fr \
--cc=anup@brainfault.org \
--cc=aou@eecs.berkeley.edu \
--cc=arnd@arndb.de \
--cc=atish.patra@linux.dev \
--cc=axelrasmussen@google.com \
--cc=baohua@kernel.org \
--cc=bp@alien8.de \
--cc=catalin.marinas@arm.com \
--cc=chenhuacai@kernel.org \
--cc=dave.hansen@linux.intel.com \
--cc=hannes@cmpxchg.org \
--cc=hpa@zytor.com \
--cc=jonas@southpole.se \
--cc=kasong@tencent.com \
--cc=kernel@xen0n.name \
--cc=kvm-riscv@lists.infradead.org \
--cc=kvm@vger.kernel.org \
--cc=liam@infradead.org \
--cc=linux-arch@vger.kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mips@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linux-openrisc@vger.kernel.org \
--cc=linux-riscv@lists.infradead.org \
--cc=linux@armlinux.org.uk \
--cc=ljs@kernel.org \
--cc=loongarch@lists.linux.dev \
--cc=luto@kernel.org \
--cc=maobibo@loongson.cn \
--cc=mhocko@kernel.org \
--cc=mhocko@suse.com \
--cc=mingo@redhat.com \
--cc=palmer@dabbelt.com \
--cc=peterz@infradead.org \
--cc=pjw@kernel.org \
--cc=qi.zheng@linux.dev \
--cc=rppt@kernel.org \
--cc=shakeel.butt@linux.dev \
--cc=shorne@gmail.com \
--cc=stefan.kristiansson@saunalahti.fi \
--cc=surenb@google.com \
--cc=tglx@kernel.org \
--cc=tsbogend@alpha.franken.de \
--cc=vbabka@kernel.org \
--cc=weixugc@google.com \
--cc=will@kernel.org \
--cc=x86@kernel.org \
--cc=yeoreum.yun@arm.com \
--cc=yuanchu@google.com \
--cc=zhaotianrui@loongson.cn \
/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: link
Be 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.