[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH for 4.20? v3 0/3] Fixes for vmap_to_mfn() and pt_mapping_level
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 to set level=CONFIG_PAGING_TABLE 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-v3: - 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/mm.h | 2 +- xen/arch/riscv/include/asm/page.h | 9 ++ xen/arch/riscv/pt.c | 141 +++++++++++++++++++++++------- 3 files changed, 120 insertions(+), 32 deletions(-) -- 2.48.1
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |