All of lore.kernel.org
 help / color / mirror / Atom feed
From: Eric Auger <eric.auger@redhat.com>
To: eric.auger.pro@gmail.com, eric.auger@redhat.com,
	peter.maydell@linaro.org, qemu-arm@nongnu.org,
	qemu-devel@nongnu.org, wanghaibin.wang@huawei.com
Cc: drjones@redhat.com, vijay.kilari@gmail.com, quintela@redhat.com,
	dgilbert@redhat.com, wu.wubin@huawei.com,
	christoffer.dall@linaro.org
Subject: [Qemu-arm] [RFC v3 0/4] vITS Reset
Date: Thu, 23 Nov 2017 15:56:11 +0100	[thread overview]
Message-ID: <1511448975-28326-1-git-send-email-eric.auger@redhat.com> (raw)

At the moment the ITS is not properly reset. On System reset or
reboot, previous ITS register values and caches are left
unchanged. Some of the registers might point to some guest RAM
tables which are not valid anymore. This leads to state
inconsistencies that are detected by the kernel save/restore
code. And eventually this may cause qemu abort.

This series adds vITS reset modality:
- the 2 first patches bring a minimalist reset through individual
  register writes. However, with kernel versions < 4.15, this reset
  is not complete (vITS caches are not voided).
- With kernel versions >= 4.15 we can rely on a new ITS KVM device
  reset IOTCL. The last 2 patches introduce the full reset.

Patches 1-2 have all kernel dependencies resolved.
Patches 3-4' dependencies were pulled for v4.15-rc0 but as the tag is
not set, the kernel header update still is partial.

Best Regards

Eric

The series is available at:
https://github.com/eauger/qemu/tree/2.11.0-rc2-its-reset-v3

History:
v2 -> v3:
- don't call post_load on reset (no iidr check anymore)

v1 -> v2:
- Clarify why abort should be removed for save. Leave abort
  for restore.
- Adopt the same reset infra as vgic
- introduce "hw/intc/arm_gicv3_its: Implement a minimalist reset"
  which perform individual register writes. This is sufficient to
  fix the issues without ioctl


Eric Auger (4):
  hw/intc/arm_gicv3_its: Don't call post_load on reset
  hw/intc/arm_gicv3_its: Implement a minimalist reset
  linux-headers: Partial header update for ITS reset
  hw/intc/arm_gicv3_its: Implement full reset

 hw/intc/arm_gicv3_its_common.c |  2 --
 hw/intc/arm_gicv3_its_kvm.c    | 52 ++++++++++++++++++++++++++++++++++++++----
 linux-headers/asm-arm/kvm.h    |  1 +
 linux-headers/asm-arm64/kvm.h  |  1 +
 4 files changed, 50 insertions(+), 6 deletions(-)

-- 
2.5.5


WARNING: multiple messages have this Message-ID (diff)
From: Eric Auger <eric.auger@redhat.com>
To: eric.auger.pro@gmail.com, eric.auger@redhat.com,
	peter.maydell@linaro.org, qemu-arm@nongnu.org,
	qemu-devel@nongnu.org, wanghaibin.wang@huawei.com
Cc: vijay.kilari@gmail.com, drjones@redhat.com, wei@redhat.com,
	quintela@redhat.com, dgilbert@redhat.com,
	christoffer.dall@linaro.org, wu.wubin@huawei.com
Subject: [Qemu-devel] [RFC v3 0/4] vITS Reset
Date: Thu, 23 Nov 2017 15:56:11 +0100	[thread overview]
Message-ID: <1511448975-28326-1-git-send-email-eric.auger@redhat.com> (raw)

At the moment the ITS is not properly reset. On System reset or
reboot, previous ITS register values and caches are left
unchanged. Some of the registers might point to some guest RAM
tables which are not valid anymore. This leads to state
inconsistencies that are detected by the kernel save/restore
code. And eventually this may cause qemu abort.

This series adds vITS reset modality:
- the 2 first patches bring a minimalist reset through individual
  register writes. However, with kernel versions < 4.15, this reset
  is not complete (vITS caches are not voided).
