Hi Mostafa, On Thu, 24 Oct 2024 17:06:14 +0100, Mostafa Saleh <smostafa@xxxxxxxxxx> wrote: > > Commit 5053c3f0519c ("KVM: arm64: Use hVHE in pKVM by default on CPUs with > VHE support") modified the behaviour of "kvm-arm.mode=protected" without > the updating the kernel parameters doc. > > Update it to match the current implementation. > > Also, update required architecture version for nested virtualization as > suggested by Marc. > > Cc: Will Deacon <will@xxxxxxxxxx> > Cc: Marc Zyngier <maz@xxxxxxxxxx> > > Signed-off-by: Mostafa Saleh <smostafa@xxxxxxxxxx> > > --- > v2: Update nested value also Thanks for that. However... > --- > Documentation/admin-guide/kernel-parameters.txt | 10 +++++++--- > 1 file changed, 7 insertions(+), 3 deletions(-) > > diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt > index 1518343bbe22..d5b771e5cb5b 100644 > --- a/Documentation/admin-guide/kernel-parameters.txt > +++ b/Documentation/admin-guide/kernel-parameters.txt > @@ -2740,12 +2740,16 @@ > nvhe: Standard nVHE-based mode, without support for > protected guests. > > - protected: nVHE-based mode with support for guests whose > + protected: hVHE-based mode with support for guests whose > state is kept private from the host. > + In case hVHE is not supported in hardware, it will > + boot with protected nVHE. > + nVHE protected mode can still be forced on VHE systems > + using "kvm_arm.mode=protected arm64_sw.hvhe=0 id_aa64mmfr1.vh=0" I probably didn't explain myself very well. I would like to avoid mentioning hVHE at all, because this is pretty confusing (and really an implementation detail). Instead, we can talk about VHE/nVHE, which are real architectural features. Also, I just realised that we can use your command-line magic for downgrading from VHE to nVHE in all cases, so I'd be suggesting something like this: diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt index 1518343bbe223..2bb19f1331fed 100644 --- a/Documentation/admin-guide/kernel-parameters.txt +++ b/Documentation/admin-guide/kernel-parameters.txt @@ -2740,8 +2740,9 @@ nvhe: Standard nVHE-based mode, without support for protected guests. - protected: nVHE-based mode with support for guests whose - state is kept private from the host. + protected: Mode with support for guests whose state is + kept private from the host, using VHE or + nVHE depending on HW support. nested: VHE-based mode with support for nested virtualization. Requires at least ARMv8.3 @@ -2749,8 +2750,11 @@ Defaults to VHE/nVHE based on hardware support. Setting mode to "protected" will disable kexec and hibernation - for the host. "nested" is experimental and should be - used with extreme caution. + for the host. To force nVHE on VHE hardware, add + "arm64_sw.hvhe=0 id_aa64mmfr1.vh=0" to the + command-line. + "nested" is experimental and should be used with + extreme caution. kvm-arm.vgic_v3_group0_trap= [KVM,ARM,EARLY] Trap guest accesses to GICv3 group-0 > > nested: VHE-based mode with support for nested > - virtualization. Requires at least ARMv8.3 > - hardware. > + virtualization. Requires at least ARMv8.4 > + hardware (with FEAT_NV2). That part looks good! Thanks, M. -- Without deviation from the norm, progress is not possible.