|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v5 08/11] xen/riscv: rework G-stage mode handling
On 07.05.2026 10:58, Oleksii Kurochko wrote: > Rework G-stage mode handling to make the selected mode descriptor > reusable outside of p2m initialization, both for filling CPU nodes in > the device tree passed to dom0less guests and for per-domain G-stage > mode selection at domain creation time. > > Promote gstage_modes[] from a local __initconst variable inside > gstage_mode_detect() to a file-scope static const array, and convert > max_gstage_mode from an embedded struct (assigned by value) to a global > const pointer into gstage_modes[]. This allows referencing both the mode > identifier and the mode name after init without copying the descriptor. > Remove get_max_supported_mode(); its callers now dereference > max_gstage_mode->mode directly. > > Change struct p2m_domain::mode from an embedded gstage_mode_desc to a > const pointer into gstage_modes[], so each domain shares the descriptor > rather than carrying its own copy. > > Adjust the gstage_modes[] entries in three ways: > - Use lowercase names without the "x4" suffix (e.g. "sv39" instead of > "Sv39x4"). The DT mmu-type binding [1] does not include the suffix, > so the name can now be passed directly to the guest without > transformation. The suffix is appended only in the diagnostic > printk, where it remains informative. > - Use "none" for Bare mode (HGATP_MODE_OFF) to match the DT binding. > - Change paging_levels to represent the root page-table level index > (i.e. total paging levels minus one) rather than the total count. > P2M_ROOT_LEVEL() now returns the correct VPN index directly, without > requiring callers to subtract one or use hardcoded offsets. > > Add gstage_mode to xen_arch_domainconfig so the toolstack can > request a specific G-stage mode at domain creation time. Introduce > find_gstage_mode() to resolve a mode descriptor by HGATP_MODE_*, > capping the result at max_gstage_mode to prevent requesting a mode > the hardware does not support. Update p2m_init() to accept a > xen_domctl_createdomain pointer and call find_gstage_mode() > instead of hardcoding Sv39x4. > > Add arch_parse_dom0less_node() in a new dom0less-build.c to read the > "mmu-type" DT property from a guest domain node and store it in > boot_domain::create_cfg.arch.gstage_mode, falling back to maximum > supported mode when the property is absent. > > [1] > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/devicetree/bindings/riscv/cpus.yaml?h=v6.19-rc3#n82 > > Signed-off-by: Oleksii Kurochko <oleksii.kurochko@xxxxxxxxx> Acked-by: Jan Beulich <jbeulich@xxxxxxxx>
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |