You have to modify TIMER and GIC.
diff --git a/src/dev/arm/GenericTimer.py b/src/dev/arm/GenericTimer.py
index ed81b2471..aee15b738 100644
--- a/src/dev/arm/GenericTimer.py
+++ b/src/dev/arm/GenericTimer.py
@@ -98,6 +98,7 @@ Reference:
# value, so this initial value will be discarded
cntfrq = Param.UInt64(0x1800000, "Value for the CNTFRQ timer register")
+ '''
def generateDeviceTree(self, state):
node = FdtNode("timer")
@@ -115,7 +116,8 @@ Reference:
node.append(self.counter.unproxy(self).generateDtb())
yield node
-
+ '''
+
class GenericTimerFrame(PioDevice):
"""
Memory-mapped timer frame implementation. Controlled from GenericTimerMem,
diff --git a/src/dev/arm/RealView.py b/src/dev/arm/RealView.py
index 9ab04725d..3fd0e9168 100644
--- a/src/dev/arm/RealView.py
+++ b/src/dev/arm/RealView.py
@@ -67,8 +67,10 @@ from m5.objects.SMMUv3 import SMMUv3
# emulation. Use a GIC model that automatically switches between
# gem5's GIC model and KVM's GIC model if KVM is available.
try:
- from m5.objects.KvmGic import MuxingKvmGic
- kvm_gicv2_class = MuxingKvmGic
+ # from m5.objects.KvmGic import MuxingKvmGic
+ # kvm_gicv2_class = MuxingKvmGic
+ from m5.objects.KvmGic import Gic400
+ kvm_gicv2_class = Gic400
except ImportError:
# KVM support wasn't compiled into gem5. Fallback to a
# software-only GIC.
diff --git a/src/dev/arm/generic_timer.cc b/src/dev/arm/generic_timer.cc
index 458a2eb7a..509153cab 100644
--- a/src/dev/arm/generic_timer.cc
+++ b/src/dev/arm/generic_timer.cc
@@ -289,8 +289,12 @@ ArchTimer::updateCounter()
_interrupt->clear();
}
- _control.istatus = 0;
-
+ // _control.istatus = 0;
+ if (_control.istatus) {
+ DPRINTF(Timer, "Clearing interrupt\n");
+ _interrupt->clear();
+ _control.istatus = 0;
+ }
if (scheduleEvents()) {
_parent.schedule(_counterLimitReachedEvent,
whenValue(_counterLimit));
diff --git a/util/m5/src/abi/aarch64/SConsopts
b/util/m5/src/abi/aarch64/SConsopts
index 47ada0209..683c4f2eb 100644
--- a/util/m5/src/abi/aarch64/SConsopts
+++ b/util/m5/src/abi/aarch64/SConsopts
@@ -27,6 +27,7 @@ Import('*')
env['ABI'] = 'aarch64'
get_abi_opt('CROSS_COMPILE', 'aarch64-linux-gnu-')
+env.Append(CFLAGS='-DM5OP_ADDR=0x10010000')
env['CALL_TYPE']['inst'].impl('m5op.S', 'verify_inst.cc', default=True)
env['CALL_TYPE']['addr'].impl('m5op_addr.S')
-----邮件原件-----
发件人: Tracy Mac via gem5-users [mailto:[email protected]]
发送时间: 2021年1月26日 19:09
收件人: gem5 users mailing list <[email protected]>
抄送: Tracy Mac <[email protected]>
主题: [gem5-users] KVM Doesn't Work
Hi All
I run the fs.py script in gem5(20.1.0.0), but there is no information in the
m5term console. I don't know what went wrong.
In gem5(20.0.0.3 develop),kvm can work very well,I have no idea how to change
the new version.
INFO:
gem5 Simulator System. http://gem5.org
gem5 is copyrighted software; use the --copyright option for details.
gem5 version 20.1.0.2
gem5 compiled Jan 26 2021 17:54:32
gem5 started Jan 26 2021 18:36:35
gem5 executing on ubuntu, pid 28630
command line: ./build/ARM/gem5.opt configs/example/fs.py --cpu-type=ArmV8KvmCPU
--disk-image=/home/tracy/Desktop/image/aarch-system-20170616/disks/linaro-minimal-aarch64.img
--kernel=/home/tracy/Desktop/vmlinux.euler
warn: iobus.slave is deprecated. `slave` is now called `cpu_side_ports`
warn: bridge.master is deprecated. `master` is now called `mem_side_port`
warn: membus.master is deprecated. `master` is now called `mem_side_ports`
warn: bridge.slave is deprecated. `slave` is now called `cpu_side_port`
warn: membus.slave is deprecated. `slave` is now called `cpu_side_ports`
warn: iobus.master is deprecated. `master` is now called `mem_side_ports`
warn: iobridge.slave is deprecated. `slave` is now called `cpu_side_port`
warn: membus.slave is deprecated. `slave` is now called `cpu_side_ports`
warn: iobridge.master is deprecated. `master` is now called `mem_side_port`
warn: membus.slave is deprecated. `slave` is now called `cpu_side_ports`
warn: membus.slave is deprecated. `slave` is now called `cpu_side_ports`
warn: membus.slave is deprecated. `slave` is now called `cpu_side_ports`
warn: membus.slave is deprecated. `slave` is now called `cpu_side_ports`
warn: membus.master is deprecated. `master` is now called `mem_side_ports`
Global frequency set at 1000000000000 ticks per second
warn: No dot file generated. Please install pydot to generate the dot file and
pdf.
warn: DRAM device capacity (8192 Mbytes) does not match the address range
assigned (512 Mbytes)
info: kernel located at: /home/tracy/Desktop/vmlinux.euler
warn: Highest ARM exception-level set to AArch32 but the workload is for
AArch64. Assuming you wanted these to match.
system.vncserver: Listening for connections on port 5900
system.terminal: Listening for connections on port 3456
system.realview.uart1.device: Listening for connections on port 3457
system.realview.uart2.device: Listening for connections on port 3458
system.realview.uart3.device: Listening for connections on port 3459
0: system.remote_gdb: listening for remote gdb on port 7000
warn: CoherentXBar system.membus has no snooping ports attached!
info: Using bootloader at address 0x10
info: Using kernel entry physical address at 0x80080000
info: Loading DTB file: m5out/system.dtb at address 0x88000000
**** REAL SIMULATION ****
info: KVM: Coalesced MMIO disabled by config.
warn: Existing EnergyCtrl, but no enabled DVFSHandler found.
info: Entering event queue @ 0. Starting simulation...
warn: Returning zero for read from miscreg pmintenset_el1
warn: Returning zero for read from miscreg pmintenclr_el1
warn: Returning zero for read from miscreg pmcr_el0
warn: Returning zero for read from miscreg pmcntenset_el0
warn: Returning zero for read from miscreg pmcntenclr_el0
warn: Returning zero for read from miscreg pmovsclr_el0
warn: Returning zero for read from miscreg pmswinc_el0
warn: Returning zero for read from miscreg pmselr_el0
warn: Returning zero for read from miscreg pmccntr_el0
warn: Returning zero for read from miscreg pmuserenr_el0
warn: Returning zero for read from miscreg pmovsset_el0
warn: Returning zero for read from miscreg pmevcntr0_el0
warn: Returning zero for read from miscreg pmevcntr1_el0
warn: Returning zero for read from miscreg pmevcntr2_el0
warn: Returning zero for read from miscreg pmevcntr3_el0
warn: Returning zero for read from miscreg pmevcntr4_el0
warn: Returning zero for read from miscreg pmevcntr5_el0
warn: Returning zero for read from miscreg pmevtyper0_el0
warn: Returning zero for read from miscreg pmevtyper1_el0
warn: Returning zero for read from miscreg pmevtyper2_el0
warn: Returning zero for read from miscreg pmevtyper3_el0
warn: Returning zero for read from miscreg pmevtyper4_el0
warn: Returning zero for read from miscreg pmevtyper5_el0
warn: Returning zero for read from miscreg pmccfiltr_el0
warn: SCReg: Access to unknown device dcc0:site0:pos0:fn7:dev0
1152383696405000: system.terminal: attach terminal 0
command line: ./build/ARM/gem5.opt configs/example.fs.py
--cpu-type=ArmV8KvmCPU--kernel=/home/tracy/gem5/fs_image_arm/binaries/vmlinux.vexpress_gem5_v1_64.20170616
--disk=/home/tracy/gem5/fs_image_arm/disks/linaro-minimal-aarch64.img
Host CPU Architecture: ARMV8
Host OS: ubuntu 18.04.4
_______________________________________________
gem5-users mailing list -- [email protected] To unsubscribe send an email to
[email protected] %(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s
_______________________________________________
gem5-users mailing list -- [email protected]
To unsubscribe send an email to [email protected]
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s