On Fri, Mar 15, 2024 at 02:35:52PM +0100, Mark Kettenis wrote: > > Date: Fri, 15 Mar 2024 23:06:31 +1100 > > From: Jonathan Gray <j...@jsg.id.au> > > > > On Fri, Mar 15, 2024 at 11:29:28AM +0100, Marcin Juszkiewicz via arm wrote: > > > W dniu 15.03.2024 o 03:30, Jonathan Gray pisze: > > > > > OpenBSD 7.3 boots fine on all core types. OpenBSD 7.4 fails on > > > > > Neoverse-V1/N2/max. Same situation with today's 7.5-current snapshot. > > > > > > > > > > To track the problem I opened a bug against QEMU [1] to have all > > > > > information in one place. > > > > > > > > > > 1.https://gitlab.com/qemu-project/qemu/-/issues/2224 > > > > > > > > > > If I use older cores (like Neoverse-N1 which is default for sbsa-ref) > > > > > then installer boots fine: > > > > > > > I see the same with sbsa-ref using qemu 8.2.1 and the edk2 > > > > firmware you reference in the qemu issue. > > > > > > What made me wonder is that it feels like error on OpenBSD side. > > > 7.3 release boots, 7.4 and later do not. > > > > I tracked it down to PAC. > > > > https://github.com/openbsd/src/commit/4171e492c627a295b38565e1f04e0b7ba62913f8 > > > > If I disable it, qemu sbsa-ref with cpu max boots. > > Does this diff help?
Yes, boots with this instead. Does it also remove the need for the x13s workaround? > > Index: arch/arm64/arm64/locore.S > =================================================================== > RCS file: /cvs/src/sys/arch/arm64/arm64/locore.S,v > retrieving revision 1.45 > diff -u -p -r1.45 locore.S > --- arch/arm64/arm64/locore.S 12 Dec 2023 07:37:20 -0000 1.45 > +++ arch/arm64/arm64/locore.S 15 Mar 2024 13:34:25 -0000 > @@ -57,6 +57,7 @@ drop_to_el1: > > /* Configure the Hypervisor */ > mov x2, #(HCR_RW) > + orr x2, x2, #(HCR_API | HCR_APK) > msr hcr_el2, x2 > > /* Load the Virtualization Process ID Register */ > Index: arch/arm64/include/hypervisor.h > =================================================================== > RCS file: /cvs/src/sys/arch/arm64/include/hypervisor.h,v > retrieving revision 1.3 > diff -u -p -r1.3 hypervisor.h > --- arch/arm64/include/hypervisor.h 21 Feb 2021 13:14:47 -0000 1.3 > +++ arch/arm64/include/hypervisor.h 15 Mar 2024 13:34:25 -0000 > @@ -82,6 +82,8 @@ > #define HCR_CD 0x0000000100000000 > #define HCR_ID 0x0000000200000000 > #define HCR_E2H 0x0000000400000000 > +#define HCR_APK 0x0000010000000000 > +#define HCR_API 0x0000020000000000 > > #endif > >