Merge "miscL Merge stable branch (v22.0.0.1) into develop" into develop
This commit is contained in:
142
RELEASE-NOTES.md
142
RELEASE-NOTES.md
@@ -1,3 +1,145 @@
|
||||
# Version 22.0.0.1
|
||||
|
||||
**[HOTFIX]** Fixes relative import in "src/python/gem5/components/processors/simple_core.py".
|
||||
|
||||
The import `from python.gem5.utils.requires import requires` in v22.0.0.0 of gem5 is incorrect as it causes problems when executing gem5 binaries in certain directories (`python` isn't necessary included).
|
||||
To resolve this, this import has been changed to `from ...utils.requires imports requires`.
|
||||
This should work in all supported use-cases.
|
||||
|
||||
# Version 22.0.0.0
|
||||
|
||||
gem5 version 22.0 has been slightly delayed, but we a have a very strong release!
|
||||
This release has 660 changes from 48 unique contributors.
|
||||
While there are not too many big ticket features, the community has done a lot to improve the stablity and add bugfixes to gem5 over this release.
|
||||
That said, we have a few cool new features like full system GPU support, a huge number of Arm improvements, and an improved HBM model.
|
||||
|
||||
See below for more details!
|
||||
|
||||
## New features
|
||||
|
||||
- [Arm now models DVM messages for TLBIs and DSBs accurately](https://gem5.atlassian.net/browse/GEM5-1097). This is implemented in the CHI protocol.
|
||||
- EL2/EL3 support on by default in ArmSystem
|
||||
- HBM controller which supports pseudo channels
|
||||
- [Improved Ruby's SimpleNetwork routing](https://gem5.atlassian.net/browse/GEM5-920)
|
||||
- Added x86 bare metal workload and better real mode support
|
||||
- [Added round-robin arbitration when using multiple prefetchers](https://gem5.atlassian.net/browse/GEM5-1169)
|
||||
- [KVM Emulation added for ARM GIGv3](https://gem5.atlassian.net/browse/GEM5-1138)
|
||||
- Many improvements to the CHI protocol
|
||||
|
||||
## Many RISC-V instructions added
|
||||
|
||||
The following RISCV instructions have been added to gem5's RISC-V ISA:
|
||||
|
||||
* Zba instructions: add.uw, sh1add, sh1add.uw, sh2add, sh2add.uw, sh3add, sh3add.uw, slli.uw
|
||||
* Zbb instructions: andn, orn, xnor, clz, clzw, ctz, ctzw, cpop, cpopw, max, maxu, min, minu, sext.b, sext.h, zext.h, rol, rolw, ror, rori, roriw, rorw, orc.b, rev8
|
||||
* Zbc instructions: clmul, clmulh, clmulr
|
||||
* Zbs instructions: bclr, bclri, bext, bexti, binv, binvi, bset, bseti
|
||||
* Zfh instructions: flh, fsh, fmadd.h, fmsub.h, fnmsub.h, fnmadd.h, fadd.h, fsub.h, fmul.h, fdiv.h, fsqrt.h, fsgnj.h, fsgnjn.h, fsgnjx.h, fmin.h, fmax.h, fcvt.s.h, fcvt.h.s, fcvt.d.h, fcvt.h.d, fcvt.w.h, fcvt.h.w, fcvt.wu.h, fcvt.h.wu
|
||||
|
||||
### Improvements to the stdlib automatic resource downloader
|
||||
|
||||
The gem5 standard library's downloader has been re-engineered to more efficiently obtain the `resources.json` file.
|
||||
It is now cached instead of retrieved on each resource retrieval.
|
||||
|
||||
The `resources.json` directory has been moved to a more permament URL at <http://resources.gem5.org/resources.json>.
|
||||
|
||||
Tests have also been added to ensure the resources module continues to function correctly.
|
||||
|
||||
### gem5 in SystemC support revamped
|
||||
|
||||
The gem5 in SystemC has been revamped to accomodate new research needs.
|
||||
These changes include stability improvements and bugs fixes.
|
||||
The gem5 testing suite has also been expanded to include gem5 in SystemC tests.
|
||||
|
||||
### Improved GPU support
|
||||
|
||||
Users may now simulate an AMD GPU device in full system mode using the ROCm 4.2 compute stack.
|
||||
Until v21.2, gem5 only supported GPU simulation in Syscall-Emulation mode with ROCm 4.0.
|
||||
See [`src/gpu-fs/README.md`](https://gem5.googlesource.com/public/gem5-resources/+/refs/heads/stable/src/gpu-fs/) in gem5-resources and example scripts in [`configs/example/gpufs/`](https://gem5.googlesource.com/public/gem5/+/refs/tags/v22.0.0.0/configs/example/gpufs/) for example scripts which run GPU full system simulations.
|
||||
|
||||
A [GPU Ruby random tester has been added](https://gem5-review.googlesource.com/c/public/gem5/+/59272) to help validate the correctness of the CPU and GPU Ruby coherence protocols as part of every kokoro check-in.
|
||||
This helps validate the correctness of the protocols before new changes are checked in.
|
||||
Currently the tester focuses on the protocols used with the GPU, but the ideas are extensible to other protocols.
|
||||
The work is based on "Autonomous Data-Race-Free GPU Testing", IISWC 2019, Tuan Ta, Xianwei Zhang, Anthony Gutierrez, and Bradford M. Beckmann.
|
||||
|
||||
### An Arm board has been added to the gem5 Standard Library
|
||||
|
||||
Via [this change](https://gem5-review.googlesource.com/c/public/gem5/+/58910), an ARM Board, `ArmBoard`, has been added to the gem5 standard library.
|
||||
This allows for an ARM system to be run using the gem5 stdlib components.
|
||||
|
||||
An example gem5 configuration script using this board can be found in `configs/example/gem5_library/arm-ubuntu-boot-exit.py`.
|
||||
|
||||
### `createAddrRanges` now supports NUMA configurations
|
||||
|
||||
When the system is configured for NUMA, it has multiple memory ranges, and each memory range is mapped to a corresponding NUMA node. For this, the change enables `createAddrRanges` to map address ranges to only a given HNFs.
|
||||
|
||||
Jira ticker here: https://gem5.atlassian.net/browse/GEM5-1187.
|
||||
|
||||
## API (user-facing) changes
|
||||
|
||||
### CPU model types are no longer simply the model name, but they are specialized for each ISA
|
||||
|
||||
For instance, the `O3CPU` is now the `X86O3CPU` and `ArmO3CPU`, etc.
|
||||
This requires a number of changes if you have your own CPU models.
|
||||
See https://gem5-review.googlesource.com/c/public/gem5/+/52490 for details.
|
||||
|
||||
Additionally, this requires changes in any configuration script which inherits from the old CPU types.
|
||||
|
||||
In many cases, if there is only a single ISA compiled the old name will still work.
|
||||
However, this is not 100% true.
|
||||
|
||||
Finally, `CPU_MODELS` is no longer a parameter in `build_opts/`.
|
||||
Now, if you want to compile a CPU model for a particular ISA you will have to add a new file for the CPU model in the `arch/` directory.
|
||||
|
||||
### Many changes in the CPU and ISA APIs
|
||||
|
||||
If you have any specialized CPU models or any ISAs which are not in the mainline, expect many changes when rebasing on this release.
|
||||
|
||||
- No longer use read/setIntReg (e.g., see https://gem5-review.googlesource.com/c/public/gem5/+/49766)
|
||||
- InvalidRegClass has changed (e.g., see https://gem5-review.googlesource.com/c/public/gem5/+/49745)
|
||||
- All of the register classes have changed (e.g., see https://gem5-review.googlesource.com/c/public/gem5/+/49764/)
|
||||
- `initiateSpecialMemCmd` renamed to `initiateMemMgmtCmd` to generalize to other command beyond HTM (e.g., DVM/TLBI)
|
||||
- `OperandDesc` class added (e.g., see https://gem5-review.googlesource.com/c/public/gem5/+/49731)
|
||||
- Many cases of `TheISA` have been removed
|
||||
|
||||
## Bug Fixes
|
||||
|
||||
- [Fixed RISC-V call/ret instruction decoding](https://gem5-review.googlesource.com/c/public/gem5/+/58209). The fix adds IsReturn` and `IsCall` flags for RISC-V jump instructions by defining a new `JumpConstructor` in "standard.isa". Jira Ticket here: https://gem5.atlassian.net/browse/GEM5-1139.
|
||||
- [Fixed x86 Read-Modify-Write behavior in multiple timing cores with classic caches](https://gem5-review.googlesource.com/c/public/gem5/+/55744). Jira Ticket here: https://gem5.atlassian.net/browse/GEM5-1105.
|
||||
- [The circular buffer for the O3 LSQ has been fixed](https://gem5-review.googlesource.com/c/public/gem5/+/58649). This issue affected running the O3 CPU with large workloaders. Jira Ticket here: https://gem5.atlassian.net/browse/GEM5-1203.
|
||||
- [Removed "memory-leak"-like error in RISC-V lr/sc implementation](https://gem5-review.googlesource.com/c/public/gem5/+/55663). Jira issue here: https://gem5.atlassian.net/browse/GEM5-1170.
|
||||
- [Resolved issues with Ruby's memtest](https://gem5-review.googlesource.com/c/public/gem5/+/56811). In gem5 v21.2, If the size of the address range was smaller than the maximum number of outstandnig requests allowed downstream, the tester would get stuck trying to find a unique address. This has been resolved.
|
||||
|
||||
## Build-related changes
|
||||
|
||||
- Variable in `env` in the SConscript files now requires you to use `env['CONF']` to access them. Anywhere that `env['<VARIABLE>']` appeared should noe be `env['CONF']['<VARIABLE>']`
|
||||
- Internal build files are now in a per-target `gem5.build` directory
|
||||
- All build variable are per-target and there are no longer any shared variables.
|
||||
|
||||
## Other changes
|
||||
|
||||
- New bootloader is required for Arm VExpress_GEM5_Foundation platform. See https://gem5.atlassian.net/browse/GEM5-1222 for details.
|
||||
- The MemCtrl interface has been updated to use more inheritance to make extending it to other memory types (e.g., HBM pseudo channels) easier.
|
||||
|
||||
# Version 21.2.1.1
|
||||
|
||||
**[HOTFIX]** In order to ensure v21 of gem5 remains compatible with future changes, the gem5 stdlib downloader has been updated to obtain the resources.json file from <https://resources.gem5.org/resources.json>.
|
||||
As this domain is under the gem5 project control, unlike the previous googlesource URL, we can ensure longer-term stability.
|
||||
The fix also ensures the downloader can parse plain-text JSON and base64 encoding of the resources.json file.
|
||||
|
||||
# Version 21.2.1.0
|
||||
|
||||
Version 21.2.1 is a minor gem5 release consisting of bug fixes. The 21.2.1 release:
|
||||
|
||||
* Fixes a bug in which [a RCV instruction is wrongly regarded as a branch](https://gem5.atlassian.net/browse/GEM5-1137).
|
||||
* Removes outdated and incomplete standard library documentation.
|
||||
Users wishing to learn more about the gem5 standard library should consult materials [on the gem5 website](https://www.gem5.org/documentation/gem5-stdlib/overview).
|
||||
* Adds a VirtIO entropy device (VirtIORng) to RISC-V.
|
||||
Without this, [RISCV Disk images can take considerable time to boot and occasionally do so in error](https://gem5.atlassian.net/browse/GEM5-1151).
|
||||
* Removes the 'typing.final' decorator from the standard library.
|
||||
'typing.final' was introduced in Python 3.8, but v21.2 of gem5 supports Python 3.6.
|
||||
* Fixes the broken NPB stdlib example test.
|
||||
|
||||
# Version 21.2.0.0
|
||||
|
||||
## API (user-facing) changes
|
||||
|
||||
@@ -418,13 +418,6 @@ for variant_path in variant_paths:
|
||||
conf.CheckLinkFlag(
|
||||
'-Wl,--thread-count=%d' % GetOption('num_jobs'))
|
||||
|
||||
# Treat warnings as errors but white list some warnings that we
|
||||
# want to allow (e.g., deprecation warnings).
|
||||
env.Append(CCFLAGS=['-Werror',
|
||||
'-Wno-error=deprecated-declarations',
|
||||
'-Wno-error=deprecated',
|
||||
])
|
||||
|
||||
else:
|
||||
error('\n'.join((
|
||||
"Don't know what compiler options to use for your compiler.",
|
||||
|
||||
@@ -213,7 +213,7 @@ def define_defaults(defaults):
|
||||
os.pardir,
|
||||
os.pardir))
|
||||
defaults.result_path = os.path.join(os.getcwd(), 'testing-results')
|
||||
defaults.resource_url = 'http://dist.gem5.org/dist/develop'
|
||||
defaults.resource_url = 'http://dist.gem5.org/dist/v22-0'
|
||||
defaults.resource_path = os.path.abspath(os.path.join(defaults.base_dir,
|
||||
'tests',
|
||||
'gem5',
|
||||
|
||||
@@ -31,7 +31,7 @@ PROJECT_NAME = gem5
|
||||
# This could be handy for archiving the generated documentation or
|
||||
# if some version control system is used.
|
||||
|
||||
PROJECT_NUMBER = DEVELOP-FOR-V22-0
|
||||
PROJECT_NUMBER = v22.0.0.1
|
||||
|
||||
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
|
||||
# base path where the generated documentation will be put.
|
||||
|
||||
@@ -32,6 +32,6 @@ namespace gem5
|
||||
/**
|
||||
* @ingroup api_base_utils
|
||||
*/
|
||||
const char *gem5Version = "[DEVELOP-FOR-v22.0]";
|
||||
const char *gem5Version = "22.0.0.1";
|
||||
|
||||
} // namespace gem5
|
||||
|
||||
48
src/dev/virtio/VirtIORng 2.py
Normal file
48
src/dev/virtio/VirtIORng 2.py
Normal file
@@ -0,0 +1,48 @@
|
||||
# -*- mode:python -*-
|
||||
|
||||
# Copyright (c) 2022 Institute of Computing Technology, Chinese
|
||||
# Academy of Sciences
|
||||
# All rights reserved.
|
||||
#
|
||||
# The license below extends only to copyright in the software and shall
|
||||
# not be construed as granting a license to any other intellectual
|
||||
# property including but not limited to intellectual property relating
|
||||
# to a hardware implementation of the functionality of the software
|
||||
# licensed hereunder. You may use the software subject to the license
|
||||
# terms below provided that you ensure that this notice is replicated
|
||||
# unmodified and in its entirety in all distributions of the software,
|
||||
# modified or unmodified, in source code or in binary form.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions are
|
||||
# met: redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions and the following disclaimer;
|
||||
# redistributions in binary form must reproduce the above copyright
|
||||
# notice, this list of conditions and the following disclaimer in the
|
||||
# documentation and/or other materials provided with the distribution;
|
||||
# neither the name of the copyright holders nor the names of its
|
||||
# contributors may be used to endorse or promote products derived from
|
||||
# this software without specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
from m5.params import *
|
||||
from m5.proxy import *
|
||||
from m5.objects.VirtIO import VirtIODeviceBase
|
||||
|
||||
class VirtIORng(VirtIODeviceBase):
|
||||
type = 'VirtIORng'
|
||||
cxx_header = 'dev/virtio/rng.hh'
|
||||
cxx_class = 'gem5::VirtIORng'
|
||||
|
||||
qSize = Param.Unsigned(16, "Request queue size")
|
||||
94
src/dev/virtio/rng 2.cc
Normal file
94
src/dev/virtio/rng 2.cc
Normal file
@@ -0,0 +1,94 @@
|
||||
/*
|
||||
* Copyright (c) 2022 Institute of Computing Technology, Chinese Academy
|
||||
* of Sciences
|
||||
* All rights reserved
|
||||
*
|
||||
* The license below extends only to copyright in the software and shall
|
||||
* not be construed as granting a license to any other intellectual
|
||||
* property including but not limited to intellectual property relating
|
||||
* to a hardware implementation of the functionality of the software
|
||||
* licensed hereunder. You may use the software subject to the license
|
||||
* terms below provided that you ensure that this notice is replicated
|
||||
* unmodified and in its entirety in all distributions of the software,
|
||||
* modified or unmodified, in source code or in binary form.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are
|
||||
* met: redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer;
|
||||
* redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution;
|
||||
* neither the name of the copyright holders nor the names of its
|
||||
* contributors may be used to endorse or promote products derived from
|
||||
* this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include "dev/virtio/rng.hh"
|
||||
|
||||
#include "base/random.hh"
|
||||
#include "debug/VIORng.hh"
|
||||
#include "params/VirtIORng.hh"
|
||||
#include "sim/system.hh"
|
||||
|
||||
namespace gem5
|
||||
{
|
||||
|
||||
VirtIORng::VirtIORng(const Params ¶ms)
|
||||
: VirtIODeviceBase(params, ID_RNG, 0, 0),
|
||||
qReq(params.system->physProxy, byteOrder, params.qSize, *this)
|
||||
{
|
||||
registerQueue(qReq);
|
||||
}
|
||||
|
||||
VirtIORng::~VirtIORng()
|
||||
{
|
||||
}
|
||||
|
||||
VirtIORng::RngQueue::RngQueue(PortProxy &proxy, ByteOrder bo, uint16_t size,
|
||||
VirtIORng &_parent)
|
||||
: VirtQueue(proxy, bo, size), parent(_parent)
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
VirtIORng::readConfig(PacketPtr pkt, Addr cfgOffset)
|
||||
{
|
||||
// There are no configuration for RNG device
|
||||
pkt->makeResponse();
|
||||
}
|
||||
|
||||
void
|
||||
VirtIORng::RngQueue::trySend()
|
||||
{
|
||||
DPRINTF(VIORng, "try send\n");
|
||||
|
||||
VirtDescriptor *d;
|
||||
while ((d = consumeDescriptor())) {
|
||||
DPRINTF(VIORng, "Got descriptor (len: %i)\n", d->size());
|
||||
size_t len = 0;
|
||||
while (len < d->size()) {
|
||||
uint8_t byte = gem5::random_mt.random<uint8_t>();
|
||||
d->chainWrite(len, &byte, sizeof(uint8_t));
|
||||
++len;
|
||||
}
|
||||
|
||||
// Tell the guest that we are done with this descriptor.
|
||||
produceDescriptor(d, len);
|
||||
parent.kick();
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace gem5
|
||||
97
src/dev/virtio/rng 2.hh
Normal file
97
src/dev/virtio/rng 2.hh
Normal file
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
* Copyright (c) 2022 Institute of Computing Technology, Chinese Academy
|
||||
* of Sciences
|
||||
* All rights reserved
|
||||
*
|
||||
* The license below extends only to copyright in the software and shall
|
||||
* not be construed as granting a license to any other intellectual
|
||||
* property including but not limited to intellectual property relating
|
||||
* to a hardware implementation of the functionality of the software
|
||||
* licensed hereunder. You may use the software subject to the license
|
||||
* terms below provided that you ensure that this notice is replicated
|
||||
* unmodified and in its entirety in all distributions of the software,
|
||||
* modified or unmodified, in source code or in binary form.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are
|
||||
* met: redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer;
|
||||
* redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution;
|
||||
* neither the name of the copyright holders nor the names of its
|
||||
* contributors may be used to endorse or promote products derived from
|
||||
* this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef __DEV_VIRTIO_RNG_HH__
|
||||
#define __DEV_VIRTIO_RNG_HH__
|
||||
|
||||
#include "base/compiler.hh"
|
||||
#include "dev/virtio/base.hh"
|
||||
|
||||
namespace gem5
|
||||
{
|
||||
|
||||
struct VirtIORngParams;
|
||||
|
||||
/**
|
||||
* VirtIO Rng
|
||||
*
|
||||
* @see https://github.com/rustyrussell/virtio-spec
|
||||
* @see http://docs.oasis-open.org/virtio/virtio/v1.0/virtio-v1.0.html
|
||||
*/
|
||||
class VirtIORng : public VirtIODeviceBase
|
||||
{
|
||||
public:
|
||||
typedef VirtIORngParams Params;
|
||||
VirtIORng(const Params ¶ms);
|
||||
virtual ~VirtIORng();
|
||||
|
||||
void readConfig(PacketPtr pkt, Addr cfgOffset);
|
||||
|
||||
protected:
|
||||
/** VirtIO device ID */
|
||||
static const DeviceId ID_RNG = 0x04;
|
||||
|
||||
protected:
|
||||
/**
|
||||
* Virtqueue for data going from the host to the guest.
|
||||
*/
|
||||
class RngQueue
|
||||
: public VirtQueue
|
||||
{
|
||||
public:
|
||||
RngQueue(PortProxy &proxy, ByteOrder bo, uint16_t size,
|
||||
VirtIORng &_parent);
|
||||
virtual ~RngQueue() {}
|
||||
|
||||
void onNotify() { trySend(); }
|
||||
|
||||
/** Try to send data pending data from the terminal. */
|
||||
void trySend();
|
||||
|
||||
std::string name() const { return parent.name() + ".qRecv"; }
|
||||
|
||||
protected:
|
||||
VirtIORng &parent;
|
||||
};
|
||||
/** Receive queue for port 0 */
|
||||
RngQueue qReq;
|
||||
};
|
||||
|
||||
} // namespace gem5
|
||||
|
||||
#endif // __DEV_VIRTIO_RNG_HH__
|
||||
@@ -25,7 +25,7 @@
|
||||
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
from typing import Optional
|
||||
from python.gem5.utils.requires import requires
|
||||
from ...utils.requires import requires
|
||||
from ..processors.abstract_core import AbstractCore
|
||||
|
||||
from .cpu_types import CPUTypes
|
||||
|
||||
@@ -54,7 +54,7 @@ def _resources_json_version_required() -> str:
|
||||
"""
|
||||
Specifies the version of resources.json to obtain.
|
||||
"""
|
||||
return "develop"
|
||||
return "22.0"
|
||||
|
||||
def _get_resources_json_uri() -> str:
|
||||
return "https://resources.gem5.org/resources.json"
|
||||
|
||||
@@ -103,7 +103,7 @@ for compiler in ${images[@]}; do
|
||||
# targets for this test
|
||||
build_indices=(${build_permutation[@]:0:$builds_count})
|
||||
|
||||
repo_name="${base_url}/${compiler}:latest"
|
||||
repo_name="${base_url}/${compiler}:v22-0"
|
||||
|
||||
# Grab compiler image
|
||||
docker pull $repo_name >/dev/null
|
||||
|
||||
@@ -69,7 +69,7 @@ build_target () {
|
||||
# compilation: https://gem5.atlassian.net/browse/GEM5-753
|
||||
docker run -u $UID:$GID --volume "${gem5_root}":"${gem5_root}" -w \
|
||||
"${gem5_root}" --memory="${docker_mem_limit}" --rm \
|
||||
gcr.io/gem5-test/ubuntu-20.04_all-dependencies:latest \
|
||||
gcr.io/gem5-test/ubuntu-20.04_all-dependencies:v22-0 \
|
||||
bash -c "scons build/${isa}/gem5.opt -j${compile_threads} \
|
||||
|| (rm -rf build && scons build/${isa}/gem5.opt -j${compile_threads})"
|
||||
}
|
||||
@@ -79,12 +79,12 @@ unit_test () {
|
||||
|
||||
docker run -u $UID:$GID --volume "${gem5_root}":"${gem5_root}" -w \
|
||||
"${gem5_root}" --memory="${docker_mem_limit}" --rm \
|
||||
gcr.io/gem5-test/ubuntu-20.04_all-dependencies:latest \
|
||||
gcr.io/gem5-test/ubuntu-20.04_all-dependencies:v22-0 \
|
||||
scons build/NULL/unittests.${build} -j${compile_threads}
|
||||
}
|
||||
|
||||
# Ensure we have the latest docker images.
|
||||
docker pull gcr.io/gem5-test/ubuntu-20.04_all-dependencies:latest
|
||||
docker pull gcr.io/gem5-test/ubuntu-20.04_all-dependencies:v22-0
|
||||
|
||||
# Try to build the ISA targets.
|
||||
build_target NULL
|
||||
@@ -102,7 +102,7 @@ unit_test debug
|
||||
# Run the gem5 long tests.
|
||||
docker run -u $UID:$GID --volume "${gem5_root}":"${gem5_root}" -w \
|
||||
"${gem5_root}"/tests --memory="${docker_mem_limit}" --rm \
|
||||
gcr.io/gem5-test/ubuntu-20.04_all-dependencies:latest \
|
||||
gcr.io/gem5-test/ubuntu-20.04_all-dependencies:v22-0 \
|
||||
./main.py run --length long -j${compile_threads} -t${run_threads} -vv
|
||||
|
||||
# Unfortunately, due docker being unable run KVM, we do so separately.
|
||||
@@ -117,10 +117,10 @@ cd "${gem5_root}/tests"
|
||||
cd "${gem5_root}"
|
||||
|
||||
# For the GPU tests we compile and run the GPU ISA inside a gcn-gpu container.
|
||||
docker pull gcr.io/gem5-test/gcn-gpu:latest
|
||||
docker pull gcr.io/gem5-test/gcn-gpu:v22-0
|
||||
docker run --rm -u $UID:$GID --volume "${gem5_root}":"${gem5_root}" -w \
|
||||
"${gem5_root}" --memory="${docker_mem_limit}" \
|
||||
gcr.io/gem5-test/gcn-gpu:latest bash -c \
|
||||
gcr.io/gem5-test/gcn-gpu:v22-0 bash -c \
|
||||
"scons build/${gpu_isa}/gem5.opt -j${compile_threads} \
|
||||
|| (rm -rf build && scons build/${gpu_isa}/gem5.opt -j${compile_threads})"
|
||||
|
||||
@@ -134,7 +134,7 @@ mkdir -p tests/testing-results
|
||||
# basic GPU functionality is working.
|
||||
docker run --rm -u $UID:$GID --volume "${gem5_root}":"${gem5_root}" -w \
|
||||
"${gem5_root}" --memory="${docker_mem_limit}" \
|
||||
gcr.io/gem5-test/gcn-gpu:latest build/${gpu_isa}/gem5.opt \
|
||||
gcr.io/gem5-test/gcn-gpu:v22-0 build/${gpu_isa}/gem5.opt \
|
||||
configs/example/apu_se.py --reg-alloc-policy=dynamic -n3 -c square
|
||||
|
||||
# get HeteroSync
|
||||
@@ -146,7 +146,7 @@ wget -qN http://dist.gem5.org/dist/develop/test-progs/heterosync/gcn3/allSyncPri
|
||||
# atomics are tested.
|
||||
docker run --rm -u $UID:$GID --volume "${gem5_root}":"${gem5_root}" -w \
|
||||
"${gem5_root}" --memory="${docker_mem_limit}" \
|
||||
gcr.io/gem5-test/gcn-gpu:latest build/${gpu_isa}/gem5.opt \
|
||||
gcr.io/gem5-test/gcn-gpu:v22-0 build/${gpu_isa}/gem5.opt \
|
||||
configs/example/apu_se.py --reg-alloc-policy=dynamic -n3 -c \
|
||||
allSyncPrims-1kernel --options="sleepMutex 10 16 4"
|
||||
|
||||
@@ -157,7 +157,7 @@ docker run --rm -u $UID:$GID --volume "${gem5_root}":"${gem5_root}" -w \
|
||||
# atomics are tested.
|
||||
docker run --rm -u $UID:$GID --volume "${gem5_root}":"${gem5_root}" -w \
|
||||
"${gem5_root}" --memory="${docker_mem_limit}" \
|
||||
gcr.io/gem5-test/gcn-gpu:latest build/${gpu_isa}/gem5.opt \
|
||||
gcr.io/gem5-test/gcn-gpu:v22-0 build/${gpu_isa}/gem5.opt \
|
||||
configs/example/apu_se.py --reg-alloc-policy=dynamic -n3 -c \
|
||||
allSyncPrims-1kernel --options="lfTreeBarrUniq 10 16 4"
|
||||
|
||||
@@ -168,7 +168,7 @@ build_and_run_SST () {
|
||||
|
||||
docker run -u $UID:$GID --volume "${gem5_root}":"${gem5_root}" -w \
|
||||
"${gem5_root}" --rm --memory="${docker_mem_limit}" \
|
||||
gcr.io/gem5-test/sst-env:latest bash -c "\
|
||||
gcr.io/gem5-test/sst-env:v22-0 bash -c "\
|
||||
scons build/${isa}/libgem5_${variant}.so -j${compile_threads} --without-tcmalloc; \
|
||||
cd ext/sst; \
|
||||
make clean; make -j ${compile_threads}; \
|
||||
@@ -182,7 +182,7 @@ build_and_run_systemc () {
|
||||
rm -rf "${gem5_root}/build/ARM"
|
||||
docker run -u $UID:$GID --volume "${gem5_root}":"${gem5_root}" -w \
|
||||
"${gem5_root}" --memory="${docker_mem_limit}" --rm \
|
||||
gcr.io/gem5-test/ubuntu-20.04_all-dependencies:latest bash -c "\
|
||||
gcr.io/gem5-test/ubuntu-20.04_all-dependencies:v22-0 bash -c "\
|
||||
scons -j${compile_threads} build/ARM/gem5.opt; \
|
||||
scons --with-cxx-config --without-python --without-tcmalloc USE_SYSTEMC=0 \
|
||||
-j${compile_threads} build/ARM/libgem5_opt.so \
|
||||
@@ -190,7 +190,7 @@ scons --with-cxx-config --without-python --without-tcmalloc USE_SYSTEMC=0 \
|
||||
|
||||
docker run -u $UID:$GID --volume "${gem5_root}":"${gem5_root}" -w \
|
||||
"${gem5_root}" --memory="${docker_mem_limit}" --rm \
|
||||
gcr.io/gem5-test/systemc-env:latest bash -c "\
|
||||
gcr.io/gem5-test/systemc-env:v22-0 bash -c "\
|
||||
cd util/systemc/gem5_within_systemc; \
|
||||
make -j${compile_threads}; \
|
||||
../../../build/ARM/gem5.opt ../../../configs/example/se.py -c \
|
||||
|
||||
@@ -59,7 +59,7 @@ fi
|
||||
# Run the gem5 very-long tests.
|
||||
docker run -u $UID:$GID --volume "${gem5_root}":"${gem5_root}" -w \
|
||||
"${gem5_root}"/tests --memory="${docker_mem_limit}" --rm \
|
||||
gcr.io/gem5-test/ubuntu-20.04_all-dependencies:latest \
|
||||
gcr.io/gem5-test/ubuntu-20.04_all-dependencies:v22-0 \
|
||||
./main.py run --length very-long -j${threads} -t${threads} -vv
|
||||
|
||||
mkdir -p tests/testing-results
|
||||
@@ -68,7 +68,7 @@ mkdir -p tests/testing-results
|
||||
# before pulling gem5 resources, make sure it doesn't exist already
|
||||
docker run --rm --volume "${gem5_root}":"${gem5_root}" -w \
|
||||
"${gem5_root}" --memory="${docker_mem_limit}" \
|
||||
gcr.io/gem5-test/gcn-gpu:latest bash -c \
|
||||
gcr.io/gem5-test/gcn-gpu:v22-0 bash -c \
|
||||
"rm -rf ${gem5_root}/gem5-resources"
|
||||
# delete Pannotia datasets and output files in case a failed regression run left
|
||||
# them around
|
||||
@@ -100,12 +100,12 @@ git clone https://gem5.googlesource.com/public/gem5-resources \
|
||||
|
||||
cd "${gem5_root}/gem5-resources"
|
||||
git checkout develop
|
||||
#version_tag=$(git tag | grep "v21.2")
|
||||
#
|
||||
#if [[ ${version_tag} != "" ]]; then
|
||||
# git checkout "${version_tag}"
|
||||
#fi
|
||||
#
|
||||
version_tag=$(git tag | grep "v22.0")
|
||||
|
||||
if [[ ${version_tag} != "" ]]; then
|
||||
git checkout "${version_tag}"
|
||||
fi
|
||||
|
||||
cd "${gem5_root}"
|
||||
|
||||
# For the GPU tests we compile and run the GPU ISA inside a gcn-gpu container.
|
||||
@@ -113,7 +113,7 @@ cd "${gem5_root}"
|
||||
# avoid needing to set all of these, we instead build a docker for it, which
|
||||
# has all these variables pre-set in its Dockerfile
|
||||
# To avoid compiling gem5 multiple times, all GPU benchmarks will use this
|
||||
docker pull gcr.io/gem5-test/gcn-gpu:latest
|
||||
docker pull gcr.io/gem5-test/gcn-gpu:v22-0
|
||||
docker build -t hacc-test-weekly ${gem5_root}/gem5-resources/src/gpu/halo-finder
|
||||
|
||||
docker run --rm -u $UID:$GID --volume "${gem5_root}":"${gem5_root}" -w \
|
||||
@@ -240,7 +240,7 @@ docker run --rm -v ${PWD}:${PWD} \
|
||||
"export GEM5_PATH=${gem5_root} ; make gem5-fusion"
|
||||
|
||||
# # get input dataset for BC test
|
||||
wget http://dist.gem5.org/dist/develop/datasets/pannotia/bc/1k_128k.gr
|
||||
wget http://dist.gem5.org/dist/v22-0/datasets/pannotia/bc/1k_128k.gr
|
||||
# run BC
|
||||
docker run --rm -v ${gem5_root}:${gem5_root} -w ${gem5_root} -u $UID:$GID \
|
||||
--memory="${docker_mem_limit}" hacc-test-weekly \
|
||||
@@ -317,7 +317,7 @@ docker run --rm -v ${gem5_root}:${gem5_root} -w \
|
||||
"export GEM5_PATH=${gem5_root} ; make gem5-fusion"
|
||||
|
||||
# get PageRank input dataset
|
||||
wget http://dist.gem5.org/dist/develop/datasets/pannotia/pagerank/coAuthorsDBLP.graph
|
||||
wget http://dist.gem5.org/dist/v22-0/datasets/pannotia/pagerank/coAuthorsDBLP.graph
|
||||
# run PageRank (Default)
|
||||
docker run --rm -v ${gem5_root}:${gem5_root} -w ${gem5_root} -u $UID:$GID \
|
||||
--memory="${docker_mem_limit}" hacc-test-weekly \
|
||||
|
||||
@@ -69,7 +69,7 @@ RUN git clone -b rocm-4.0.0 \
|
||||
|
||||
WORKDIR /ROCclr
|
||||
# The patch allows us to avoid building blit kernels on-the-fly in gem5
|
||||
RUN wget -q -O - dist.gem5.org/dist/develop/rocm_patches/ROCclr.patch | git apply -v
|
||||
RUN wget -q -O - dist.gem5.org/dist/v22-0/rocm_patches/ROCclr.patch | git apply -v
|
||||
|
||||
WORKDIR /ROCclr/build
|
||||
RUN cmake -DOPENCL_DIR="/ROCm-OpenCL-Runtime" \
|
||||
|
||||
Reference in New Issue
Block a user