Commit Graph

19081 Commits

Author SHA1 Message Date
Gabe Black
c4ea43f462 arch-x86: De-indent arch/x86/regs/misc.hh.
Namespaces are not supposed to increase indentation.

Change-Id: I6736c5049ea8d853dc67f319192b9eaa97d27cb1
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/49757
Maintainer: Gabe Black <gabe.black@gmail.com>
Reviewed-by: Gabe Black <gabe.black@gmail.com>
Tested-by: kokoro <noreply+kokoro@google.com>
2022-06-08 07:08:50 +00:00
Gabe Black
88143c940b arch-x86: Convert segment indices to fit the style guide.
Capitalize only their first letter, and use a namespace to namespace
them instead of a SEGMENT_REG_ prefix.

Change-Id: I69778c8d052ad6cc0ffd9e74dd1c643e9d28048d
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/49756
Tested-by: kokoro <noreply+kokoro@google.com>
Maintainer: Gabe Black <gabe.black@gmail.com>
Reviewed-by: Gabe Black <gabe.black@gmail.com>
2022-06-08 07:08:37 +00:00
Gabe Black
b836e6a495 arch-x86: Stop using (read|set)IntReg.
These accessors just translate a RegIndex x into a RegId(IntRegClass, x)
and then does (get|set)Reg. Instead, we can just do (get|set)Reg
directly, since all the integer register named constants are just RegIds
now.

Change-Id: I9e7551ed66a6979e83c745f2891c452ded1eff0e
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/49755
Reviewed-by: Gabe Black <gabe.black@gmail.com>
Maintainer: Gabe Black <gabe.black@gmail.com>
Tested-by: kokoro <noreply+kokoro@google.com>
2022-06-08 07:08:23 +00:00
Gabe Black
16f7b17fc5 arch-x86: Convert the int register constants from RegIndex to RegId.
This will let them be used in APIs which expect either, and will help
transition between the two.

Change-Id: I73fc9e55418ad3ab9e08406f0928aa4b1ef30a49
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/49754
Reviewed-by: Gabe Black <gabe.black@gmail.com>
Maintainer: Gabe Black <gabe.black@gmail.com>
Tested-by: kokoro <noreply+kokoro@google.com>
2022-06-08 07:08:10 +00:00
Gabe Black
ee1262ae40 cpu: constexpr most of RegId's methods, and add a RegIndex operator.
That will let a RegId be used where a RegId is required, but also let it
be downconverted into a scalar RegIndex if using an older API. Note that
this does *not* let you automatically upconvert from a RegIndex into a
RegId, since there would be no way to know what class of register to
use.

Change-Id: I5fff224dce5e02959d5fc3e717014bf7eaa9c022
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/49753
Tested-by: kokoro <noreply+kokoro@google.com>
Maintainer: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
2022-06-08 07:07:53 +00:00
Gabe Black
9b2328d637 arch-x86: Use a namespace for integer registers.
Also reformat the integer register index constants to fit with the style
guide, ie remove the INTREG_ prefix (replaced by the namespace) and
captialize only the first letter.

Change-Id: I682a337944f64a1b96b971a1beb895289b9d299e
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/49752
Reviewed-by: Gabe Black <gabe.black@gmail.com>
Maintainer: Gabe Black <gabe.black@gmail.com>
Tested-by: kokoro <noreply+kokoro@google.com>
2022-06-08 07:07:44 +00:00
Gabe Black
a52f92dccb arch: Remove plumbing for an op_idx value in ISA operands.
Now that op_idx is trivial to calculate (just src_reg_idx or
dest_reg_idx), there's no need to have the indirection and extra
mechanism to funnel a precalculated value around.

Change-Id: I37daeb646b85e050c4b832af28d054ecc3c338b1
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/49750
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>
Maintainer: Giacomo Travaglini <giacomo.travaglini@arm.com>
2022-06-08 07:07:35 +00:00
Gabe Black
a1b439f91c arch: Remove plumbing for operand predication.
The operand predication mechanism has been replaced by mapping
predicate-false register reads/writes to InvalidRegClass.

Change-Id: I57e7aadb7a0d682c225f6a5fe673cba8ddf1c4f8
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/49749
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Maintainer: Giacomo Travaglini <giacomo.travaglini@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>
2022-06-08 07:07:15 +00:00
Gabe Black
7216ff214f arch-x86: Turn predicate-false CC regs into InvalidRegClass.
This makes the (somewhat faulty) predicated register mechanism
unnecessary.