- With kernel versions >= 4.15 we can rely on a new ITS KVM device
  reset IOTCL. The last 2 patches introduce the full reset.

Patches 1-2 have all kernel dependencies resolved.
Patches 3-4' dependencies were pulled for v4.15-rc0 but as the tag is
not set, the kernel header update still is partial.

Best Regards

Eric

The series is available at:
https://github.com/eauger/qemu/tree/2.11.0-rc2-its-reset-v3

History:
v2 -> v3:
- don't call post_load on reset (no iidr check anymore)

v1 -> v2:
- Clarify why abort should be removed for save. Leave abort
  for restore.
- Adopt the same reset infra as vgic
- introduce "hw/intc/arm_gicv3_its: Implement a minimalist reset"
  which perform individual register writes. This is sufficient to
  fix the issues without ioctl


Eric Auger (4):
  hw/intc/arm_gicv3_its: Don't call post_load on reset
  hw/intc/arm_gicv3_its: Implement a minimalist reset
  linux-headers: Partial header update for ITS reset
  hw/intc/arm_gicv3_its: Implement full reset

 hw/intc/arm_gicv3_its_common.c |  2 --
 hw/intc/arm_gicv3_its_kvm.c    | 52 ++++++++++++++++++++++++++++++++++++++----
 linux-headers/asm-arm/kvm.h    |  1 +
 linux-headers/asm-arm64/kvm.h  |  1 +
 4 files changed, 50 insertions(+), 6 deletions(-)

-- 
2.5.5

             reply	other threads:[~2017-11-23 14:56 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-11-23 14:56 Eric Auger [this message]
2017-11-23 14:56 ` [Qemu-devel] [RFC v3 0/4] vITS Reset Eric Auger
2017-11-23 14:56 ` [Qemu-arm] [RFC v3 1/4] hw/intc/arm_gicv3_its: Don't call post_load on reset Eric Auger
2017-11-23 14:56   ` [Qemu-devel] " Eric Auger
2017-11-23 14:56 ` [Qemu-arm] [RFC v3 2/4] hw/intc/arm_gicv3_its: Implement a minimalist reset Eric Auger
2017-11-23 14:56   ` [Qemu-devel] " Eric Auger
2017-11-23 14:56 ` [Qemu-arm] [RFC v3 3/4] linux-headers: Partial header update for ITS reset Eric Auger
2017-11-23 14:56   ` [Qemu-devel] " Eric Auger
2017-11-23 14:56 ` [Qemu-devel] [RFC v3 4/4] hw/intc/arm_gicv3_its: Implement full reset Eric Auger
2017-11-23 14:56   ` Eric Auger
2017-11-23 15:19 ` [Qemu-arm] [RFC v3 0/4] vITS Reset Peter Maydell
2017-11-23 15:19   ` [Qemu-devel] " Peter Maydell
2017-11-23 16:05   ` [Qemu-arm] " Auger Eric
2017-11-23 16:05     ` Auger Eric
2017-11-23 17:01     ` Peter Maydell
2017-11-23 17:01       ` Peter Maydell
2017-11-23 17:14       ` [Qemu-arm] " Cornelia Huck
2017-11-23 17:14         ` Cornelia Huck
2017-11-23 17:44         ` [Qemu-arm] " Auger Eric
2017-11-23 17:44           ` Auger Eric
2017-11-23 18:01           ` Christian Borntraeger
2017-11-23 18:01             ` Christian Borntraeger
2017-11-24  8:17             ` [Qemu-arm] " Auger Eric
2017-11-24  8:17               ` Auger Eric
2017-11-24  9:55             ` [Qemu-arm] " Cornelia Huck
2017-11-24  9:55               ` Cornelia Huck

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=1511448975-28326-1-git-send-email-eric.auger@redhat.com \
    --to=eric.auger@redhat.com \
    --cc=christoffer.dall@linaro.org \
    --cc=dgilbert@redhat.com \
    --cc=drjones@redhat.com \
    --cc=eric.auger.pro@gmail.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-arm@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=quintela@redhat.com \
    --cc=vijay.kilari@gmail.com \
    --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.