Hi Giacomo,

As requested, I have created an issue: 
https://gem5.atlassian.net/browse/GEM5-711
In the meantime, I have run a few more configurations. It appears this bug is 
also present when using the VExpress_GEM5_V1 platform or using the DerivO3CPU 
model.
I have summarized in the issue the configurations I have tested and the ones 
that seem to work.

Thanks,
Nathanael

From: Giacomo Travaglini [mailto:giacomo.travagl...@arm.com]
Sent: Thursday, 30 July 2020 11:32
To: Nathanael Premillieu <nathanael.premill...@huawei.com>; gem5 users mailing 
list <gem5-users@gem5.org>
Cc: Ciro Santilli <ciro.santi...@arm.com>
Subject: RE: [gem5-users] Re: Current status of gem5 capabilities regarding 
multicores full system simulation

Thanks Nathanael,

Could you open a JIRA ticket for that?

https://gem5.atlassian.net/projects/GEM5/issues

Kind Regards

Giacomo

From: Nathanael Premillieu 
<nathanael.premill...@huawei.com<mailto:nathanael.premill...@huawei.com>>
Sent: 29 July 2020 16:46
To: Giacomo Travaglini 
<giacomo.travagl...@arm.com<mailto:giacomo.travagl...@arm.com>>; gem5 users 
mailing list <gem5-users@gem5.org<mailto:gem5-users@gem5.org>>
Cc: Ciro Santilli <ciro.santi...@arm.com<mailto:ciro.santi...@arm.com>>
Subject: RE: [gem5-users] Re: Current status of gem5 capabilities regarding 
multicores full system simulation

Hi Giacomo,