Change-Id: Id053760defd6ac9aaec95c165df5403e7fcb354f
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/49748
Reviewed-by: Gabe Black <gabe.black@gmail.com>
Maintainer: Gabe Black <gabe.black@gmail.com>
Tested-by: kokoro <noreply+kokoro@google.com>
2022-06-08 07:07:02 +00:00
Earl Ou
0260fe7da9 fastmodel: follow .sgproj SIMGEN_COMMAND_LINE
ARM's .sgproj has SIMGEN_COMMAND_LINE to be fed into simgen when
running. However, simgen itself doesn't parse that option and apply. We
need to parse it by ourself and pass the arg to simgen when invoking.

Change-Id: I43b131a1ca9f98891ab390de583589a710e7c812
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/60369
Maintainer: Gabe Black <gabe.black@gmail.com>
Reviewed-by: Gabe Black <gabe.black@gmail.com>
Tested-by: kokoro <noreply+kokoro@google.com>
2022-06-08 00:30:16 +00:00
Hoa Nguyen
c088af945e stdlib: Add checkpoint to Simulator
This change modifies the Simulator constructor to optionally
take a checkpoint directory as an input so that the m5 can
instantiate from the saved checkpoint.

A new method is also added to the Simulator class. The function
will save the checkpoint to the specified directory.

Change-Id: I58b686b6b4f69260ab45709c6ef0bddf4539f0c4
Signed-off-by: Hoa Nguyen <hoanguyen@ucdavis.edu>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/58789
Maintainer: Bobby Bruce <bbruce@ucdavis.edu>
Reviewed-by: Bobby Bruce <bbruce@ucdavis.edu>
Tested-by: kokoro <noreply+kokoro@google.com>
2022-06-07 21:18:12 +00:00
Gabe Black
851c86af6d arch: Improve the regular expression that finds operands.
This regular expression currently has a negative lookbehind assertion
that the operand name isn't preceded by any numbers or letters. Expand
that to also include the : character, since no operand should have a
namespace specifier in front of it.

Change-Id: I0bd84b69b9dad278191831d82db762ae75ce4bf1
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/49751
Maintainer: Gabe Black <gabe.black@gmail.com>
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>
2022-06-07 19:00:12 +00:00
Gabe Black
a40950a5c9 arch,cpu: Remove the idea of a zero register.
This is now handled by using the InvalidRegClass.

Change-Id: If43d8f27cfebc249ec6600847bcfd98c9e94cf40
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/49746
Maintainer: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>
2022-06-07 18:26:33 +00:00
Gabe Black
caffb4e1ff arch: Detect and convert zero registers to InvalidRegClass.
Change-Id: Ic5e070d303bf05ed1640b441e498d879764b8778
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/49745
Maintainer: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>
2022-06-07 18:26:22 +00:00
Gabe Black
8d11bc31b5 arch-arm: Fix dangling pointer to unnamed temporary in nativetrace.cc.
Name the temporary.

Change-Id: I51d0eaa4a6759c3f288b4215db880af6135e9107
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/60409
Reviewed-by: Yu-hsin Wang <yuhsingw@google.com>
Maintainer: Gabe Black <gabe.black@gmail.com>
Tested-by: kokoro <noreply+kokoro@google.com>
2022-06-07 06:37:04 +00:00
Kaustav Goswami
c64f296695 stdlib: AbstractCore calls ArmV8KvmCPU class for aarch64
This change calls the stdlib's correct ArmKvmCPU class (ArmKvmCPU or
ArmV8KVMCPU) depending upon the host machine's architecture when
using KVM cores with ARM ISA.

Change-Id: I2ba8070825503659cd93da15da8507528d7f12ad
Signed-off-by: Kaustav Goswami <kggoswami@ucdavis.edu>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/60329
Maintainer: Bobby Bruce <bbruce@ucdavis.edu>
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Bobby Bruce <bbruce@ucdavis.edu>
2022-06-06 18:56:06 +00:00
Bobby R. Bruce
f2a7a46db0 tests: Disable max_tick for asmtests
These tests are very short and do not need to be limited by a set number
of ticks. They should be ran to completion.

