On 06/01/2023 1:14 pm, Oleksii Kurochko wrote: > diff --git a/xen/arch/riscv/riscv64/head.S b/xen/arch/riscv/riscv64/head.S > index 990edb70a0..ddc7104701 100644 > --- a/xen/arch/riscv/riscv64/head.S > +++ b/xen/arch/riscv/riscv64/head.S > @@ -1,4 +1,10 @@ > .section .text.header, "ax", %progbits > > ENTRY(start) > - j start > + la sp, cpu0_boot_stack > + li t0, PAGE_SIZE > + add sp, sp, t0 > + > +_start_hang: > + wfi > + j _start_hang > diff --git a/xen/arch/riscv/setup.c b/xen/arch/riscv/setup.c > new file mode 100644 > index 0000000000..2c7dca1daa > --- /dev/null > +++ b/xen/arch/riscv/setup.c > @@ -0,0 +1,6 @@ > +#include <xen/init.h> > +#include <xen/compile.h> > + > +/* Xen stack for bringing up the first CPU. */ > +unsigned char __initdata cpu0_boot_stack[PAGE_SIZE] > + __aligned(PAGE_SIZE);
Ah, I didn't spot his when looking at the unified delta of the series. You want most of patch 7 merged into this, so we end up with +void __init noreturn start_xen(void) +{ + for ( ;; ) + asm volatile ("wfi"); + + unreachable(); +} in setup.c too. That means we don't transiently add _start_hang just to delete it 3 patches later. (And it will fix Jan's observation about the misaligned operand.) Adding the early_printk("Hello from C env\n"); line wants merging into patch 6. ~Andrew