[PATCH 0/5] Backport ARM64 VHE boot fixes to 6.6.y

Oliver Upton oupton at kernel.org
Wed Jul 1 17:01:32 PDT 2026


Circling back around...

On Wed, Jul 01, 2026 at 04:23:21PM -0700, Oliver Upton wrote:
> The subject prefix should be "[PATCH 6.6 0/5]" so people know right up
> front where this is going.
> 
> On Wed, Jul 01, 2026 at 08:43:37PM +0000, Colton Lewis wrote:
> > This series backports VHE CPU boot fixes to the 6.6.y stable branch.
> > 
> > These fixes are already present in the 6.12.y stable branch (and
> > newer), but are missing in 6.6.y. They are required to enable booting
> > L1 guests with nested virtualization enabled (kvm-arm.mode=nested).
> 
> It's a bit worse than this. The architecture retroactively made
> FEAT_E2H0 an optional feature, there are now implementations in the wild
> that do not support the feature.
> 
> > Without these patches, a 6.6.y guest boots with HCR_EL2.E2H
> > incorrectly configured (because it misses VHE-only detection or early
> > initialization), causing early boot hangs/trap loops.
> > 
> > Conflict resolutions:
> > - Patch 4 (KVM: arm64: Initialize HCR_EL2.E2H early) had conflicts in
> >   arch/arm64/kvm/hyp/nvhe/hyp-init.S due to differences in state
> >   initialization. Resolved by extracting EL2 state initialization into
> >   __kvm_init_el2_state.
> > - Patch 5 (arm64: Revamp HCR_EL2.E2H RES1 detection) had conflicts in
> >   arch/arm64/include/asm/el2_setup.h. Resolved by using raw msr hcr_el2
> >   instead of the missing msr_hcr_el2 macro.
> > 
> > 
> > Marc Zyngier (4):
> >   arm64: sysreg: Add layout for ID_AA64MMFR4_EL1
> >   arm64: Treat HCR_EL2.E2H as RES1 when ID_AA64MMFR4_EL1.E2H0 is
> >     negative
> >   arm64: Fix early handling of FEAT_E2H0 not being implemented
> >   arm64: Revamp HCR_EL2.E2H RES1 detection
> > 
> > Mark Rutland (1):
> >   KVM: arm64: Initialize HCR_EL2.E2H early

Please go through and correct all of the SHA1s for the cherry-picks,
smells like some LLM just hallucinated some bits given how close they
are to the real deal.

I also want to see that all KVM modes have been tested (nVHE, hVHE, VHE,
protected) before this gets picked up. Overall though taking this to
stable seems like the right thing to do.

Any reason why you've only done 6.6? The kernel was first aware of
E2H=RES1 as far back as 5.13.

Thanks,
Oliver



More information about the linux-arm-kernel mailing list