Change-Id: I0ea2193efe01e5ed01afd10d8e5934512a4027c6
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/60251
Maintainer: Jason Lowe-Power <power.jg@gmail.com>
Reviewed-by: Jason Lowe-Power <power.jg@gmail.com>
Reviewed-by: Bobby Bruce <bbruce@ucdavis.edu>
Maintainer: Bobby Bruce <bbruce@ucdavis.edu>
Tested-by: kokoro <noreply+kokoro@google.com>
2022-06-06 18:46:52 +00:00
ntampouratzis
f3e9484969 arch-riscv,dev: Add PCI Host to RISCV Board
Add GenericRiscvPciHost to RISCV Board. In addition, we connect the IGbE_e1000
ethernet card to PCI in order to verify the correct functionality.

To be noticed that we build a new Linux kernel v5.10 (with Bootloader) according to these steps (
https://github.com/gem5/gem5-resources/tree/stable/src/riscv-fs) adding the the PCI and e1000 drivers:

CONFIG_PCI_SYSCALL=y
CONFIG_PCI_STUB=y
CONFIG_PCI_HOST_GENERIC=y
CONFIG_NET_VENDOR_INTEL=y
CONFIG_E1000=y
CONFIG_E1000E=y
CONFIG_IGB=y
CONFIG_NET_VENDOR_I825XX=y

Here you can find the kernel.config and our prebuild kernel to verify the correct behaviour:
https://www.dropbox.com/scl/fo/sz9s37vybpfecbfilxqzz/h?dl=0&rlkey=klkxh33anjqnzwj3sopucqqzx

You can verify it with the following command:
build/RISCV/gem5.fast configs/example/gem5_library/riscv-fs.py

Dear Jason Lowe-Power,

Thank you for your comments! We have addressed all of them.

Best regards,
Nikolaos Tampouratzis

Dear Jason,

I think that it is ok now! :)

Thanks!

Best regards,
Nikolaos Tampouratzis

Change-Id: Id27d84a5588648b82cbfd5c88471927157ae6759
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/59969
Reviewed-by: Jason Lowe-Power <power.jg@gmail.com>
Maintainer: Jason Lowe-Power <power.jg@gmail.com>
Tested-by: kokoro <noreply+kokoro@google.com>
2022-06-06 18:42:12 +00:00
Ayaz Akram
c685cfcb7e mem: Add support for min reads per switch
Similar to minimum writes per switch, this change adds support
for minimum reads per switch. This helps to reduce the read to
write transitions, which helps mixed read/write traffic patterns.

Change-Id: I1f9619c984ba14d2cca09f43bc16863283ea64a5
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/59735
Maintainer: Jason Lowe-Power <power.jg@gmail.com>
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Wendy Elsasser <welsasser@rambus.com>
Reviewed-by: Jason Lowe-Power <power.jg@gmail.com>
2022-06-06 18:31:06 +00:00
Ayaz Akram
84949089a1 mem: Add HBM2 pseudo channel interface configuration
Change-Id: I5826e50a35ee9dda054a164cfda616ca0ffe82e5
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/59734
Maintainer: Jason Lowe-Power <power.jg@gmail.com>
Reviewed-by: Jason Lowe-Power <power.jg@gmail.com>
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Wendy Elsasser <welsasser@rambus.com>
2022-06-06 18:31:06 +00:00
Ayaz Akram
feceff7723 mem: Support for separate tRCD and tCL for reads/writes
HBM2 has asynchronous read/write timings (tRCD, tCL). This change
updates dram interface in gem5 to allow using separate values of
tRCD and tCL for reads and writes.

Change-Id: I56bfa9519cedad89cc2d4c163efc7126f609f15a
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/59733
Reviewed-by: Wendy Elsasser <welsasser@rambus.com>
Maintainer: Jason Lowe-Power <power.jg@gmail.com>
Reviewed-by: Jason Lowe-Power <power.jg@gmail.com>
Tested-by: kokoro <noreply+kokoro@google.com>
2022-06-06 18:31:06 +00:00
Ayaz Akram
60317f99fe mem: Add an HBM memory controller
This change adds an hbm memory controller in gem5,
which is capable of controlling two hbm memory interfaces
(two pseudo channels). HBMCtrl inherits from MemCtrl
and tries to reuse most of the MemCtrl functions for two
different dram interfaces. Morever, a notion of pseudo
channel is added in the memory interface itself, to make
sure that the scheduling decisions in any interface are
based on the pkts for that pseudo channel only. Also, the
command bandwidth checks are divided into row and column
commands, which are shared by both pseudo channels.

