From: wanghaibin <wanghaibin.wang@huawei.com>
To: kvmarm@lists.cs.columbia.edu
Subject: Re: [PATCH] KVM: arm64: vgic-its: Fix wrong return value check in vgic_its_restore_device_tables
Date: Wed, 6 Sep 2017 21:13:57 +0800 [thread overview]
Message-ID: <59AFF495.4050604@huawei.com> (raw)
In-Reply-To: <65a66715-4f22-07d4-879a-1181c8dad889@redhat.com>
On 2017/9/6 15:22, Auger Eric wrote:
> Hi Vijaya,
>
> On 06/09/2017 07:26, Vijaya Kumar K wrote:
>> scan_its_table() return 1 on success.
>
> As mentioned in the kernel-doc comment of scan_its_table, this latter
> returns 1 if the last element is not found. Than can happen while
> scanning an L2 table but shouldn't happen if we scan an L1 table.
>
> * Return: < 0 on error, 0 if last element was identified, 1 otherwise
> * (the last element may not be found on second level tables)
>
I think there maybe something wrong.
A weeks ago, I met the migrate failed both the save interface and restore interface.
The restore failed reason is that vm is in booting, and haven't to probe pci devs at that moment.
and all dtes is invalid at that moment.
In this case, the interface will return -EINVAL. I think we should take this as success.
Not only for dtes, but the ites.
Thanks.
>
> In the function vgic_its_restore_device_tables()
>> the return value of scan_its_table() is checked against success value
>> and returns -EINVAL. Hence migration fails for VM with ITS.
>>
>> With this patch the failure return value is checked while returning
>> -EINVAL.
>>
>> Signed-off-by: Vijaya Kumar K <vkilari@codeaurora.org>
>>
>> diff --git a/virt/kvm/arm/vgic/vgic-its.c b/virt/kvm/arm/vgic/vgic-its.c
>> index aa6b68d..63f8ac3 100644
>> --- a/virt/kvm/arm/vgic/vgic-its.c
>> +++ b/virt/kvm/arm/vgic/vgic-its.c
>> @@ -2142,7 +2142,7 @@ static int vgic_its_restore_device_tables(struct vgic_its *its)
>> vgic_its_restore_dte, NULL);
>> }
>>
>> - if (ret > 0)
>> + if (ret <= 0)
>> ret = -EINVAL;
> your modification would return -EINVAL for whatever error encountered
> during the scan table or if last element is found. I don't think this is
> what we want.
>
> Thanks
>
> Eric
>>
>> return ret;
>>
> _______________________________________________
> kvmarm mailing list
> kvmarm@lists.cs.columbia.edu
> https://lists.cs.columbia.edu/mailman/listinfo/kvmarm
>
>
next prev parent reply other threads:[~2017-09-06 13:14 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-09-06 5:26 [PATCH] KVM: arm64: vgic-its: Fix wrong return value check in vgic_its_restore_device_tables Vijaya Kumar K
2017-09-06 7:22 ` Auger Eric
2017-09-06 13:13 ` wanghaibin [this message]
2017-09-17 8:10 ` vkilari
2017-09-19 8:17 ` Auger Eric
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=59AFF495.4050604@huawei.com \
--to=wanghaibin.wang@huawei.com \
--cc=kvmarm@lists.cs.columbia.edu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox