diff --git a/xen/arch/arm/include/asm/processor.h b/xen/arch/arm/include/asm/processor.h index 509040a1cd..8ee8f88fb4 100644 --- a/xen/arch/arm/include/asm/processor.h +++ b/xen/arch/arm/include/asm/processor.h @@ -507,7 +507,6 @@ extern register_t __cpu_logical_map[]; /* .... If F == 1 */ #define PAR_FSC_SHIFT (1) #define PAR_FSC_MASK (_AC(0x3f,U)<> PAR_FSC_SHIFT, &level); + /* + * The only caller translates using "at s1e2r" (arm64) or ATS1HR + * (arm32), i.e. an EL2 stage 1 only translation. + */ + ASSERT(!(par & PAR_STAGE2)); - printk("PAR: %016"PRIx64": %s stage %d%s%s\n", - par, msg, - stage, - second_in_first ? " during second stage lookup" : "", - fsc_level_str(level)); + msg = decode_fsc((par & PAR_FSC_MASK) >> PAR_FSC_SHIFT, &level); + + printk("PAR: %016"PRIx64": %s stage 1%s\n", + par, msg, fsc_level_str(level)); panic("Error during Hypervisor-to-physical address translation\n"); }