Change-Id: Ie2ee8183d0f7f744aff2ed05cabc75fec3ea2171
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/59732
Reviewed-by: Jason Lowe-Power <power.jg@gmail.com>
Maintainer: Jason Lowe-Power <power.jg@gmail.com>
Reviewed-by: Wendy Elsasser <welsasser@rambus.com>
Tested-by: kokoro <noreply+kokoro@google.com>
2022-06-06 18:31:06 +00:00
Maryam Babaie
b0fd05dd3d mem: Split memory controller into base MemCtrl and HeteroMemCtrl
This change splits the default gem5 memory controller into two
memory controllers: MemCtrl (base memory controller which can be
used with only a single memory interface dram/nvm), and
HeteroMemCtrl (heterogeneous memory controller which inherits from
MemCtrl and requires a dram and an nvm memory interface).
New arguments are added to many of the base class (MemCtrl) functions
(for example memory inteface to use that function for) which helps
in easier use of these in the inherited class (HeteroMemCtrl).

Change-Id: Ifa4e9f9f1560c47063d1a8159a8c94add2e670bb
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/59731
Tested-by: kokoro <noreply+kokoro@google.com>
Maintainer: Bobby Bruce <bbruce@ucdavis.edu>
Maintainer: Jason Lowe-Power <power.jg@gmail.com>
Reviewed-by: Bobby Bruce <bbruce@ucdavis.edu>
2022-06-06 18:31:06 +00:00
Maryam Babaie
c7c11c5661 mem: splitting dram and nvm interfaces into separate files
This change primarily splits the dram and nvm interfaces
into separate files. And also updates the interfaces so that
they can be handled in a more general way by the controller.
For example, both interfaces now override a virtual isBusy()
function defined in the mem_interface.

Change-Id: Id98bf0be3836a4b6245d5dea1b8fad0a60ce299a
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/59730
Reviewed-by: Jason Lowe-Power <power.jg@gmail.com>
Tested-by: kokoro <noreply+kokoro@google.com>
Maintainer: Jason Lowe-Power <power.jg@gmail.com>
Maintainer: Bobby Bruce <bbruce@ucdavis.edu>
Reviewed-by: Bobby Bruce <bbruce@ucdavis.edu>
2022-06-06 18:31:06 +00:00
Kyle Roarty
f876e60bc2 mem-ruby: Fix deadlock in GPU VIPER TCC
A deadlock occured where we got a RdBlk while in W,
which put us in WI while we wait for a writeback to complete.

This would cause the request to be stalled while the writeback
was occuring, but when the writeback completed (WBAck), we never
woke up the requests and thus never completed the RdBlk.

This commit adds a wakeup when we receive a WBAck while in WI.

Change-Id: I01edf1d7a47757b4f680baf9f33a1a6aa37e7e25
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/59352
Reviewed-by: Matt Sinclair <mattdsinclair@gmail.com>
Maintainer: Matt Sinclair <mattdsinclair@gmail.com>
Reviewed-by: Matthew Poremba <matthew.poremba@amd.com>
Tested-by: kokoro <noreply+kokoro@google.com>
2022-06-06 18:28:52 +00:00
Jason Lowe-Power
8e150924cb systemc: Add SimObject::regStats to systemc kernel
Without this call, not all stats are registered correctly.

Change-Id: I81ff5305fdb8491c717c1ac2d41434d101c6ed3b
Signed-off-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/60252
Reviewed-by: Bobby Bruce <bbruce@ucdavis.edu>
Reviewed-by: Matthias Jung <jungma@eit.uni-kl.de>
Tested-by: kokoro <noreply+kokoro@google.com>
Maintainer: Bobby Bruce <bbruce@ucdavis.edu>
2022-06-06 18:18:10 +00:00
Hoa Nguyen
373cc39a92 arch-arm: Improve error message when KVM failed to be initialized
Change-Id: If7f87cbd6c4e01134b17875e7c69f6147a5ed1f6
Signed-off-by: Hoa Nguyen <hoanguyen@ucdavis.edu>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/60312
Maintainer: Jason Lowe-Power <power.jg@gmail.com>
Maintainer: Bobby Bruce <bbruce@ucdavis.edu>
Reviewed-by: Jason Lowe-Power <power.jg@gmail.com>
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Bobby Bruce <bbruce@ucdavis.edu>
2022-06-06 18:17:37 +00:00
Hoa Nguyen
4524c1e330 mem-ruby: Replace the deprecated Stats namespace
Using the old namespace generates quite a few warnings during
compilation time.

