[PATCH] kvmtool: arm64: Report missing support for 32bit guests

Marc Zyngier maz at kernel.org
Thu Jul 2 11:51:24 EDT 2020


On 2020-07-02 16:37, Suzuki K Poulose wrote:
> Hi Marc
> 
> On 07/01/2020 04:42 PM, Marc Zyngier wrote:
>> On 2020-07-01 15:20, Suzuki K Poulose wrote:
>>> When the host doesn't support 32bit guests, the kvmtool fails
>>> without a proper message on what is wrong. i.e,
>>> 
>>>  $ lkvm run -c 1 Image --aarch32
>>>   # lkvm run -k Image -m 256 -c 1 --name guest-105618
>>>   Fatal: Unable to initialise vcpu
>>> 
>>> Given that there is no other easy way to check if the host supports 
>>> 32bit
>>> guests, it is always good to report this by checking the capability, 
>>> rather
>>> than leaving the users to hunt this down by looking at the code!
>>> 
>>> After this patch:
>>> 
>>>  $ lkvm run -c 1 Image --aarch32
>>>   # lkvm run -k Image -m 256 -c 1 --name guest-105695
>>>   Fatal: 32bit guests are not supported
>> 
>> Fancy!
>> 
>>> 
>>> Cc: Will Deacon <will at kernel.org>
>>> Reported-by: Sami Mujawar <sami.mujawar at arm.com>
>>> Signed-off-by: Suzuki K Poulose <suzuki.poulose at arm.com>
>>> ---
>>>  arm/kvm-cpu.c | 4 ++++
>>>  1 file changed, 4 insertions(+)
>>> 
>>> diff --git a/arm/kvm-cpu.c b/arm/kvm-cpu.c
>>> index 554414f..2acecae 100644
>>> --- a/arm/kvm-cpu.c
>>> +++ b/arm/kvm-cpu.c
>>> @@ -46,6 +46,10 @@ struct kvm_cpu *kvm_cpu__arch_init(struct kvm 
>>> *kvm,
>>> unsigned long cpu_id)
>>>          .features = ARM_VCPU_FEATURE_FLAGS(kvm, cpu_id)
>>>      };
>>> 
>>> +    if (kvm->cfg.arch.aarch32_guest &&
>>> +        !kvm__supports_extension(kvm, KVM_CAP_ARM_EL1_32BIT))
>> 
>> Can you please check that this still compiles for 32bit host?
> 
> Yes, it does. I have built this on an arm32 rootfs with make ARCH=arm.
> The kvm->cfg.arch is common across arm/arm64 and is defined here :
> 
> arm/include/arm-common/kvm-config-arch.h

I was worried about the availability of KVM_CAP_ARM_EL1_32BIT,
but being a capability, it is common to all arches. It is
KVM_ARM_VCPU_EL1_32BIT that is 32bit only, but that's not what
you are using. Too many flags! ;-)

Thanks,

         M.
-- 
Jazz is not dead. It just smells funny...



More information about the linux-arm-kernel mailing list