qemu-arm
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-arm] [PATCH v4 2/4] hw/intc/arm_gicv3_its: Implement a minimal


From: Auger Eric
Subject: Re: [Qemu-arm] [PATCH v4 2/4] hw/intc/arm_gicv3_its: Implement a minimalist reset
Date: Fri, 24 Nov 2017 14:39:44 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.4.0

Hi Peter,
On 24/11/17 14:34, Peter Maydell wrote:
> On 24 November 2017 at 13:30, Eric Auger <address@hidden> wrote:
>> At the moment the ITS is not properly reset and this causes
>> various bugs on save/restore. We implement a minimalist reset
>> through individual register writes but for kernel versions
>> before v4.15 this fails voiding the vITS cache. We cannot
>> claim we have a comprehensive reset (hence the error message)
>> but that's better than nothing.
>>
>> Signed-off-by: Eric Auger <address@hidden>
>>
>> ---
>>
>> v2 -> v3:
>> - individual register writes performed in kvm_arm_its_reset
>> - check KVM_DEV_ARM_VGIC_GRP_ITS_REGS support
>> ---
>>  hw/intc/arm_gicv3_its_kvm.c | 41 +++++++++++++++++++++++++++++++++++++++++
>>  1 file changed, 41 insertions(+)
>>
>> diff --git a/hw/intc/arm_gicv3_its_kvm.c b/hw/intc/arm_gicv3_its_kvm.c
>> index b1b322b..83e5268 100644
>> --- a/hw/intc/arm_gicv3_its_kvm.c
>> +++ b/hw/intc/arm_gicv3_its_kvm.c
>> @@ -28,6 +28,16 @@
>>
>>  #define TYPE_KVM_ARM_ITS "arm-its-kvm"
>>  #define KVM_ARM_ITS(obj) OBJECT_CHECK(GICv3ITSState, (obj), 
>> TYPE_KVM_ARM_ITS)
>> +#define KVM_ARM_ITS_CLASS(klass) \
>> +     OBJECT_CLASS_CHECK(KVMARMITSClass, (klass), TYPE_KVM_ARM_ITS)
>> +#define KVM_ARM_ITS_GET_CLASS(obj) \
>> +     OBJECT_GET_CLASS(KVMARMITSClass, (obj), TYPE_KVM_ARM_ITS)
>> +
>> +typedef struct KVMARMITSClass {
>> +    GICv3ITSCommonClass parent_class;
>> +    void (*parent_reset)(DeviceState *dev);
>> +} KVMARMITSClass;
>> +
>>
>>  static int kvm_its_send_msi(GICv3ITSState *s, uint32_t value, uint16_t 
>> devid)
>>  {
>> @@ -186,6 +196,34 @@ static void kvm_arm_its_post_load(GICv3ITSState *s)
>>                        GITS_CTLR, &s->ctlr, true, &error_abort);
>>  }
>>
>> +static void kvm_arm_its_reset(DeviceState *dev)
>> +{
>> +    GICv3ITSState *s = ARM_GICV3_ITS_COMMON(dev);
>> +    KVMARMITSClass *c = KVM_ARM_ITS_GET_CLASS(s);
>> +    int i;
>> +
>> +    c->parent_reset(dev);
>> +
>> +    error_report("ITS KVM: full reset is not supported by the host kernel");
> 
> This message claims that we have a problem because of the host
> kernel version, but I can't see where we do the check on the
> host kernel that lets us avoid the error message when it's
> new enough ?

Actually the check is added in 4/4. So in that patch the message may be
"full ITS reset is not supported" without mentioning the host kernel.

Thanks

Eric
> 
> thanks
> -- PMM
> 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]