Change-Id: Ibbb8f54f0bee974443dc5dfcc30e95100b8c24d6
Signed-off-by: Hoa Nguyen <hoanguyen@ucdavis.edu>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/60289
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Maintainer: Bobby Bruce <bbruce@ucdavis.edu>
Reviewed-by: Jason Lowe-Power <power.jg@gmail.com>
2022-06-06 18:17:22 +00:00
Bobby R. Bruce
8ad21f7039 tests: Fix downloader check
This test was failing due to references to a "downloader_dir" variable.
It should be "downloader_directory".

This is responsible for the Weekly test failing:
https://jenkins.gem5.org/job/weekly/55

Change-Id: Ia898726b75be1bfc2b6f49383be750a250c24af0
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/60349
Maintainer: Bobby Bruce <bbruce@ucdavis.edu>
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Jason Lowe-Power <power.jg@gmail.com>
2022-06-06 16:41:19 +00:00
Gabe Black
b920772d78 cpu: Treat the InvalidRegClass like the zero register.
This is a transitional step towards the InvalidRegClass taking over for
the zero register.

Change-Id: I423e1f6b5138d8bb41493f9febb3b28f333f9f00
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/49744
Maintainer: Gabe Black <gabe.black@gmail.com>
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>
2022-06-06 09:56:17 +00:00
Gabe Black
397e66d8b6 gpu-compute: Stop passing in a default value to resize().
A default constructed element of the container is the default value to
the second resize() parameter. Having that parameter explicitly causes a
warning/error in newer versions of gcc, and is unnecessary regardless.

Change-Id: I6aee2d23f0f4382b00caf552c8e38940614c5f9a
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/60311
Reviewed-by: Jason Lowe-Power <power.jg@gmail.com>
Tested-by: kokoro <noreply+kokoro@google.com>
Maintainer: Gabe Black <gabe.black@gmail.com>
Reviewed-by: Yu-hsin Wang <yuhsingw@google.com>
2022-06-03 10:48:31 +00:00
Daecheol You
9bfffe0f34 mem-ruby: modify the TBE data state for ReadOnce_HitUpstream
When ReadOnce request hits upstream, set dataToBeInvalid to true
for R* states so that the line from the upstream is successfully dropped
at the end by Finalize_UpdateCacheFromTBE.
For UD_RU and UC_RU state, set dataValid to true to prevent it changing
to RU state when it doesn't get the snoop data response.

Change-Id: Ie83c511e8d158e18abc5c9c16bc6040ce73587bf
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/58411
Reviewed-by: Jason Lowe-Power <power.jg@gmail.com>
Reviewed-by: Tiago Muck <tiago.muck@arm.com>
Maintainer: Jason Lowe-Power <power.jg@gmail.com>
Tested-by: kokoro <noreply+kokoro@google.com>
2022-06-03 09:31:21 +00:00
Gabe Black
cad8cf70ee proto: Add a missing std:: in protoio.cc.
Also include string which that file uses.

Change-Id: I79cd9c88652abdd1d16b3368dd37268509f4d3f0
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/60310
Maintainer: Gabe Black <gabe.black@gmail.com>
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Jason Lowe-Power <power.jg@gmail.com>
2022-06-03 07:23:27 +00:00
Gabe Black
a2062c0e00 sim: Fix erasure ordering in the futex map.
Erase an element after one of its components are used to erase an
element of another map. This is an error and causes build breakage in
newer versions of gcc.

Change-Id: I83a00410cbf2ae5fc23b12080cd374965df1a5ac
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/60309
Maintainer: Gabe Black <gabe.black@gmail.com>
Reviewed-by: Jason Lowe-Power <power.jg@gmail.com>
Tested-by: kokoro <noreply+kokoro@google.com>
2022-06-03 07:23:18 +00:00
Bobby R. Bruce
6b92e8ddde tests,arch-riscv: Add rv64uzfh-ps tests to asmtests
These were added to gem5-resources via these commits:
https://gem5-review.googlesource.com/c/public/gem5-resources/+/60249
https://gem5-review.googlesource.com/c/public/gem5-resources/+/60149

