All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 for 4.20? 0/3] Fixes for vmap_to_mfn() and pt_mapping_level
@ 2025-02-03 13:12 Oleksii Kurochko
  2025-02-03 13:12 ` [PATCH v2 for 4.20? 1/3] xen/riscv: implement software page table walking Oleksii Kurochko
                   ` (2 more replies)
  0 siblings, 3 replies; 12+ messages in thread
From: Oleksii Kurochko @ 2025-02-03 13:12 UTC (permalink / raw)
  To: xen-devel
  Cc: Oleksii Kurochko, Alistair Francis, Bob Eshleman, Connor Davis,
	Andrew Cooper, Anthony PERARD, Michal Orzel, Jan Beulich,
	Julien Grall, Roger Pau Monné, Stefano Stabellini

Introduce pt_walk(), which does software page table walking to resolve the
following issues:
1. vmap_to_mfn() uses virt_to_maddr(), which is designed to work with VA
   from either the direct map region or Xen's linkage region (XEN_VIRT_START),
   thereby an assertion will occur if it is used with other regions, in
   particular for the VMAP region. The solution is usage of pt_walk() for
   vmap_to_mfn().
2. pt_mapping_level() returns incorrect page table level in the case when
   mfn==INVALID_MFN when, for example, VA was mapped to PA using 4k mapping,
   but during destroying/modification pt_mapping_level() could return incorrect
   page table level as when mfn==INVALID_MFN then only VA is taking into account
   for page table level calculation and so if VA is page table level 1 aligned
   then page_mapping_level() will return level 1 ( instead of level 0 as VA was
   mapped to PA using 4k mapping so there is incostinency here ).
   The solution is an introduction of PTE_LEAF_SEACH bit to tell pt_update() algo
   that it should use pt_walk() to find proper page table entry instead of
   using for searching of page table entry based on precalculated by
   pt_mapping_level() `level` and `order` values.

It would be nice  to have these fixes in Xen 4.20 but isn't really critical as
there is no any users for RISC-V port at this moment.

---
Changes in v2:
 - update the commit message.
 - other changes look in specific patch.

Oleksii Kurochko (3):
  xen/riscv: implement software page table walking
  xen/riscv: update defintion of vmap_to_mfn()
  xen/riscv: update mfn calculation in pt_mapping_level()

 xen/arch/riscv/include/asm/cmpxchg.h |   1 +
 xen/arch/riscv/include/asm/mm.h      |  18 +++-
 xen/arch/riscv/include/asm/page.h    |  30 +++---
 xen/arch/riscv/mm.c                  |  14 +++
 xen/arch/riscv/pt.c                  | 142 ++++++++++++++++++++-------
 5 files changed, 156 insertions(+), 49 deletions(-)

-- 
2.48.1



^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2025-02-06 11:17 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-02-03 13:12 [PATCH v2 for 4.20? 0/3] Fixes for vmap_to_mfn() and pt_mapping_level Oleksii Kurochko
2025-02-03 13:12 ` [PATCH v2 for 4.20? 1/3] xen/riscv: implement software page table walking Oleksii Kurochko
2025-02-04 13:50   ` Jan Beulich
2025-02-05 16:55     ` Oleksii Kurochko
2025-02-06 11:15       ` Jan Beulich
2025-02-03 13:12 ` [PATCH v2 for 4.20? 2/3] xen/riscv: update defintion of vmap_to_mfn() Oleksii Kurochko
2025-02-04 13:56   ` Jan Beulich
2025-02-05 16:58     ` Oleksii Kurochko
2025-02-06 11:17       ` Jan Beulich
2025-02-03 13:12 ` [PATCH v2 3/3] xen/riscv: update mfn calculation in pt_mapping_level() Oleksii Kurochko
2025-02-04 14:57   ` Jan Beulich
2025-02-05 17:55     ` Oleksii Kurochko

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.