[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH] xen/arm: skip holes in physical address space when setting up frametable
Hello Michał,
On 4/17/26 11:11 AM, Michal Orzel wrote:
Refactor setup_frametable_mappings() into init_frametable(), modeled
after x86's implementation. Instead of mapping one contiguous frametable
covering ram_start to ram_end (including holes), iterate the
pdx_group_valid bitmap to allocate and map frametable memory only for
valid PDX groups, skipping gaps in the physical address space. At the
moment we don't really take into account pdx_group_valid bitmap.
This reduces memory consumption on systems with sparse RAM layouts by
not allocating frametable entries for non-existent memory regions.
A file-local pdx_to_page() override is needed because the generic macro
in xen/include/xen/pdx.h does not account for ARM's non-zero
frametable_base_pdx.
Update the MPU implementation to match the new init_frametable()
signature. Since MPU has no virtual address translation (ma == va),
hole-skipping is not possible and the frametable remains a single
contiguous allocation.
Signed-off-by: Michal Orzel<michal.orzel@xxxxxxx>
---
We've been using this approach at AMD for a while now. Without this we would not
be able to boot some of our boards that have huge holes in the PA space, so I
consider this patch a great improvement.
Two things to consider as a follow-up in the future:
- change generic pdx_to_page, page_to_pdx to take into account offset that
on x86 is zero but on other arches it is not. The page list code is
for now unaffected because the offset cancels out,
- use the same on RISCV.
Do you have such plans to do that for RISC-V?
~ Oleksii
|