|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v2 6/6] xen/riscv: fix level_map_mask truncation on load_start
On Thu, 10 Sep 2026 11:34:54 +0200, Baptiste Le Duc
<baptiste.le-duc@xxxxxxxxxx> wrote:
> diff --git a/xen/arch/riscv/mm.c b/xen/arch/riscv/mm.c
> index 53bebbcabf..e7f2491257 100644
> --- a/xen/arch/riscv/mm.c
> +++ b/xen/arch/riscv/mm.c
> @@ -180,7 +180,7 @@ static bool __init check_pgtbl_mode_support(struct
> mmu_desc *mmu_desc,
> bool is_mode_supported = false;
> unsigned int index;
> unsigned int page_table_level = (mmu_desc->num_levels - 1);
> - unsigned level_map_mask = XEN_PT_LEVEL_MAP_MASK(page_table_level);
> + unsigned long level_map_mask = XEN_PT_LEVEL_MAP_MASK(page_table_level);
>
> unsigned long aligned_load_start = load_start & level_map_mask;
> unsigned long aligned_page_size = XEN_PT_LEVEL_SIZE(page_table_level);
This resolves the issue where Xen fails to correctly mask the upper 32 bits of
the physical address. Which make xen failed to boot on the SpacemiT K3, where
U-Boot boots the kernel image located at physical address 0x1_4000_0000 by
default.
In sv39, page_table_level=2 :
uboot bootm addr : 0x0000_0001_4000_0000
^
unsigned level_map_mask = 0x0000_0000_c000_0000
unsigned long level_map_mask = 0xffff_ffff_c000_0000
Tested-by: Zheng Zhang <zhangzheng@xxxxxxxxxxx>
--
Zhang Zheng <zhangzheng@xxxxxxxxxxx>
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |