[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
>