From: eric.auger@redhat.com (Eric Auger)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v5 00/22] vITS save/restore
Date: Fri, 14 Apr 2017 12:15:12 +0200 [thread overview]
Message-ID: <1492164934-988-1-git-send-email-eric.auger@redhat.com> (raw)
This series specifies and implements an API aimed at saving and restoring
the state of the in-kernel emulated ITS device.
The ITS is programmed through registers and tables. Those latter
are allocated by the guest. Their base address is programmed in
registers or table entries before the ITS is enabled.
The ITS is free to use some of them to flush its internal caches. This
is likely to be used when entering low power state.
Therefore, for save/restore use case, it looks natural to use this
guest RAM allocated space to save the table related data. However,
currently, The ITS in-kernel emulated device does not use all of those
tables and for those it uses, it does not always sync them with its
cached data. Additional sync must happen for:
- the collection table
- the device table
- the per-device translation tables
- the LPI pending tables.
The LPI configation table and the command queues do not need extra
syncs.
Best Regards
Eric
Git: complete series available at
https://github.com/eauger/linux/tree/v4.11-rc6-its-mig-v5
* Testing:
- on Cavium ThunderX using a virtio-net-pci guest,
virsh save/restore commands and virt-manager live migration.
Tested with 1 and 2 stage device table.
History:
v4 -> v5:
- user API changes:
- ITS table save/restore triggered through ITS KVM device
KVM_DEV_ARM_VGIC_GRP_CTRL group, KVM_DEV_ARM_ITS_SAVE_TABLES,
KVM_DEV_ARM_ITS_RESTORE_TABLES
- RDIST pending table flush triggered through GICV3 KVM device
KVM_DEV_ARM_VGIC_GRP_CTRL/KVM_DEV_ARM_VGIC_SAVE_PENDING_TABLES
- Introduce an ABI infrastructure, entry size report using this infra
- IIDR reports ABI chosen set by userspace if any
- pending table save moved to vgic-v3.c
- use optimisation in pending table save
- check target_addr when restore cte
- pending table sync called from restore_tables
- added KVM: arm64: vgic-its: Fix pending table sync
- simplify loopup_table and use kvm_read_guest()
- sort the device and ITE list on save
- add defines for shifts and masks, GIC_ENCODE_SZ macro
v3 -> v4:
- update the DTE format (ITT_addr 52 bit support, validity bit addition)
- Document ABI revision and implement check
- iidr save/restore (including a new patch for iidr user write access)
- changed locking: kvm lock + vcpu lock
- fix nb_eventid_bits mixup
- 2 new patches aiming at exposing next_segment() and lock_all_vcpus()
- rework errror handling of lookup_table functions
- I took into account all Andre's comments/suggestions except:
- trigger the save/restore of pending tables from GICV3 KVM device
instead of ITS KVM device
- implement ITS flush/restore in KVM_DEV_ARM_VGIC_GRP_CTRL
ITS group
See the ML replies for current justifications. In case other people
strongly disagree of course I will change the code.
v2 -> v3:
- fix restore ITS ITT_addr bit masking
v1 -> v2:
- rebased on Vijaya's v11
- all entries now are 8 byte large
- devid/eventid indexing for device table and ITT
- support 2 stage device table
- common infra to read indexed tables
- add cpu <-> le64 conversions
- itte renamed into ite
- do not care anymore about pending table 1st KB
(not needed at the moment for coarse mapping)
RFC v1
- creation
Eric Auger (22):
KVM: arm/arm64: Add ITS save/restore API documentation
KVM: arm/arm64: Add GICV3 pending table save API documentation
KVM: arm/arm64: vgic-its: rename itte into ite
arm/arm64: vgic: turn vgic_find_mmio_region into public
KVM: arm64: vgic-its: KVM_DEV_ARM_VGIC_GRP_ITS_REGS group
KVM: arm/arm64: vgic: expose (un)lock_all_vcpus
KVM: arm64: vgic-its: Implement vgic_its_has_attr_regs and
attr_regs_access
KVM: arm64: vgic-its: Implement vgic_mmio_uaccess_write_its_creadr
KVM: arm64: vgic-its: Introduce migration ABI infrastructure
KVM: arm64: vgic-its: Implement vgic_mmio_uaccess_write_its_iidr
KVM: arm64: vgic-its: Interpret MAPD Size field and check related
errors
KVM: arm64: vgic-its: Interpret MAPD ITT_addr field
KVM: arm64: vgic-its: Check the device id matches TYPER DEVBITS range
KVM: arm64: vgic-its: KVM_DEV_ARM_ITS_SAVE/RESTORE_TABLES
KVM: arm64: vgic-its: vgic_its_alloc_ite/device
KVM: arm64: vgic-its: Add infrastructure for table lookup
KVM: arm64: vgic-its: Collection table save/restore
KVM: arm64: vgic-its: vgic_its_check_id returns the entry's GPA
KVM: arm64: vgic-its: ITT save and restore
KVM: arm64: vgic-its: Device table save/restore
KVM: arm64: vgic-its: Fix pending table sync
KVM: arm64: vgic-v3: KVM_DEV_ARM_VGIC_SAVE_PENDING_TABLES
Documentation/virtual/kvm/devices/arm-vgic-its.txt | 99 ++
Documentation/virtual/kvm/devices/arm-vgic-v3.txt | 6 +
arch/arm/include/uapi/asm/kvm.h | 6 +-
arch/arm64/include/uapi/asm/kvm.h | 6 +-
include/kvm/arm_vgic.h | 3 +
include/linux/irqchip/arm-gic-v3.h | 12 +
virt/kvm/arm/vgic/vgic-its.c | 1126 +++++++++++++++++---
virt/kvm/arm/vgic/vgic-kvm-device.c | 24 +-
virt/kvm/arm/vgic/vgic-mmio.c | 11 +-
virt/kvm/arm/vgic/vgic-mmio.h | 14 +-
virt/kvm/arm/vgic/vgic-v3.c | 54 +
virt/kvm/arm/vgic/vgic.h | 24 +
12 files changed, 1251 insertions(+), 134 deletions(-)
--
2.5.5
next reply other threads:[~2017-04-14 10:15 UTC|newest]
Thread overview: 132+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-04-14 10:15 Eric Auger [this message]
2017-04-14 10:15 ` [PATCH v5 01/22] KVM: arm/arm64: Add ITS save/restore API documentation Eric Auger
2017-04-25 10:38 ` Peter Maydell
2017-04-26 12:31 ` Christoffer Dall
2017-04-26 15:48 ` Auger Eric
2017-04-27 8:57 ` Christoffer Dall
2017-04-27 9:33 ` Auger Eric
2017-04-27 11:02 ` Christoffer Dall
2017-04-27 12:51 ` Auger Eric
2017-04-27 14:45 ` Christoffer Dall
2017-04-27 15:29 ` Auger Eric
2017-04-27 16:23 ` Marc Zyngier
2017-04-27 17:14 ` Auger Eric
2017-04-27 17:27 ` Christoffer Dall
2017-04-27 16:38 ` Christoffer Dall
2017-04-27 17:27 ` Auger Eric
2017-04-27 17:54 ` Christoffer Dall
2017-04-27 19:27 ` Auger Eric
2017-05-04 7:00 ` Auger Eric
2017-05-04 7:40 ` Marc Zyngier
2017-05-04 7:54 ` Auger Eric
2017-05-04 7:46 ` Christoffer Dall
2017-04-14 10:15 ` [PATCH v5 02/22] KVM: arm/arm64: Add GICV3 pending table save " Eric Auger
2017-04-25 10:43 ` Peter Maydell
2017-04-26 8:26 ` Auger Eric
2017-04-26 8:44 ` Peter Maydell
2017-04-26 8:48 ` Dr. David Alan Gilbert
2017-04-26 9:57 ` Auger Eric
2017-04-26 13:00 ` Christoffer Dall
2017-04-26 13:01 ` Peter Maydell
2017-04-26 13:14 ` Christoffer Dall
2017-04-26 13:26 ` Peter Maydell
2017-04-26 14:47 ` Auger Eric
2017-04-14 10:15 ` [PATCH v5 03/22] KVM: arm/arm64: vgic-its: rename itte into ite Eric Auger
2017-04-26 11:21 ` Prakash B
2017-04-27 9:05 ` Christoffer Dall
2017-04-27 9:20 ` Andre Przywara
2017-04-27 9:40 ` Auger Eric
2017-04-27 11:09 ` Christoffer Dall
2017-04-14 10:15 ` [PATCH v5 04/22] arm/arm64: vgic: turn vgic_find_mmio_region into public Eric Auger
2017-04-26 11:22 ` Prakash B
2017-04-27 9:07 ` Christoffer Dall
2017-04-14 10:15 ` [PATCH v5 05/22] KVM: arm64: vgic-its: KVM_DEV_ARM_VGIC_GRP_ITS_REGS group Eric Auger
2017-04-26 11:23 ` Prakash B
2017-04-27 9:12 ` Christoffer Dall
2017-04-14 10:15 ` [PATCH v5 06/22] KVM: arm/arm64: vgic: expose (un)lock_all_vcpus Eric Auger
2017-04-26 11:23 ` Prakash B
2017-04-27 9:18 ` Christoffer Dall
2017-04-14 10:15 ` [PATCH v5 07/22] KVM: arm64: vgic-its: Implement vgic_its_has_attr_regs and attr_regs_access Eric Auger
2017-04-26 11:24 ` Prakash B
2017-04-27 11:00 ` Christoffer Dall
2017-04-27 12:22 ` Auger Eric
2017-04-14 10:15 ` [PATCH v5 08/22] KVM: arm64: vgic-its: Implement vgic_mmio_uaccess_write_its_creadr Eric Auger
2017-04-26 11:24 ` Prakash B
2017-04-27 11:27 ` Christoffer Dall
2017-04-27 12:53 ` Auger Eric
2017-04-14 10:15 ` [PATCH v5 09/22] KVM: arm64: vgic-its: Introduce migration ABI infrastructure Eric Auger
2017-04-26 11:27 ` Prakash B
2017-04-27 13:14 ` Christoffer Dall
2017-04-14 10:15 ` [PATCH v5 10/22] KVM: arm64: vgic-its: Implement vgic_mmio_uaccess_write_its_iidr Eric Auger
2017-04-26 11:27 ` Prakash B
2017-04-27 14:57 ` Christoffer Dall
2017-04-14 10:15 ` [PATCH v5 11/22] KVM: arm64: vgic-its: Interpret MAPD Size field and check related errors Eric Auger
2017-04-26 11:28 ` Prakash B
2017-04-27 16:25 ` Christoffer Dall
2017-04-27 17:15 ` Auger Eric
2017-04-27 17:28 ` Christoffer Dall
2017-04-14 10:15 ` [PATCH v5 12/22] KVM: arm64: vgic-its: Interpret MAPD ITT_addr field Eric Auger
2017-04-26 11:29 ` Prakash B
2017-04-27 16:43 ` Christoffer Dall
2017-04-27 17:44 ` Auger Eric
2017-04-27 18:09 ` Christoffer Dall
2017-04-27 19:18 ` Auger Eric
2017-04-14 10:15 ` [PATCH v5 13/22] KVM: arm64: vgic-its: Check the device id matches TYPER DEVBITS range Eric Auger
2017-04-26 11:29 ` Prakash B
2017-04-27 16:48 ` Christoffer Dall
2017-04-27 17:24 ` Auger Eric
2017-04-14 10:15 ` [PATCH v5 14/22] KVM: arm64: vgic-its: KVM_DEV_ARM_ITS_SAVE/RESTORE_TABLES Eric Auger
2017-04-26 11:31 ` Prakash B
2017-04-27 17:24 ` Christoffer Dall
2017-04-14 10:15 ` [PATCH v5 15/22] KVM: arm64: vgic-its: vgic_its_alloc_ite/device Eric Auger
2017-04-26 11:31 ` Prakash B
2017-04-27 17:31 ` Christoffer Dall
2017-04-14 10:15 ` [PATCH v5 16/22] KVM: arm64: vgic-its: Add infrastructure for table lookup Eric Auger
2017-04-26 11:32 ` Prakash B
2017-04-27 18:06 ` Christoffer Dall
2017-04-27 19:24 ` Auger Eric
2017-04-28 9:47 ` Christoffer Dall
2017-04-30 19:33 ` Christoffer Dall
2017-05-03 13:40 ` Auger Eric
2017-05-03 14:38 ` Christoffer Dall
2017-04-30 19:35 ` Christoffer Dall
2017-05-03 6:53 ` Auger Eric
2017-05-03 8:01 ` Christoffer Dall
2017-05-03 10:22 ` Auger Eric
2017-04-30 20:13 ` Christoffer Dall
2017-04-14 10:15 ` [PATCH v5 17/22] KVM: arm64: vgic-its: Collection table save/restore Eric Auger
2017-04-26 11:33 ` Prakash B
2017-04-28 10:44 ` Christoffer Dall
2017-04-28 11:05 ` Auger Eric
2017-04-28 17:42 ` Christoffer Dall
2017-04-14 10:15 ` [PATCH v5 18/22] KVM: arm64: vgic-its: vgic_its_check_id returns the entry's GPA Eric Auger
2017-04-26 11:33 ` Prakash B
2017-05-02 8:29 ` Christoffer Dall
2017-04-14 10:15 ` [PATCH v5 19/22] KVM: arm64: vgic-its: ITT save and restore Eric Auger
2017-04-26 11:34 ` Prakash B
2017-04-30 20:14 ` Christoffer Dall
2017-05-03 16:08 ` Auger Eric
2017-05-03 16:37 ` Christoffer Dall
2017-05-03 21:55 ` Auger Eric
2017-05-04 7:31 ` Christoffer Dall
2017-05-04 7:40 ` Auger Eric
2017-05-04 8:23 ` Christoffer Dall
2017-05-04 8:44 ` Auger Eric
2017-04-14 10:15 ` [PATCH v5 20/22] KVM: arm64: vgic-its: Device table save/restore Eric Auger
2017-04-26 11:34 ` Prakash B
2017-04-30 20:55 ` Christoffer Dall
2017-05-03 14:07 ` Auger Eric
2017-05-03 15:29 ` Christoffer Dall
2017-05-03 21:38 ` Auger Eric
2017-04-14 10:15 ` [PATCH v5 21/22] KVM: arm64: vgic-its: Fix pending table sync Eric Auger
2017-04-26 11:35 ` Prakash B
2017-04-30 21:10 ` Christoffer Dall
2017-05-03 22:20 ` Auger Eric
2017-05-04 7:32 ` Christoffer Dall
2017-04-14 10:15 ` [PATCH v5 22/22] KVM: arm64: vgic-v3: KVM_DEV_ARM_VGIC_SAVE_PENDING_TABLES Eric Auger
2017-04-26 11:35 ` Prakash B
2017-04-30 21:32 ` Christoffer Dall
2017-05-03 22:22 ` Auger Eric
2017-04-26 11:38 ` [PATCH v5 00/22] vITS save/restore Prakash B
2017-04-26 13:02 ` Christoffer Dall
2017-04-27 6:55 ` 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=1492164934-988-1-git-send-email-eric.auger@redhat.com \
--to=eric.auger@redhat.com \
--cc=linux-arm-kernel@lists.infradead.org \
/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;
as well as URLs for NNTP newsgroup(s).