[PATCH v2 2/2] KVM: arm64: Workaround firmware wrongly advertising GICv2-on-v3 compatibility

Marc Zyngier maz at kernel.org
Tue Jan 19 05:14:25 EST 2021


On 2021-01-19 10:09, Shameerali Kolothum Thodi wrote:
>> -----Original Message-----
>> From: Marc Zyngier [mailto:maz at kernel.org]
>> Sent: 15 January 2021 14:15
>> To: Ard Biesheuvel <ardb at kernel.org>
>> Cc: Linux ARM <linux-arm-kernel at lists.infradead.org>; kvmarm
>> <kvmarm at lists.cs.columbia.edu>; Shameerali Kolothum Thodi
>> <shameerali.kolothum.thodi at huawei.com>; James Morse
>> <james.morse at arm.com>; Julien Thierry <julien.thierry.kdev at gmail.com>;
>> Suzuki K Poulose <suzuki.poulose at arm.com>; Android Kernel Team
>> <kernel-team at android.com>
>> Subject: Re: [PATCH v2 2/2] KVM: arm64: Workaround firmware wrongly
>> advertising GICv2-on-v3 compatibility
>> 
>> On 2021-01-15 14:08, Ard Biesheuvel wrote:
>> > On Fri, 15 Jan 2021 at 15:03, Marc Zyngier <maz at kernel.org> wrote:
>> 
>> [...]
>> 
>> >> diff --git a/arch/arm64/kvm/vgic/vgic-v3.c
>> >> b/arch/arm64/kvm/vgic/vgic-v3.c index 8e7bf3151057..67b27b47312b
>> >> 100644
>> >> --- a/arch/arm64/kvm/vgic/vgic-v3.c
>> >> +++ b/arch/arm64/kvm/vgic/vgic-v3.c
>> >> @@ -584,8 +584,10 @@ early_param("kvm-arm.vgic_v4_enable",
>> >> early_gicv4_enable);
>> >>  int vgic_v3_probe(const struct gic_kvm_info *info)  {
>> >>         u64 ich_vtr_el2 = kvm_call_hyp_ret(__vgic_v3_get_gic_config);
>> >> +       bool has_v2;
>> >>         int ret;
>> >>
>> >> +       has_v2 = ich_vtr_el2 >> 63;
>> >>         ich_vtr_el2 = (u32)ich_vtr_el2;
>> >>
>> >>         /*
>> >> @@ -605,13 +607,15 @@ int vgic_v3_probe(const struct gic_kvm_info
>> >> *info)
>> >>                          gicv4_enable ? "en" : "dis");
>> >>         }
>> >>
>> >> +       kvm_vgic_global_state.vcpu_base = 0;
>> >> +
>> >>         if (!info->vcpu.start) {
>> >>                 kvm_info("GICv3: no GICV resource entry\n");
>> >> -               kvm_vgic_global_state.vcpu_base = 0;
>> >> +       } else if (!has_v2) {
>> >> +               pr_warn("CPU interface incapable of MMIO access\n");
>> >
>> > Could we include FW_BUG here to stress that this is a firmware problem?
>> 
>> Absolutely! That's what it now looks like:
>> 
>> [    2.648452] kvm [1]: IPA Size Limit: 40 bits
>> [    2.649259] [Firmware Bug]: CPU interface incapable of MMIO access
>> [    2.649620] kvm [1]: disabling GICv2 emulation
>> [    2.650227] kvm [1]: GIC system register CPU interface enabled
>> [    2.652004] kvm [1]: vgic interrupt IRQ9
>> [    2.655623] kvm [1]: VHE mode initialized successfully
>> 
>> Updated version pushed out.
> 
> Is there a v3 for this series? I couldn't find one.

Nope, I didn't think it was useful to send another series for such
a minor change.

> 
> Anyways, tested this series on a D06 with faulty firmware and it is
> working as expected.
> FWIW,
> 
>    Tested-by: Shameer Kolothum <shameerali.kolothum.thodi at huawei.com>
> 

Thanks,

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



More information about the linux-arm-kernel mailing list