Thanks for the patch.
I've tried with it and it seems to work. But not for all number of cores.
With gem5 v20.0.0.2, I've tried with n=1, 2, 3, 4, 5 and linux can boot, but 
with n>=6 (I've tried 6, 8, 16, 32, 64), I have the following error, soon after 
start:

panic: panic condition (pkt->needsWritable() != pkt->isInvalidate()) && 
!pkt->req->isCacheMaintenance() occurred: global got snoop WriteReq 
[80a70800:80a70803] UC where needsWritable, does not match isInvalidate

With gem5 develop branch (v20.0.0.3-294-g0f4ecba2a), I see them same thing.

For reference, the command line I have used:
$ build/ARM/gem5.opt configs/example/fs.py --kernel=binaries/vmlinux.arm64     
--machine-type=VExpress_GEM5_V2     
--disk-image=aarch64-ubuntu-trusty-headless.img --cpu-type=O3_ARM_v7a_3 
--caches --l2cache -n 6

And a more detailed failing output:
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: binaries/vmlinux.arm64
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
0: system.remote_gdb: listening for remote gdb on port 7001
0: system.remote_gdb: listening for remote gdb on port 7002
0: system.remote_gdb: listening for remote gdb on port 7004
0: system.remote_gdb: listening for remote gdb on port 7005
0: system.remote_gdb: listening for remote gdb on port 7006
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 ****
warn: Existing EnergyCtrl, but no enabled DVFSHandler found.
info: Entering event queue @ 0.  Starting simulation...
warn: SCReg: Access to unknown device dcc0:site0:pos0:fn7:dev0
warn:   instruction 'csdb' unimplemented
warn: Gicv3Distributor::write(): setting ARE to 0 is not supported!
panic: panic condition (pkt->needsWritable() != pkt->isInvalidate()) && 
!pkt->req->isCacheMaintenance() occurred: global got snoop WriteReq 
[80a70800:80a70803] UC where needsWritable, does not match isInvalidate
Memory Usage: 1142332 KBytes
Program aborted at tick 13365162500
--- BEGIN LIBC BACKTRACE ---
../../../tools/gem5/gem5.git/build/ARM/gem5.opt(+0xbe72f0)[0x55936b9ea2f0]
../../../tools/gem5/gem5.git/build/ARM/gem5.opt(+0xbfae1e)[0x55936b9fde1e]
/lib/x86_64-linux-gnu/libpthread.so.0(+0x153c0)[0x7faf21ea03c0]
/lib/x86_64-linux-gnu/libc.so.6(gsignal+0xcb)[0x7faf2144418b]
/lib/x86_64-linux-gnu/libc.so.6(abort+0x12b)[0x7faf21423859]
../../../tools/gem5/gem5.git/build/ARM/gem5.opt(+0xfc80d0)[0x55936bdcb0d0]
../../../tools/gem5/gem5.git/build/ARM/gem5.opt(+0xfbbf93)[0x55936bdbef93]
../../../tools/gem5/gem5.git/build/ARM/gem5.opt(+0x1e65cbc)[0x55936cc68cbc]
../../../tools/gem5/gem5.git/build/ARM/gem5.opt(+0x1e69939)[0x55936cc6c939]
../../../tools/gem5/gem5.git/build/ARM/gem5.opt(+0xfb4a0e)[0x55936bdb7a0e]
../../../tools/gem5/gem5.git/build/ARM/gem5.opt(+0xfa7eb9)[0x55936bdaaeb9]
../../../tools/gem5/gem5.git/build/ARM/gem5.opt(+0xbef2e9)[0x55936b9f22e9]
../../../tools/gem5/gem5.git/build/ARM/gem5.opt(+0xc104e8)[0x55936ba134e8]
../../../tools/gem5/gem5.git/build/ARM/gem5.opt(+0xc112dd)[0x55936ba142dd]
../../../tools/gem5/gem5.git/build/ARM/gem5.opt(+0x21544b0)[0x55936cf574b0]
../../../tools/gem5/gem5.git/build/ARM/gem5.opt(+0x8e3aef)[0x55936b6e6aef]
/lib/x86_64-linux-gnu/libpython3.8.so.1.0(+0x2a12d8)[0x7faf2214f2d8]
/lib/x86_64-linux-gnu/libpython3.8.so.1.0(_PyEval_EvalFrameDefault+0x8b70)[0x7faf21f29f70]
/lib/x86_64-linux-gnu/libpython3.8.so.1.0(_PyEval_EvalCodeWithName+0x8fb)[0x7faf2207388b]
/lib/x86_64-linux-gnu/libpython3.8.so.1.0(_PyFunction_Vectorcall+0x90)[0x7faf2214ecd0]
/lib/x86_64-linux-gnu/libpython3.8.so.1.0(+0x72ffd)[0x7faf21f20ffd]
/lib/x86_64-linux-gnu/libpython3.8.so.1.0(_PyEval_EvalFrameDefault+0x8067)[0x7faf21f29467]
/lib/x86_64-linux-gnu/libpython3.8.so.1.0(+0x7e0db)[0x7faf21f2c0db]
/lib/x86_64-linux-gnu/libpython3.8.so.1.0(+0x72ffd)[0x7faf21f20ffd]
/lib/x86_64-linux-gnu/libpython3.8.so.1.0(_PyEval_EvalFrameDefault+0x3c6b)[0x7faf21f2506b]
/lib/x86_64-linux-gnu/libpython3.8.so.1.0(_PyEval_EvalCodeWithName+0x8fb)[0x7faf2207388b]
/lib/x86_64-linux-gnu/libpython3.8.so.1.0(_PyFunction_Vectorcall+0x90)[0x7faf2214ecd0]
/lib/x86_64-linux-gnu/libpython3.8.so.1.0(+0x72ffd)[0x7faf21f20ffd]
/lib/x86_64-linux-gnu/libpython3.8.so.1.0(_PyEval_EvalFrameDefault+0x8067)[0x7faf21f29467]
/lib/x86_64-linux-gnu/libpython3.8.so.1.0(_PyEval_EvalCodeWithName+0x8fb)[0x7faf2207388b]
/lib/x86_64-linux-gnu/libpython3.8.so.1.0(PyEval_EvalCodeEx+0x3e)[0x7faf22073c0e]
/lib/x86_64-linux-gnu/libpython3.8.so.1.0(PyEval_EvalCode+0x1b)[0x7faf22073fbb]
--- END LIBC BACKTRACE ---
Aborted (core dumped)

Thanks,
Nathanael

From: Giacomo Travaglini [mailto:giacomo.travagl...@arm.com]
Sent: Tuesday, 28 July 2020 15:08
To: Nathanael Premillieu 
<nathanael.premill...@huawei.com<mailto:nathanael.premill...@huawei.com>>; gem5 
users mailing list <gem5-users@gem5.org<mailto:gem5-users@gem5.org>>
Cc: Ciro Santilli <ciro.santi...@arm.com<mailto:ciro.santi...@arm.com>>
Subject: RE: [gem5-users] Re: Current status of gem5 capabilities regarding 
multicores full system simulation

Nathanael,

The only difference is that V1 is using GICv2 and V2 is using GICv3.

About what I am suggesting: while using V2 with DTB autogen (as Ciro 
suggested), apply the following diff

diff --git a/src/dev/arm/RealView.py b/src/dev/arm/RealView.py
index f78b41e..d667659 100644
--- a/src/dev/arm/RealView.py
+++ b/src/dev/arm/RealView.py
@@ -1184,7 +1184,7 @@ class VExpress_GEM5_V1(VExpress_GEM5_V1_Base):
class VExpress_GEM5_V2_Base(VExpress_GEM5_Base):
     gic = Gicv3(dist_addr=0x2c000000, redist_addr=0x2c010000,
                 maint_int=ArmPPI(num=25),
-                its=Gicv3Its(pio_addr=0x2e010000))
+               its=NULL)