Change-Id: I3b6d75ab09960c9aa2e211288eaaf52d43d00368
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/60250
Reviewed-by: Jason Lowe-Power <power.jg@gmail.com>
Tested-by: kokoro <noreply+kokoro@google.com>
Maintainer: Jason Lowe-Power <power.jg@gmail.com>
2022-06-02 05:07:11 +00:00
Bobby R. Bruce
0770c80fb9 tests: Wipe 'build/ARM' dir before running SystemC tests
It if the ARM code is changed, the building of the library for the
systemc tests can sometimes fail. This appears to have happened in
recent Nightly test failures: https://jenkins.gem5.org/job/nightly/237.

It's safer to just wipe the 'build/ARM' directory before running this
test.

Change-Id: I203c4e74c01215128b85bf69176921f8ecef4988
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/60096
Reviewed-by: Bobby Bruce <bbruce@ucdavis.edu>
Reviewed-by: Jason Lowe-Power <power.jg@gmail.com>
Tested-by: kokoro <noreply+kokoro@google.com>
Maintainer: Jason Lowe-Power <power.jg@gmail.com>
Maintainer: Bobby Bruce <bbruce@ucdavis.edu>
2022-06-02 05:06:27 +00:00
Boris Shingarov
cb3c607f4b misc: Clarify commit message guidelines
This change in wording aims towards a more welcoming first review
atmosphere for new contributors. I was recently reading through a
chain of very-high-quality commits from a first-time contributor,
and the only problem was the conjugation of the commit message.
This is a totally minor issue but when I am scanning through a list
of a thousand commit messages in imperative mood and there is one
standing out in past indicative, it throws off my concentration.
Now I am left with a dilemma on my hands: I don't want the risk of
mistaken impression of undue nitpicking over undocumented style
preference, in a good commit from a new contributor. The present
change borrows additional explanatory language from Eclipse's Commit
Guidelines, to avoid this kind of tensions in the future.

Change-Id: If6aa8341871304ee7ff88a014048e4104aa9dcb5
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/60129
Maintainer: Jason Lowe-Power <power.jg@gmail.com>
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Jason Lowe-Power <power.jg@gmail.com>
Reviewed-by: Bobby Bruce <bbruce@ucdavis.edu>
2022-06-01 23:51:03 +00:00
Kaustav Goswami
c6299cbe8e stdlib: Removed SECURITY from the ArmBoard Script
The ARM Board does not support SECURITY extension at the moment.
This change removes the extension from the config script so that
the board functions properly.

Change-Id: I12a5bdf48803e86739967830204a9eef6057bd36
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/60209
Reviewed-by: Bobby Bruce <bbruce@ucdavis.edu>
Maintainer: Bobby Bruce <bbruce@ucdavis.edu>
Reviewed-by: Jason Lowe-Power <power.jg@gmail.com>
Tested-by: kokoro <noreply+kokoro@google.com>
2022-06-01 21:59:35 +00:00
Hoa Nguyen
bf71a17982 arch-arm: Add several 64-bit syscalls name to se_workload.cc
The names are gathered from [1].

This change also makes syscall 293 (rseq) does nothing
instead of raising an error.

[1] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/include/uapi/asm-generic/unistd.h?h=v5.15.44.

Change-Id: Ie0a7221db1cc308316fc0a500c454a23bf6029fd
Signed-off-by: Hoa Nguyen <hoanguyen@ucdavis.edu>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/60229
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Maintainer: Giacomo Travaglini <giacomo.travaglini@arm.com>
Maintainer: Jason Lowe-Power <power.jg@gmail.com>
Reviewed-by: Jason Lowe-Power <power.jg@gmail.com>
2022-06-01 18:31:14 +00:00
Hoa Nguyen
96870d4713 arch-riscv: Fix compilation error due to getdents* syscalls
In src/sim/syscall_emul.*, getdents and getdents64 are guarded
by #ifdefs. Similar #ifdefs should be in se_workload.cc for each
arch.

Change-Id: Ie636a739235711c3e6d8256fd7929b7d8b4ec953
Signed-off-by: Hoa Nguyen <hoanguyen@ucdavis.edu>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/60189
Reviewed-by: Jason Lowe-Power <power.jg@gmail.com>
Maintainer: Jason Lowe-Power <power.jg@gmail.com>
Tested-by: kokoro <noreply+kokoro@google.com>
2022-06-01 18:31:14 +00:00
Bobby R. Bruce
424b946d16 stdlib: Fix LupvBoard to inherit from AbstractSystemBoard
In this patch:
https://gem5-review.googlesource.com/c/public/gem5/+/58909, the
AbstractBoard was refactored. While all otherboards were updated
correctly, the LupvBoard was not. This caused the nightly tests to
fail: https://jenkins.gem5.org/job/nightly/240

