From mboxrd@z Thu Jan 1 00:00:00 1970 From: wanghaibin Subject: Re: [RFC PATCH 3/3] kvm: arm/arm64: vgic-its: fix return value for restore Date: Sat, 16 Sep 2017 10:02:37 +0800 Message-ID: <59BC863D.5070108@huawei.com> References: <1504703110-10744-1-git-send-email-wanghaibin.wang@huawei.com> <1504703110-10744-4-git-send-email-wanghaibin.wang@huawei.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from localhost (localhost [127.0.0.1]) by mm01.cs.columbia.edu (Postfix) with ESMTP id B05E649C27 for ; Fri, 15 Sep 2017 22:00:34 -0400 (EDT) Received: from mm01.cs.columbia.edu ([127.0.0.1]) by localhost (mm01.cs.columbia.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id UX2wqeeod5lf for ; Fri, 15 Sep 2017 22:00:34 -0400 (EDT) Received: from szxga04-in.huawei.com (szxga04-in.huawei.com [45.249.212.190]) by mm01.cs.columbia.edu (Postfix) with ESMTPS id 72B1940FB0 for ; Fri, 15 Sep 2017 22:00:33 -0400 (EDT) In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kvmarm-bounces@lists.cs.columbia.edu Sender: kvmarm-bounces@lists.cs.columbia.edu To: Auger Eric Cc: marc.zyngier@arm.com, cdall@linaro.org, kvmarm@lists.cs.columbia.edu, wu.wubin@huawei.com, andre.przywara@arm.com List-Id: kvmarm@lists.cs.columbia.edu On 2017/9/14 16:30, Auger Eric wrote: > Hi Wanghaibin, > > On 06/09/2017 15:05, wanghaibin wrote: >> This patch fix the migrate restore tables failure. >> >> The same scene, at the destination, the restore tables interface traversal guest >> memory, and check the dte/ite is valid or not. >> If all dtes/ites are invalid, we will do try next one, and the last it will take >> the 1 return value, but currently, it be treated as error. That's not correct. >> >> This patch try to fix this problem. >> >> Signed-off-by: wanghaibin >> --- >> virt/kvm/arm/vgic/vgic-its.c | 5 +---- >> 1 file changed, 1 insertion(+), 4 deletions(-) >> >> diff --git a/virt/kvm/arm/vgic/vgic-its.c b/virt/kvm/arm/vgic/vgic-its.c >> index 5c20352..2c69aeb 100644 >> --- a/virt/kvm/arm/vgic/vgic-its.c >> +++ b/virt/kvm/arm/vgic/vgic-its.c >> @@ -2025,7 +2025,7 @@ static int vgic_its_restore_dte(struct vgic_its *its, u32 id, >> return PTR_ERR(dev); >> >> ret = vgic_its_restore_itt(its, dev); >> - if (ret) { >> + if (ret < 0) { >> vgic_its_free_device(its->dev->kvm, dev); >> return ret; >> } >> @@ -2147,9 +2147,6 @@ static int vgic_its_restore_device_tables(struct vgic_its *its) >> vgic_its_restore_dte, NULL); >> } >> >> - if (ret > 0) >> - ret = -EINVAL; > Reworking error handling in scan_its_table as I previously proposed > indeed don't work for L2 tables, as pointed out by Christoffer. As such > I eventually think your approach is the best. > > The only remark I have left is restore table IOCTL is likely to return 1 > with your change. 1 is not documented in the API as a returned value. I > think we should return 0 in this case. We are lucky because QEMU > kvm_device_access does not interpret positive values as errors. Will fix it. Thanks. > > Thanks > > Eric > >> - >> return ret; >> } >> >> > > . >