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