On Mon, 19 Jan 2026 at 12:13, Philippe Mathieu-Daudé <philmd@linaro.org> wrote:
>
> On 18/1/26 23:03, Philippe Mathieu-Daudé wrote:
> > On 28/10/25 13:07, Richard Henderson wrote:
> >> On 10/28/25 06:42, Philippe Mathieu-Daudé wrote:
> >>> Emit a warning when HVF doesn't return the IPA bit length
> >>> and return -1 as "this accelerator is not usable", allowing
> >>> QEMU to try with the next one (when using '-accel hvf:tcg').
> >>>
> >>> Reported-by: Ivan Krasilnikov
> >>> Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2981
> >>> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
> >>> ---
> >>> hw/arm/virt.c | 8 ++++++--
> >>> 1 file changed, 6 insertions(+), 2 deletions(-)
> >>>
> >>> diff --git a/hw/arm/virt.c b/hw/arm/virt.c
> >>> index 175023897a7..1d65fa471dc 100644
> >>> --- a/hw/arm/virt.c
> >>> +++ b/hw/arm/virt.c
> >>> @@ -3225,8 +3225,12 @@ static int
> >>> virt_hvf_get_physical_address_range(MachineState *ms)
> >>> {
> >>> VirtMachineState *vms = VIRT_MACHINE(ms);
> >>> - int default_ipa_size = hvf_arm_get_default_ipa_bit_size();
> >>> - int max_ipa_size = hvf_arm_get_max_ipa_bit_size();
> >>> + uint32_t default_ipa_size = hvf_arm_get_default_ipa_bit_size();
> >>> + uint32_t max_ipa_size = hvf_arm_get_max_ipa_bit_size();
> >>> + if (!default_ipa_size || !max_ipa_size) {
> >>> + warn_report("HVF didn't report IPA bit length");
> >>> + return -1;
> >>> + }
> >>
> >> I suppose this goes back to the previous patch.
> >> It might have been slightly less confusing to merge them, but the
> >> underlying questions about when and how this can fail remain.
> >
> > Right. I'm dropping this patch.
>
> BTW I was looking at the extra-commits in GetUTM and noticed one
> related to this:
IIRC, the failure in the associated gitlab issue is because
in hvf_accel_init() the very first thing we try to do with HVF
is "find out the IPA range", so we can create the VM.
So any kind of "HVF doesn't exist/is not usable" problem manifests
as "this call to try to get the IPA bit size returned an error".
So we either need to have hvf_accel_init() determine "HVF
is basically working" as the first thing it does so that we
can know that failures in this function really are specific
to the IPA range check, or else have the error be propagated
back from getting the IPA range so we can do something sensible
in hvf_accel_init().
(I haven't looked at the rest of this series, so maybe it
already does something like that.)
thanks
-- PMM