Let me know if it works,

Giacomo

From: Nathanael Premillieu 
<nathanael.premill...@huawei.com<mailto:nathanael.premill...@huawei.com>>
Sent: 28 July 2020 13:07
To: Giacomo Travaglini 
<giacomo.travagl...@arm.com<mailto:giacomo.travagl...@arm.com>>; gem5 users 
mailing list <gem5-users@gem5.org<mailto:gem5-users@gem5.org>>
Cc: Ciro Santilli <ciro.santi...@arm.com<mailto:ciro.santi...@arm.com>>
Subject: RE: [gem5-users] Re: Current status of gem5 capabilities regarding 
multicores full system simulation

Hi,

Thank you all for your answers.

Jason:
The page http://www.arm.com/ResearchEnablement/SystemModeling doesn't seem to 
exist anymore. But I guess you are referring to the Arm Research Enablement Kit 
located here: https://github.com/arm-university/arm-gem5-rsk. I have looked at 
it but it is fairly old (3 years, some links are broken) and mainly target 
MinorCPU while I'm more interested in O3. For the starter_fs script, I think it 
is linked to the Arm Research Enablement Kit and it does not seems to support 
O3 model.


Ciro:
Thanks for opening a bug report!
>From what I have seen, the nightly test is using O3_ARM_v7a_3 model so I guess 
>it is ok if I use it too. It is also using VExpress_GEM5_V1 as a platform, so 
>yeah like Giacomo has suggested, I guess the problem is coming from the 
>VExpress_GEM5_V2 platform.
Thanks for the hint on the DTB files, makes things easier :)

Giacomo:
I'm not sure to understand what you are suggesting, could you be more precise?
Also, is there limitations in using VExpress_GEM5_V1 (which seems to work) 
instead of VExpress_GEM5_V2?

Thanks,
Nathanael
From: Giacomo Travaglini [mailto:giacomo.travagl...@arm.com]
Sent: Tuesday, 28 July 2020 09:56
To: gem5 users mailing list <gem5-users@gem5.org<mailto:gem5-users@gem5.org>>
Cc: Nathanael Premillieu 
<nathanael.premill...@huawei.com<mailto:nathanael.premill...@huawei.com>>; Ciro 
Santilli <ciro.santi...@arm.com<mailto:ciro.santi...@arm.com>>
Subject: Re: [gem5-users] Re: Current status of gem5 capabilities regarding 
multicores full system simulation

I have the suspicion the problem is in the Gicv3 ITS doing DMAs to the coherent 
XBar without a cache controller. Could you disable it from V2? Otherwise you 
would need to put a cache between the ITS and the XBar

Let me know if it works,

Giacomo

Get Outlook for iOS<https://aka.ms/o0ukef>
________________________________
From: Ciro Santilli via gem5-users 
<gem5-users@gem5.org<mailto:gem5-users@gem5.org>>
Sent: Tuesday, July 28, 2020 8:30:47 AM
To: gem5-users@gem5.org<mailto:gem5-users@gem5.org> 
<gem5-users@gem5.org<mailto:gem5-users@gem5.org>>
Cc: Nathanael Premillieu 
<nathanael.premill...@huawei.com<mailto:nathanael.premill...@huawei.com>>; Ciro 
Santilli <ciro.santi...@arm.com<mailto:ciro.santi...@arm.com>>
Subject: [gem5-users] Re: Current status of gem5 capabilities regarding 
multicores full system simulation

Welcome back Nathanael!

We put great importance on ARM Linux kernel boot, and we try to make it so that 
it either works or at least we have a bug report for it.

I reproduce the problem with VExpress_GEM5_V2 but not VExpress_GEM5_V1, opening 
a but for V2 at: https://gem5.atlassian.net/browse/GEM5-706

Besides that, some notes:

O3_ARM_v7a_3: does not sound like a good idea for aarch64 since v7 in name, not 
sure it has all functional units required.

--dtb-file is not needed anymore unless you are hacking the DTB manually. Just 
remove that option to use DTB auto-generation which is more likely to work.

The newly setup nightlies (thanks Bobby!) contain a two core O3 test that 
passed yesterday: 
https://jenkins.gem5.org/job/Nightly/17/artifact/tests/.testing-results/results.xml

