[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 30/33] arm_gic_kvm: Tell kernel about number of IRQs
From: |
Peter Maydell |
Subject: |
[Qemu-devel] [PULL 30/33] arm_gic_kvm: Tell kernel about number of IRQs |
Date: |
Thu, 11 Dec 2014 12:19:52 +0000 |
Newer kernels support a device attribute on the GIC which allows us to
tell it how many IRQs this GIC instance is configured with; use it, if
it exists.
Signed-off-by: Peter Maydell <address@hidden>
Reviewed-by: Christoffer Dall <address@hidden>
Message-id: address@hidden
---
hw/intc/arm_gic_kvm.c | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
diff --git a/hw/intc/arm_gic_kvm.c b/hw/intc/arm_gic_kvm.c
index 5038885..1ad3eb0 100644
--- a/hw/intc/arm_gic_kvm.c
+++ b/hw/intc/arm_gic_kvm.c
@@ -92,6 +92,21 @@ static bool kvm_arm_gic_can_save_restore(GICState *s)
return s->dev_fd >= 0;
}
+static bool kvm_gic_supports_attr(GICState *s, int group, int attrnum)
+{
+ struct kvm_device_attr attr = {
+ .group = group,
+ .attr = attrnum,
+ .flags = 0,
+ };
+
+ if (s->dev_fd == -1) {
+ return false;
+ }
+
+ return kvm_device_ioctl(s->dev_fd, KVM_HAS_DEVICE_ATTR, &attr) == 0;
+}
+
static void kvm_gic_access(GICState *s, int group, int offset,
int cpu, uint32_t *val, bool write)
{
@@ -553,6 +568,11 @@ static void kvm_arm_gic_realize(DeviceState *dev, Error
**errp)
return;
}
+ if (kvm_gic_supports_attr(s, KVM_DEV_ARM_VGIC_GRP_NR_IRQS, 0)) {
+ uint32_t numirqs = s->num_irq;
+ kvm_gic_access(s, KVM_DEV_ARM_VGIC_GRP_NR_IRQS, 0, 0, &numirqs, 1);
+ }
+
/* Distributor */
memory_region_init_reservation(&s->iomem, OBJECT(s),
"kvm-gic_dist", 0x1000);
--
1.9.1
- [Qemu-devel] [PULL 00/33] target-arm queue, Peter Maydell, 2014/12/11
- [Qemu-devel] [PULL 33/33] target-arm: Check error conditions on kvm_arm_reset_vcpu, Peter Maydell, 2014/12/11
- [Qemu-devel] [PULL 32/33] target-arm: Support save/load for 64 bit CPUs, Peter Maydell, 2014/12/11
- [Qemu-devel] [PULL 30/33] arm_gic_kvm: Tell kernel about number of IRQs,
Peter Maydell <=
- [Qemu-devel] [PULL 27/33] target-arm: make MAIR0/1 banked, Peter Maydell, 2014/12/11
- [Qemu-devel] [PULL 28/33] hw/arm/realview.c: Fix memory leak in realview_init(), Peter Maydell, 2014/12/11
- [Qemu-devel] [PULL 31/33] target-arm/kvm: make reg sync code common between kvm32/64, Peter Maydell, 2014/12/11
- [Qemu-devel] [PULL 24/33] target-arm: make PAR banked, Peter Maydell, 2014/12/11
- [Qemu-devel] [PULL 23/33] target-arm: make IFAR/DFAR banked, Peter Maydell, 2014/12/11
- [Qemu-devel] [PULL 21/33] target-arm: make IFSR banked, Peter Maydell, 2014/12/11
- [Qemu-devel] [PULL 26/33] target-arm: make c13 cp regs banked (FCSEIDR, ...), Peter Maydell, 2014/12/11
- [Qemu-devel] [PULL 29/33] hw/arm/boot: fix uninitialized scalar variable warning reported by coverity, Peter Maydell, 2014/12/11
- [Qemu-devel] [PULL 17/33] target-arm: make CSSELR banked, Peter Maydell, 2014/12/11
- [Qemu-devel] [PULL 18/33] target-arm: make TTBR0/1 banked, Peter Maydell, 2014/12/11