All of lore.kernel.org
 help / color / mirror / Atom feed
From: Christoffer Dall <cdall@linaro.org>
To: Auger Eric <eric.auger@redhat.com>
Cc: eric.auger.pro@gmail.com, linux-kernel@vger.kernel.org,
	kvm@vger.kernel.org, marc.zyngier@arm.com,
	peter.maydell@linaro.org, andre.przywara@arm.com,
	wanghaibin.wang@huawei.com, wu.wubin@huawei.com
Subject: Re: [PATCH v2 09/10] KVM: arm/arm64: Document KVM_DEV_ARM_ITS_CTRL_RESET
Date: Fri, 13 Oct 2017 20:00:10 +0200	[thread overview]
Message-ID: <20171013180010.GF17578@cbox> (raw)
In-Reply-To: <30547d7f-fa04-a7c1-ee56-1fb720999c0f@redhat.com>

On Fri, Oct 13, 2017 at 05:41:10PM +0200, Auger Eric wrote:
> Hi Christoffer,
> 
> On 13/10/2017 17:26, Christoffer Dall wrote:
> > Hi Eric,
> > 
> > On Wed, Sep 27, 2017 at 03:28:39PM +0200, Eric Auger wrote:
> >> At the moment, the in-kernel emulated ITS is not properly reset.
> >> On guest restart/reset some registers keep their old values and
> >> internal structures like device, ITE, collection lists are not freed.
> > 
> >                                       , and collection ...
> >>
> >> This may lead to various bugs. Among them, we can have incorrect state
> >> backup or failure when saving the ITS state at early guest boot stage.
> >>
> >> This patch documents a new attribute, KVM_DEV_ARM_ITS_CTRL_RESET in
> >> the KVM_DEV_ARM_VGIC_GRP_CTRL group.
> >>
> >> Upon this action, we can reset registers and especially those
> >> pointing to tables previously allocated by the guest and free
> >> the internal data structures storing the list of devices, collections
> >> and lpis.
> >>
> >> Signed-off-by: Eric Auger <eric.auger@redhat.com>
> >> Reported-by: wanghaibin <wanghaibin.wang@huawei.com>
> >>
> >> ---
> >>
> >> v1 -> v2:
> >> - Describe architecturally-defined reset values
> >> ---
> >>  Documentation/virtual/kvm/devices/arm-vgic-its.txt | 16 ++++++++++++++++
> >>  1 file changed, 16 insertions(+)
> >>
> >> diff --git a/Documentation/virtual/kvm/devices/arm-vgic-its.txt b/Documentation/virtual/kvm/devices/arm-vgic-its.txt
> >> index eb06beb..047358c 100644
> >> --- a/Documentation/virtual/kvm/devices/arm-vgic-its.txt
> >> +++ b/Documentation/virtual/kvm/devices/arm-vgic-its.txt
> >> @@ -33,6 +33,10 @@ Groups:
> >>        request the initialization of the ITS, no additional parameter in
> >>        kvm_device_attr.addr.
> >>  
> >> +    KVM_DEV_ARM_ITS_CTRL_RESET
> >> +      reset the ITS, no additional parameter in kvm_device_attr.addr.
> >> +      See "ITS Reset State" section.
> >> +
> >>      KVM_DEV_ARM_ITS_SAVE_TABLES
> >>        save the ITS table data into guest RAM, at the location provisioned
> >>        by the guest in corresponding registers/table entries.
> >> @@ -157,3 +161,15 @@ Then vcpus can be started.
> >>   - pINTID is the physical LPI ID; if zero, it means the entry is not valid
> >>     and other fields are not meaningful.
> >>   - ICID is the collection ID
> >> +
> >> + ITS Reset State:
> >> + ----------------
> > 
> > Are the bullet points below the state after the device has been reset
> > (after KVM_DEV_ARM_ITS_CTRL_RESET returns) or ?  I think this should be
> > clarified.
> 
> yes this is after reset.
> > 
> >> +
> >> +- the ITS is not enabled and quiescent:
> > 
> >      The
> > 
> >> +  GITS_CTLR.Enabled = 0 .Quiescent=1
> >> +- caches are empty
> >      Caches  (would it make more sense to say that there is no
> >      internally cached state?)
> >> +- No collection or device table is provisionned
> > 
> >                                    are used:
> referenced?

I think used is more plainspoken and intuitively understood.