<testcase name="realview-o3-dual-ARM-x86_64-opt" 
classname="TestUID:tests/gem5/fs/linux/arm/test.py:realview-o3-dual-ARM-x86_64-opt:realview-o3-dual-ARM-x86_64-opt"
 status="Passed">
________________________________
From: Nathanael Premillieu via gem5-users 
<gem5-users@gem5.org<mailto:gem5-users@gem5.org>>
Sent: Monday, July 27, 2020 6:52 PM
To: gem5-users@gem5.org<mailto:gem5-users@gem5.org> 
<gem5-users@gem5.org<mailto:gem5-users@gem5.org>>
Cc: Nathanael Premillieu 
<nathanael.premill...@huawei.com<mailto:nathanael.premill...@huawei.com>>
Subject: [gem5-users] Current status of gem5 capabilities regarding multicores 
full system simulation


Hi all,



After a few years away, I'm back to gem5. I have to say a lot of things have 
changed, for the better, thank you all!



I'm trying to assess what is the current state of gem5 regarding simulating 
configurations with multiples cores in a full system environment with the 
different cpu models.

Especially with the Arm architecture and the classic memory model in a full 
system simulation using the O3CPU model. And what happens if you add SMT on top 
of that.

I've looked at this page: https://www.gem5.org/documentation/benchmark_status/, 
but from what I can infer, those results are only valid for X86.



I've tried for example to boot linux (using the kernel provided here: 
http://dist.gem5.org/dist/current/arm/aarch-system-201901106.tar.bz2 and the 
disk image here: 
http://dist.gem5.org/dist/current/arm/disks/aarch64-ubuntu-trusty-headless.img.bz2)
 but without success.

But I don't know if I'm doing something wrong or if I'm trying to do something 
that is unsupported for the moment.



I'm using gem5 version v20.0.0.2 and here is my command line:

$ build/ARM/gem5.opt configs/example/fs.py --kernel=binaries/vmlinux.arm64     
--machine-type=VExpress_GEM5_V2     
--dtb-file=system/arm/dt/armv8_gem5_v2_4cpu.dtb     
--disk-image=aarch64-ubuntu-trusty-headless.img --cpu-type=O3_ARM_v7a_3 
--caches --l2cache -n 4



I get the following error: Assertion `reqLookupResult.it->first == line_addr' 
failed.



Global frequency set at 1000000000000 ticks per second

warn: DRAM device capacity (8192 Mbytes) does not match the address range 
assigned (512 Mbytes)

info: kernel located at: binaries/vmlinux.arm64

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

0: system.remote_gdb: listening for remote gdb on port 7001

0: system.remote_gdb: listening for remote gdb on port 7002

0: system.remote_gdb: listening for remote gdb on port 7003

info: Using bootloader at address 0x10

info: Using kernel entry physical address at 0x80080000

info: Loading DTB file: system/arm/dt/armv8_gem5_v2_4cpu.dtb at address 
0x88000000

**** REAL SIMULATION ****

warn: Existing EnergyCtrl, but no enabled DVFSHandler found.

info: Entering event queue @ 0.  Starting simulation...

warn: SCReg: Access to unknown device dcc0:site0:pos0:fn7:dev0

warn:   instruction 'csdb' unimplemented

warn: Gicv3Distributor::write(): setting ARE to 0 is not supported!

gem5.opt: build/ARM/mem/snoop_filter.cc:165: void 
SnoopFilter::finishRequest(bool, Addr, bool): Assertion 
`reqLookupResult.it->first == line_addr' failed.

Program aborted at tick 12946004000



I get the same error using only one core (-n 1). I've also tried with the 
current state of the develop branch (commit v20.0.0.3-290-gcef72adab) and I get 
the same error.



Thanks,

Nathanael
IMPORTANT NOTICE: The contents of this email and any attachments are 
confidential and may also be privileged. If you are not the intended recipient, 
please notify the sender immediately and do not disclose the contents to any 
other person, use it for any purpose, or store or copy the information in any 
medium. Thank you.
IMPORTANT NOTICE: The contents of this email and any attachments are 
confidential and may also be privileged. If you are not the intended recipient, 
please notify the sender immediately and do not disclose the contents to any 
other person, use it for any purpose, or store or copy the information in any 
medium. Thank you.
IMPORTANT NOTICE: The contents of this email and any attachments are 
confidential and may also be privileged. If you are not the intended recipient, 
please notify the sender immediately and do not disclose the contents to any 
other person, use it for any purpose, or store or copy the information in any 
medium. Thank you.
_______________________________________________
gem5-users mailing list -- gem5-users@gem5.org
To unsubscribe send an email to gem5-users-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

Reply via email to