This patch corrects this issue.

Change-Id: Icac39d48358daf4acb2f7077f5d3e8871320812e
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/60095
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Jason Lowe-Power <power.jg@gmail.com>
Maintainer: Bobby Bruce <bbruce@ucdavis.edu>
2022-06-01 17:41:36 +00:00
Bobby R. Bruce
d7f5b70576 tests: Replace multi-isa test GCN3 compilation with VEGA
As of this commit,
https://gem5-review.googlesource.com/c/public/gem5/+/59012, all GCN3
tests were replaced with VEGA. However, this commit,
https://gem5-review.googlesource.com/c/public/gem5/+/57510, was added
and used GCN3_X86 instead of Vega.

It is likely this is the root cause of recent Kokoro timeouts as
compiling both GCN3_X86 and VEGA_X86 is costly. This patch fixes this.

Change-Id: Iee2a08189a73283877f5d599191e9d1b105322ca
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/60169
Maintainer: Bobby Bruce <bbruce@ucdavis.edu>
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Jason Lowe-Power <power.jg@gmail.com>
2022-06-01 15:50:41 +00:00
Tiago Mück
e4274cabd9 mem-ruby: fix Evict request for CHI excl. caches
Assume core C1 with private L1/L2 and a shared exclusive L3.
C1 has a line in SC state, while the state in the L3 is
RUSC (L3 has exclusive accesses and upstream requester has line in SC).

When C1 evicts the line (Evict request), the L3 has to issue a
WriteEvictFull to the home node, however the L3 doesn't have a copy
of the line.

This fix handling Evict requests when the line state is RUSC. When
the last sharer issues an Evict request, the responder may issue
SnpOnce the obtain a copy the line if needed.

JIRA: https://gem5.atlassian.net/browse/GEM5-1195

Change-Id: Ic8f4e10b38d95cd6d84f8d65b87b0c94fcf52eea
Signed-off-by: Tiago Mück <tiago.muck@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/59991
Reviewed-by: Jason Lowe-Power <power.jg@gmail.com>
Tested-by: kokoro <noreply+kokoro@google.com>
Maintainer: Jason Lowe-Power <power.jg@gmail.com>
2022-06-01 15:23:47 +00:00
Tiago Mück
612f242359 mem-ruby: fix CHI snoops clearing WU data
When just forwarding a WU request, the controller waits until the WU is
acked from downstream before sending the ack upstream. This
prevents snoops clearing valid WU data.

JIRA: https://gem5.atlassian.net/browse/GEM5-1195

This was more likely to happen with shared exclusive caches, e.g:
assume core C1 and C2 with private L1/L2 and a shared exclusive L3.
C1 has as dirty copy of the line while C2 issues a WriteUnique request
to that line. The line state is RU in the L3, so the L3 will just
forward the request to the HNF, so:
- C2 issues WU to L3 cache
- L3 acks the WU, allowing C2 to send the data, while concurrently
  forwarding the WU to the HNF.
- L3 receives data from C2
- HNF sends invalidating snoops upstream because line is RU
- The snoop hazards with the pending WU at the L3 and invalidates
  the data previously received. This causes an assertion to fail when
  we resume handling the WU.

Change-Id: I51e457e0bdb648c0fff3f702b7d2c95dcf431dc5
Signed-off-by: Tiago Mück <tiago.muck@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/59990
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Jason Lowe-Power <power.jg@gmail.com>
Maintainer: Jason Lowe-Power <power.jg@gmail.com>
2022-06-01 15:23:47 +00:00
Tiago Mück
1dfd319d98 mem-ruby: fix data state for partial WU
When receiving data from a WriteUniquePtl we were wrongfully clearing
the data valid flag.

JIRA: https://gem5.atlassian.net/browse/GEM5-1195