> > 
> >> +  GITS_BASER<n>.Valid = 0
> >> +- the command queue is not allocated:
> > 
> >      The
> > 
> >> +  GITS_CBASER = 0, GITS_CREADR = 0, GITS_CWRITER = 0
> >> +- The ABI version corresponds to the one set before reset
> > 
> > Do you mean that resetting the ITS cannot change the ABI version used
> > for save/restore, and therefore remains the same as it the version
> > configured when the device was first created ?
> Yes the ABI version stays the same.
> > 
> >> -- 
> >> 2.5.5
> >>
> > 
> > Thanks, (and sorry for being pedantic about ABI wordings)
> no worries, I know it is important ;-)
> 
Thanks :)
-Christoffer

  reply	other threads:[~2017-10-13 18:00 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-09-27 13:28 [PATCH v2 00/10] vITS Migration fixes and reset Eric Auger
2017-09-27 13:28 ` [PATCH v2 01/10] KVM: arm/arm64: vgic-its: fix return value for restore Eric Auger
2017-10-06 14:37   ` Andre Przywara
2017-10-06 15:33     ` Auger Eric
2017-10-13 11:04   ` Christoffer Dall
2017-09-27 13:28 ` [PATCH v2 02/10] KVM: arm/arm64: vgic-its: Always allow clearing GITS_CREADR/CWRITER Eric Auger
2017-10-06 14:37   ` Andre Przywara
2017-10-06 15:29     ` Auger Eric
2017-10-13 11:44       ` Christoffer Dall
2017-10-13 11:54         ` Auger Eric
2017-10-13 17:54           ` Christoffer Dall
2017-10-14  8:53             ` Auger Eric
2017-10-14 15:04               ` Christoffer Dall
2017-09-27 13:28 ` [PATCH v2 03/10] KVM: arm/arm64: vgic-its: Improve error reporting on device table save Eric Auger
2017-10-06 14:38   ` Andre Przywara
2017-10-13 13:16   ` Christoffer Dall
2017-10-13 14:22     ` Auger Eric
2017-10-13 17:56       ` Christoffer Dall
2017-10-14  8:52         ` Auger Eric
2017-10-14 15:06           ` Christoffer Dall
2017-09-27 13:28 ` [PATCH v2 04/10] KVM: arm/arm64: vgic-its: Check GITS_BASER Valid bit before saving tables Eric Auger
2017-10-06 14:38   ` Andre Przywara
2017-10-13 13:24   ` Christoffer Dall
2017-09-27 13:28 ` [PATCH v2 05/10] KVM: arm/arm64: vgic-its: Check GITS_CBASER validity before processing commands Eric Auger
2017-10-06 14:38   ` Andre Przywara
2017-10-06 15:29     ` Auger Eric
2017-09-27 13:28 ` [PATCH v2 06/10] KVM: arm/arm64: vgic-its: Always attempt to save/restore device and collection tables Eric Auger
2017-10-06 14:38   ` Andre Przywara
2017-10-06 15:29     ` Auger Eric
2017-09-27 13:28 ` [PATCH v2 07/10] KVM: arm/arm64: vgic-its: new helper functions to free the caches Eric Auger
2017-10-13 13:35   ` Christoffer Dall
2017-10-13 14:37     ` Auger Eric
2017-10-21  9:02     ` Auger Eric
2017-10-21 14:34       ` Christoffer Dall
2017-09-27 13:28 ` [PATCH v2 08/10] KVM: arm/arm64: vgic-its: free caches when GITS_BASER Valid bit is cleared Eric Auger
2017-10-13 15:19   ` Christoffer Dall
2017-10-13 15:34     ` Auger Eric
2017-10-13 17:59       ` Christoffer Dall
2017-09-27 13:28 ` [PATCH v2 09/10] KVM: arm/arm64: Document KVM_DEV_ARM_ITS_CTRL_RESET Eric Auger
2017-10-12 10:57   ` Peter Maydell
2017-10-12 11:34     ` Auger Eric
2017-10-13 15:26   ` Christoffer Dall
2017-10-13 15:41     ` Auger Eric
2017-10-13 18:00       ` Christoffer Dall [this message]
2017-09-27 13:28 ` [PATCH v2 10/10] KVM: arm/arm64: vgic-its: Implement KVM_DEV_ARM_ITS_CTRL_RESET Eric Auger
2017-10-13 15:40   ` Christoffer Dall

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=20171013180010.GF17578@cbox \
    --to=cdall@linaro.org \
    --cc=andre.przywara@arm.com \
    --cc=eric.auger.pro@gmail.com \
    --cc=eric.auger@redhat.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=marc.zyngier@arm.com \
    --cc=peter.maydell@linaro.org \
    --cc=wanghaibin.wang@huawei.com \
    --cc=wu.wubin@huawei.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.