Hi Eric,

> On 19 Jun 2025, at 13:29, Eric Auger <eric.au...@redhat.com> wrote:
> 
> Hi,
> 
> On 6/17/25 5:50 PM, Miguel Luis wrote:
>> Hi Eric,
>> 
>>> On 17 Jun 2025, at 15:41, Eric Auger <eric.au...@redhat.com> wrote:
>>> 
>>> 
>>> 
>>> On 6/17/25 5:23 PM, Miguel Luis wrote:
>>>> Hi Alyssa,
>>>> 
>>>>> On 17 Jun 2025, at 14:17, Alyssa Ross <h...@alyssa.is> wrote:
>>>>> 
>>>>> Eric Auger <eric.au...@redhat.com> writes:
>>>>> 
>>>>>> From: Haibo Xu <haibo...@linaro.org>
>>>>>> 
>>>>>> Up to now virt support on guest has been only supported with TCG.
>>>>>> Now it becomes feasible to use it with KVM acceleration.
>>>>>> 
>>>>>> Also check only in-kernel GICv3 is used along with KVM EL2.
>>>>>> 
>>>>>> Signed-off-by: Haibo Xu <haibo...@linaro.org>
>>>>>> Signed-off-by: Miguel Luis <miguel.l...@oracle.com>
>>>>>> Signed-off-by: Eric Auger <eric.au...@redhat.com>
>>>>>> Reviewed-by: Richard Henderson <richard.hender...@linaro.org>
>>>>> Hi!  From what I can tell, this will produce an error on hosts that
>>>>> don't support nested virtualization when QEMU is invoked with -accel
>>>>> kvm:tcg
>>>> I didn’t know '-acell kvm:tcg’ could be used as a fallback mechanism 
>>>> between
>>>> acceleration modes. May I ask whether do you manage the ‘-cpu’ type for 
>>>> ‘-accel
>>>> kvm:tcg’ with cpu ‘max’ ?
>>> Does it exist?
>>> qemu-system-aarch64: -accel kvm:tcg: invalid accelerator kvm:tcg
>> Maybe Alyssa is referring to ‘-M 
>> virt,accel=kvm:tcg,virtualization=on,gic-version=3’ ?
>> 
>> The above didn’t triggered any error. Anyhow if the above does what Alyssa’s 
>> saying 
>> we would just be missing the check for || !tcg_enabled() in this patch, I 
>> believe.
> 
> After discussion with Paolo, the lack of the CAP should be detected
> earlier in kvm_init/kvm_arch_init to allow the fallback to TCG.
> in target/arm/kvm.c kvm_arch_init() some generic caps are checked but
> none of them are related to machine settings and this code is virt arm
> machine agnostic.
> 
> I checked and adding
> 
>     if (object_dynamic_cast(OBJECT(ms), TYPE_VIRT_MACHINE)) {
>         VirtMachineState *vms = VIRT_MACHINE(ms);
> 
>         if (vms->virt && !kvm_arm_el2_supported()) {
>             error_report("KVM does not support nested virtualization");
>             ret = -EINVAL;
>         }
>     }
> 
> at the end of the function would do the job. But as I said previously
> this is not done for other virt arm machine options that are accel
> specific or require special KVM caps (secure, mte for instance) so it
> would be a change in the approach.
> 

Got it.

> As pointed out before fallback spirit was rather: "KVM isn't enabled"
> than for "KVM doesn't support a specific feature".
> 

Thank you for getting to the bottom of it.

Miguel

> Thanks
> 
> Eric
> 
> 
> 
> 
> it's purely the first accelerator that says it can work
> 1:03
> <https://redhat-internal.slack.com/archives/C04KFKV2SE9/p1750331005242709>
> pbonzini
> Where "can work" is only based on the host.
> 
> 
>> 
>> Miguel
>> 
>>> Alyssa, didn't you mean -accel kvm or --accel tcg
>>>> But more importantly, is this what you’re referring to?
>>>> 
>>>> Although,
>>>> 
>>>>> -machine virtualization=on,
>>>> should work for both '-accel kvm’ and ‘-accel tcg’.
>>>> 
>>>>> but I don't think that's the ideal
>>>>> behaviour.  It would make more sense for it to fall back to the first
>>>>> permitted accel option that does support running the machine as
>>>>> configured, so if hardware nested virtualization is not supported, it
>>>>> should fall back to TCG.
>>>>> 
>>>>> I maintain an OS development environment that includes scripts for
>>>>> running images in QEMU, where running KVM on those images is a
>>>>> requirement.  Currently, those scripts simply force TCG on aarch64.
>>>>> With this change, to take advantage of KVM NV support, I'd have to try
>>>>> to identify in the script whether NV would be supported.  QEMU would be
>>>>> in a much better position to determine this and fall back to TCG if it's
>>>>> unsupported, like how the -accel option with multiple values usually
>>>>> works.
>>>> Thanks,
>>>> Miguel


Reply via email to