Change-Id: I5c17433f1cfb706e443a0169a9f0e99ff5c1fcc0
Signed-off-by: Tiago Mück <tiago.muck@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/59989
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Jason Lowe-Power <power.jg@gmail.com>
Maintainer: Jason Lowe-Power <power.jg@gmail.com>
2022-06-01 15:23:47 +00:00
Tiago Mück
dc33a16993 mem-ruby: fix functionalRead on pending CU
Normally we don't check the TBE data if there are outstanding response
messages for the transaction because that means the latest valid data is
either in another cache or within an inflight message.
However this is not the case when we have either a pending CleanUnique
or we are handling CleanUnique. So bypass the pending message check in
this case.

Change-Id: I5f31039ca2a01a6a68fee8e0f3cf02c7e437b43e
Signed-off-by: Tiago Mück <tiago.muck@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/57395
Reviewed-by: Daecheol You <daecheol.you@samsung.com>
Reviewed-by: Jason Lowe-Power <power.jg@gmail.com>
Maintainer: Jason Lowe-Power <power.jg@gmail.com>
Tested-by: kokoro <noreply+kokoro@google.com>
2022-06-01 15:23:47 +00:00
Tiago Mück
23888df8a9 mem-ruby: fix MaintainCoherence typo
Change-Id: Iee3319e1d470898c727747894287029e1b0ab102
Signed-off-by: Tiago Mück <tiago.muck@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/57394
Reviewed-by: Jason Lowe-Power <power.jg@gmail.com>
Tested-by: kokoro <noreply+kokoro@google.com>
Maintainer: Jason Lowe-Power <power.jg@gmail.com>
2022-06-01 15:23:47 +00:00
Tiago Mück
12641069de mem-ruby: reuse existing event on CleanUnique
Reuse the existing MaintainCoherence event to schedule
writebacks or cache fill after a CleanUnique.

JIRA: https://gem5.atlassian.net/browse/GEM5-1195

Change-Id: I127ebf78736b8312ccf2b18cf7c586eb5a77f373
Signed-off-by: Tiago Mück <tiago.muck@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/57393
Reviewed-by: Jason Lowe-Power <power.jg@gmail.com>
Reviewed-by: Bobby Bruce <bbruce@ucdavis.edu>
Maintainer: Jason Lowe-Power <power.jg@gmail.com>
Tested-by: kokoro <noreply+kokoro@google.com>
2022-06-01 15:23:47 +00:00
Tiago Mück
d1d6b4cb9e mem-ruby: fix inconsistent WBs for dirty data
Initiate_MaitainCoherence would not trigger a writeback if
tbe.dataMaybeDirtyUpstream is set due to the assumption that
the upstream cache would writeback any dirty data. However this
is not the case if we use this action finalize a CleanUnique, e.g.:

- L1-A has data in SC
- L1-B has data in SD
- L2 has data in RUSD (L2 is an exclusive cache)
- L1-A sends CleanUnique to L2
- L2 invalidates L1-B and receives dirty data.
- L2 acks the CleanUnique; L1-A is now UC
- L2 has the dirty data but drops it because dataMaybeDirtyUpstream
- L1-A doesn't modify the data and eventually evicts it with WriteEvict
- Data from WriteEvicts are dropped at the HNF and we lose the line

This patch removes the tbe.dataMaybeDirtyUpstream check.
Instead it only skips the WriteBack if an upstream cache is in
SD state, when it's guaranteed it will writeback the dirty data.

JIRA: https://gem5.atlassian.net/browse/GEM5-1195

Change-Id: I6722bc25068b0c44afcf261abc8824f1d80c09f9
Signed-off-by: Tiago Mück <tiago.muck@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/57392
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Daecheol You <daecheol.you@samsung.com>
Reviewed-by: Jason Lowe-Power <power.jg@gmail.com>
Maintainer: Jason Lowe-Power <power.jg@gmail.com>
2022-06-01 15:23:47 +00:00
Tiago Mück
183e8e2b61 mem-ruby: fix state updates on WriteCleanFull
- fix wrong variable check at UpdateDirState_FromReqDataResp
- even after a WriteClean, dataMaybeDirtyUpstream still applies if
  there is an exclusive owner upstream.

JIRA: https://gem5.atlassian.net/browse/GEM5-1195

Change-Id: If1fa3ee40e30226db3a66c34633316e751eb7c4d
Signed-off-by: Tiago Mück <tiago.muck@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/57391
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Jason Lowe-Power <power.jg@gmail.com>
Reviewed-by: Daecheol You <daecheol.you@samsung.com>
Maintainer: Jason Lowe-Power <power.jg@gmail.com>
2022-06-01 15:23:47 +00:00