changeset 768b98294fae in /z/repo/gem5
details: http://repo.gem5.org/gem5?cmd=changeset;node=768b98294fae
description:
        kvm, arm: Make GIC interrupt lines configurable

        Add support for overriding the number of interrupt lines in the ARM
        KvmGic.

        Signed-off-by: Andreas Sandberg <andreas.sandb...@arm.com>
        Reviewed-by: Radhika Jagtap <radhika.jag...@arm.com>
        Reviewed-by: Nikos Nikoleris <nikos.nikole...@arm.com>

diffstat:

 src/arch/arm/kvm/KvmGic.py |  1 +
 src/arch/arm/kvm/gic.cc    |  8 +++++---
 src/arch/arm/kvm/gic.hh    |  4 +++-
 3 files changed, 9 insertions(+), 4 deletions(-)

diffs (58 lines):

diff -r 294fe30960f0 -r 768b98294fae src/arch/arm/kvm/KvmGic.py
--- a/src/arch/arm/kvm/KvmGic.py        Wed Apr 27 15:34:31 2016 +0100
+++ b/src/arch/arm/kvm/KvmGic.py        Wed Apr 27 15:34:48 2016 +0100
@@ -48,6 +48,7 @@
 
     dist_addr = Param.Addr(0x1f001000, "Address for distributor")
     cpu_addr = Param.Addr(0x1f000100, "Address for cpu")
+    it_lines = Param.UInt32(128, "Number of interrupt lines supported")
 
     system = Param.System(Parent.any,
                           'System this interrupt controller belongs to')
diff -r 294fe30960f0 -r 768b98294fae src/arch/arm/kvm/gic.cc
--- a/src/arch/arm/kvm/gic.cc   Wed Apr 27 15:34:31 2016 +0100
+++ b/src/arch/arm/kvm/gic.cc   Wed Apr 27 15:34:48 2016 +0100
@@ -44,8 +44,8 @@
 #include "debug/Interrupt.hh"
 #include "params/KvmGic.hh"
 
-
-KvmKernelGicV2::KvmKernelGicV2(KvmVM &_vm, Addr cpu_addr, Addr dist_addr)
+KvmKernelGicV2::KvmKernelGicV2(KvmVM &_vm, Addr cpu_addr, Addr dist_addr,
+                               unsigned it_lines)
     : cpuRange(RangeSize(cpu_addr, KVM_VGIC_V2_CPU_SIZE)),
       distRange(RangeSize(dist_addr, KVM_VGIC_V2_DIST_SIZE)),
       vm(_vm),
@@ -55,6 +55,8 @@
         KVM_DEV_ARM_VGIC_GRP_ADDR, KVM_VGIC_V2_ADDR_TYPE_DIST, dist_addr);
     kdev.setAttr<uint64_t>(
         KVM_DEV_ARM_VGIC_GRP_ADDR, KVM_VGIC_V2_ADDR_TYPE_CPU, cpu_addr);
+
+    kdev.setAttr<uint32_t>(KVM_DEV_ARM_VGIC_GRP_NR_IRQS, 0, it_lines);
 }
 
 KvmKernelGicV2::~KvmKernelGicV2()
@@ -104,7 +106,7 @@
 KvmGic::KvmGic(const KvmGicParams *p)
     : BaseGic(p),
       system(*p->system),
-      kernelGic(*p->kvmVM, p->cpu_addr, p->dist_addr),
+      kernelGic(*p->kvmVM, p->cpu_addr, p->dist_addr, p->it_lines),
       addrRanges{kernelGic.distRange, kernelGic.cpuRange}
 {
 }
diff -r 294fe30960f0 -r 768b98294fae src/arch/arm/kvm/gic.hh
--- a/src/arch/arm/kvm/gic.hh   Wed Apr 27 15:34:31 2016 +0100
+++ b/src/arch/arm/kvm/gic.hh   Wed Apr 27 15:34:48 2016 +0100
@@ -65,8 +65,10 @@
      * @param vm KVM VM representing this system
      * @param cpu_addr GIC CPU interface base address
      * @param dist_addr GIC distributor base address
+     * @param it_liens Number of interrupt lines to support
      */
-    KvmKernelGicV2(KvmVM &vm, Addr cpu_addr, Addr dist_addr);
+    KvmKernelGicV2(KvmVM &vm, Addr cpu_addr, Addr dist_addr,
+                   unsigned it_lines);
     virtual ~KvmKernelGicV2();
 
     KvmKernelGicV2(const KvmKernelGicV2 &other) = delete;
_______________________________________________
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to