From: marc.zyngier@arm.com (Marc Zyngier)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v4 0/8] arm/arm64: KVM: dynamic VGIC sizing
Date: Thu, 11 Sep 2014 12:09:07 +0100 [thread overview]
Message-ID: <1410433755-3612-1-git-send-email-marc.zyngier@arm.com> (raw)
So far, the VGIC data structures have been statically sized, meaning
that we always have to support more interrupts than we actually want,
and more CPU interfaces than we should. This is a waste of resource,
and is the kind of things that should be tuneable.
This series addresses that issue by changing the data structures to be
dynamically allocated, and adds a new configuration attribute to
allocate the number of interrupts. When the attribute is not used, we
fallback to the old behaviour of allocating a fixed number of
interrupts.
This series is also the base for Andre Przywara's GICv3 distributor
emulation code (which can support far more than 8 vcpus and 1020
interrupts).
This has been tested on both ARM (TC2, A20) and arm64 (model and Juno).
The code is available from my kvm-arm64/kvmtool-vgic-dyn branch,
together with the corresponding kvmtool code.
* From v3 [3]
- Number of comments added to the data structures, making slightly more
obvious the various mappings
- Dropped the nr_irqs field from bitmap and bytemap structures, as
it was a leftover from the initial revision that only had a single
pointer
- Small cleanups all over the place
- Dropped the "sub-page offset" patch for now, as this need some
serious reworking
- Rebased on top of Christoffer "vgic cleanup" series, with 3.17-rc4
thrown in for a good measure
* From v2 [2]
- Fixed bug that broke QEMU (register access can trigger allocation)
- irq_pending_on_cpu is now dynamic (needed for more than 32 or 64 vcpus)
- Rebased on top of Victor's BE patches
* From v1 [1]
- Rebased on top of 3.16-rc1
- Lots of cleanup
[1]: https://lists.cs.columbia.edu/pipermail/kvmarm/2013-October/005879.html
[2]: https://lists.cs.columbia.edu/pipermail/kvmarm/2014-June/010050.html
[3]: https://lists.cs.columbia.edu/pipermail/kvmarm/2014-July/010383.html
Marc Zyngier (8):
KVM: ARM: vgic: plug irq injection race
arm/arm64: KVM: vgic: switch to dynamic allocation
arm/arm64: KVM: vgic: Parametrize VGIC_NR_SHARED_IRQS
arm/arm64: KVM: vgic: kill VGIC_MAX_CPUS
arm/arm64: KVM: vgic: handle out-of-range MMIO accesses
arm/arm64: KVM: vgic: kill VGIC_NR_IRQS
arm/arm64: KVM: vgic: delay vgic allocation until init time
arm/arm64: KVM: vgic: make number of irqs a configurable attribute
Documentation/virtual/kvm/devices/arm-vgic.txt | 10 +
arch/arm/include/uapi/asm/kvm.h | 1 +
arch/arm/kvm/arm.c | 10 +-
arch/arm64/include/uapi/asm/kvm.h | 1 +
include/kvm/arm_vgic.h | 88 ++++--
virt/kvm/arm/vgic.c | 396 +++++++++++++++++++++----
6 files changed, 413 insertions(+), 93 deletions(-)
--
2.0.4
next reply other threads:[~2014-09-11 11:09 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-09-11 11:09 Marc Zyngier [this message]
2014-09-11 11:09 ` [PATCH v4 1/8] KVM: ARM: vgic: plug irq injection race Marc Zyngier
2014-09-11 11:09 ` [PATCH v4 2/8] arm/arm64: KVM: vgic: switch to dynamic allocation Marc Zyngier
2014-09-11 22:36 ` Christoffer Dall
2014-09-12 9:13 ` Marc Zyngier
2014-09-12 17:43 ` Christoffer Dall
2014-09-11 11:09 ` [PATCH v4 3/8] arm/arm64: KVM: vgic: Parametrize VGIC_NR_SHARED_IRQS Marc Zyngier
2014-09-11 11:09 ` [PATCH v4 4/8] arm/arm64: KVM: vgic: kill VGIC_MAX_CPUS Marc Zyngier
2014-09-11 11:09 ` [PATCH v4 5/8] arm/arm64: KVM: vgic: handle out-of-range MMIO accesses Marc Zyngier
2014-09-11 11:09 ` [PATCH v4 6/8] arm/arm64: KVM: vgic: kill VGIC_NR_IRQS Marc Zyngier
2014-09-11 22:37 ` Christoffer Dall
2014-09-11 11:09 ` [PATCH v4 7/8] arm/arm64: KVM: vgic: delay vgic allocation until init time Marc Zyngier
2014-09-11 11:09 ` [PATCH v4 8/8] arm/arm64: KVM: vgic: make number of irqs a configurable attribute Marc Zyngier
2014-09-11 22:38 ` Christoffer Dall
2014-09-25 12:44 ` [PATCH v4 0/8] arm/arm64: KVM: dynamic VGIC sizing Shannon Zhao
2014-09-25 13:35 ` Christoffer Dall
2014-09-26 1:15 ` Shannon Zhao
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=1410433755-3612-1-git-send-email-marc.zyngier@arm.com \
--to=marc.zyngier@arm.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).