From bf986c2d18370078bd225eeb6f0b7e63cecbdc04 Mon Sep 17 00:00:00 2001 From: Cui Jin Date: Tue, 21 Dec 2021 23:15:03 +0800 Subject: [PATCH 01/27] arch-riscv: rvc instruction is mistaken as branch Fetch in O3CPU mistakes the normal non-branching compressed instructions, and regards it as a branch. This issue interrupts the consecutive instruction stream, thus affecting performance of cpu front-end. This fix sets the compressed for PCState during decoding. Jira Issue: https://gem5.atlassian.net/browse/GEM5-1137 Change-Id: I7607d563bba8a08869e104877fc3c11c94cbe904 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/54644 Reviewed-by: Jin Cui Reviewed-by: Ayaz Akram Maintainer: Jason Lowe-Power Tested-by: kokoro Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/56243 Reviewed-by: Jason Lowe-Power --- src/arch/riscv/decoder.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/arch/riscv/decoder.cc b/src/arch/riscv/decoder.cc index 4fbcc64f65..a02415fae0 100644 --- a/src/arch/riscv/decoder.cc +++ b/src/arch/riscv/decoder.cc @@ -105,8 +105,10 @@ Decoder::decode(PCStateBase &_next_pc) if (compressed(emi)) { next_pc.npc(next_pc.instAddr() + sizeof(machInst) / 2); + next_pc.compressed(true); } else { next_pc.npc(next_pc.instAddr() + sizeof(machInst)); + next_pc.compressed(false); } return decode(emi, next_pc.instAddr()); From 4adbb522382bb2ccf966bf3e8dd837a1ec964cae Mon Sep 17 00:00:00 2001 From: "Bobby R. Bruce" Date: Mon, 10 Jan 2022 11:28:05 -0800 Subject: [PATCH 02/27] stdlib: Remove stdlib README.md This README.md is outdated and incompleted. User's wishing to learn about the gem5 stdlib should reference the gem5 website: https://www.gem5.org/documentation/gem5-stdlib/overview Issue-on: https://gem5.atlassian.net/browse/GEM5-1019 Change-Id: Ib66bd748d517708833ac591515601f206ce4728a Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/55323 Reviewed-by: Jason Lowe-Power Maintainer: Jason Lowe-Power Tested-by: kokoro Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/56244 --- src/python/gem5/README.md | 37 ------------------------------------- 1 file changed, 37 deletions(-) delete mode 100644 src/python/gem5/README.md diff --git a/src/python/gem5/README.md b/src/python/gem5/README.md deleted file mode 100644 index 344034d3ac..0000000000 --- a/src/python/gem5/README.md +++ /dev/null @@ -1,37 +0,0 @@ -# The gem5 Components Library - -**IMPORTANT NOTE:** This is a Work-In-Process Documentation. This will be expanded and completed in later revisions of the components library. - -This is a high-level overview of what this library is. - -## Philosophy - -Like the [Zen of Python](https://www.python.org/dev/peps/pep-0020/), the gem5 Components Library has a set of guiding principles. -Note, these are note rules, and they are meant to be *bent* if needed (but maybe not broken). - -### Components are extensible, not configurable - -We prefer *extensibility* instead of *configurability*. -Instead of each component taking many different parameters, we have decided to make many different components. -For instance, instead of having one core component which takes a parameter of the type (e.g., in-order or out-of-order), we specify multiple different components, an `InOrderCPU` and an `OutOfOrder` CPU. - -### Components use easy to remember names - -We prefer longer and easier to remember names than shorter or jargon names. - -## Structure of the components library - -### Boards - -### Processors - -### Memories - -### Cache hierarchies - -## Contributing to the components library - -### Code style - -- Use [Black](https://black.readthedocs.io/en/stable/) to format your code. -- Docstring should follow the [ReST style and Sphinx](https://www.sphinx-doc.org/) From df69a56670c621fa229075e9a410117b8b6e60df Mon Sep 17 00:00:00 2001 From: Luming Wang Date: Fri, 14 Jan 2022 03:21:50 +0000 Subject: [PATCH 03/27] arch-riscv, dev: add VirtIO entropy device(VirtIORng) support Systemd, which is used by many main stream Linux distributions, will lead to slow boot if entropy is low. On X86 platforms, this problem can be alleviated by enabling RDRAND instructions. However, RISC-V doesn't have similar instructions. For QEMU/KVM, this problem can be solved by passing randomness from the host via virtio_rng. But gem5 doesn't have VirtIORng support now. Some user report that the boot time of riscv-ubuntu-run.py is too long. To alleviate this problem, this patch add VirtIORng device support for gem5. Change-Id: Id93b5703161701212fd6683837034cb0cff590c5 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/55483 Reviewed-by: Bobby Bruce Maintainer: Bobby Bruce Tested-by: kokoro Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/56245 Reviewed-by: Jason Lowe-Power Maintainer: Jason Lowe-Power --- configs/example/riscv/fs_linux.py | 12 ++ src/dev/riscv/HiFive.py | 2 + src/dev/virtio/SConscript | 3 + src/dev/virtio/VirtIORng.py | 50 ++++++++ src/dev/virtio/rng.cc | 112 ++++++++++++++++++ src/dev/virtio/rng.hh | 106 +++++++++++++++++ .../gem5/components/boards/riscv_board.py | 23 +++- 7 files changed, 307 insertions(+), 1 deletion(-) create mode 100644 src/dev/virtio/VirtIORng.py create mode 100644 src/dev/virtio/rng.cc create mode 100644 src/dev/virtio/rng.hh diff --git a/configs/example/riscv/fs_linux.py b/configs/example/riscv/fs_linux.py index 2947c1eac5..570ef22a63 100644 --- a/configs/example/riscv/fs_linux.py +++ b/configs/example/riscv/fs_linux.py @@ -75,6 +75,7 @@ from common import Options # linux kernel payload) # --disk-image (optional): Path to disk image file. Not needed if using # ramfs (might run into issues though). +# --virtio-rng (optional): Enable VirtIO entropy source device # --command-line (optional): Specify to override default. # --dtb-filename (optional): Path to DTB file. Auto-generated if empty. # --bare-metal (boolean): Use baremetal Riscv (default False). Use this @@ -129,6 +130,8 @@ parser.add_argument("--bare-metal", action="store_true", parser.add_argument("--dtb-filename", action="store", type=str, help="Specifies device tree blob file to use with device-tree-"\ "enabled kernels") +parser.add_argument("--virtio-rng", action="store_true", + help="Enable VirtIORng device") # ---------------------------- Parse Options --------------------------- # args = parser.parse_args() @@ -177,6 +180,15 @@ if args.disk_image: pio_addr=0x10008000 ) +# VirtIORng +if args.virtio_rng: + system.platform.rng = RiscvMmioVirtIO( + vio=VirtIORng(), + interrupt_id=0x8, + pio_size=4096, + pio_addr=0x10007000 + ) + system.bridge = Bridge(delay='50ns') system.bridge.mem_side_port = system.iobus.cpu_side_ports system.bridge.cpu_side_port = system.membus.mem_side_ports diff --git a/src/dev/riscv/HiFive.py b/src/dev/riscv/HiFive.py index 2923b881ba..a76e456152 100755 --- a/src/dev/riscv/HiFive.py +++ b/src/dev/riscv/HiFive.py @@ -126,6 +126,8 @@ class HiFive(Platform): devices = [self.uart] if hasattr(self, "disk"): devices.append(self.disk) + if hasattr(self, "rng"): + devices.append(self.rng) return devices def _on_chip_ranges(self): diff --git a/src/dev/virtio/SConscript b/src/dev/virtio/SConscript index bf083e780c..b00679cfa7 100644 --- a/src/dev/virtio/SConscript +++ b/src/dev/virtio/SConscript @@ -44,6 +44,7 @@ SimObject('VirtIO.py', sim_objects=[ 'VirtIODeviceBase', 'VirtIODummyDevice', 'PciVirtIO']) SimObject('VirtIOConsole.py', sim_objects=['VirtIOConsole']) SimObject('VirtIOBlock.py', sim_objects=['VirtIOBlock']) +SimObject('VirtIORng.py', sim_objects=['VirtIORng']) SimObject('VirtIO9P.py', sim_objects=[ 'VirtIO9PBase', 'VirtIO9PProxy', 'VirtIO9PDiod', 'VirtIO9PSocket']) @@ -52,8 +53,10 @@ Source('pci.cc') Source('console.cc') Source('block.cc') Source('fs9p.cc') +Source('rng.cc') DebugFlag('VIO', 'VirtIO base functionality') +DebugFlag('VIORng', 'VirtIO entropy source device ') DebugFlag('VIOIface', 'VirtIO transport') DebugFlag('VIOConsole', 'VirtIO console device') DebugFlag('VIOBlock', 'VirtIO block device') diff --git a/src/dev/virtio/VirtIORng.py b/src/dev/virtio/VirtIORng.py new file mode 100644 index 0000000000..54848ee7f1 --- /dev/null +++ b/src/dev/virtio/VirtIORng.py @@ -0,0 +1,50 @@ +# -*- 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") + + entropy_source = Param.String("/dev/random", "The source of entropy") diff --git a/src/dev/virtio/rng.cc b/src/dev/virtio/rng.cc new file mode 100644 index 0000000000..50a747ce98 --- /dev/null +++ b/src/dev/virtio/rng.cc @@ -0,0 +1,112 @@ +/* + * 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 +#include + +#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, + params.entropy_source, *this) +{ + registerQueue(qReq); +} + +VirtIORng::~VirtIORng() +{ +} + +VirtIORng::RngQueue::RngQueue(PortProxy &proxy, ByteOrder bo, + uint16_t size, const std::string &rng_file_path, + VirtIORng &_parent) + : VirtQueue(proxy, bo, size), parent(_parent), dist(0,255) +{ + rng_fd = open(rng_file_path.c_str(), O_RDONLY); + if (rng_fd < 0) { + DPRINTF(VIORng, "error when open entropy source: %s\n", + rng_file_path.c_str()); + } +} + +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 = 0; + bool rng_read_success = false; + if (rng_fd >= 0) { + ssize_t result = read(rng_fd, &byte, sizeof(uint8_t)); + rng_read_success = (result > 0); + } + if (!rng_read_success) { + // fallback to C++ std rng generator + byte = dist(rd_device); + } + 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 diff --git a/src/dev/virtio/rng.hh b/src/dev/virtio/rng.hh new file mode 100644 index 0000000000..50a3723359 --- /dev/null +++ b/src/dev/virtio/rng.hh @@ -0,0 +1,106 @@ +/* + * 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 + +#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, const std::string &rng_file_path, + 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; + private: + // system's special file for generating random number + int rng_fd; + // fallback random number generator + std::random_device rd_device; + std::uniform_int_distribution dist; + }; + /** Receive queue for port 0 */ + RngQueue qReq; +}; + +} // namespace gem5 + +#endif // __DEV_VIRTIO_RNG_HH__ diff --git a/src/python/gem5/components/boards/riscv_board.py b/src/python/gem5/components/boards/riscv_board.py index 7c5b547614..7dfa9db2d9 100644 --- a/src/python/gem5/components/boards/riscv_board.py +++ b/src/python/gem5/components/boards/riscv_board.py @@ -54,6 +54,7 @@ from m5.objects import ( RawDiskImage, RiscvMmioVirtIO, VirtIOBlock, + VirtIORng, Frequency, Port, ) @@ -119,10 +120,18 @@ class RiscvBoard(AbstractBoard, KernelDiskWorkload): pio_addr=0x10008000, ) + # The virtio rng + self.rng = RiscvMmioVirtIO( + vio=VirtIORng(), + interrupt_id=0x8, + pio_size=4096, + pio_addr=0x10007000, + ) + # Note: This overrides the platform's code because the platform isn't # general enough. self._on_chip_devices = [self.platform.clint, self.platform.plic] - self._off_chip_devices = [self.platform.uart, self.disk] + self._off_chip_devices = [self.platform.uart, self.disk, self.rng] def _setup_io_devices(self) -> None: """Connect the I/O devices to the I/O bus""" @@ -337,6 +346,18 @@ class RiscvBoard(AbstractBoard, KernelDiskWorkload): disk_node.appendCompatible(["virtio,mmio"]) soc_node.append(disk_node) + # VirtIO MMIO rng node + rng = self.rng + rng_node = rng.generateBasicPioDeviceNode( + soc_state, "virtio_mmio", rng.pio_addr, rng.pio_size + ) + rng_node.append(FdtPropertyWords("interrupts", [rng.interrupt_id])) + rng_node.append( + FdtPropertyWords("interrupt-parent", soc_state.phandle(plic)) + ) + rng_node.appendCompatible(["virtio,mmio"]) + soc_node.append(rng_node) + root.append(soc_node) fdt = Fdt() From 8f812a803cfd26f07774faed99fe69b8afe42f8f Mon Sep 17 00:00:00 2001 From: Hoa Nguyen Date: Sun, 23 Jan 2022 22:52:27 -0800 Subject: [PATCH 04/27] stdlib: Remove final decorator from abstract board @typing.final was not introduced until python3.8. Change-Id: I65a5f4b5655d2ad80f7b566f9cea8e2371b3be62 Signed-off-by: Hoa Nguyen Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/55863 Reviewed-by: Jason Lowe-Power Maintainer: Jason Lowe-Power Tested-by: kokoro Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/56246 --- src/python/gem5/components/boards/abstract_board.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/python/gem5/components/boards/abstract_board.py b/src/python/gem5/components/boards/abstract_board.py index a27cecd72e..30fbfcaaff 100644 --- a/src/python/gem5/components/boards/abstract_board.py +++ b/src/python/gem5/components/boards/abstract_board.py @@ -37,7 +37,7 @@ from m5.objects import ( VoltageDomain, ) -from typing import List, final +from typing import List class AbstractBoard(System): @@ -236,7 +236,6 @@ class AbstractBoard(System): """ raise NotImplementedError - @final def _connect_things(self) -> None: """Connects all the components to the board. From 13852f08116e19cb657c0c3ad4539f025fd13453 Mon Sep 17 00:00:00 2001 From: Yu-hsin Wang Date: Mon, 10 Jan 2022 13:36:30 +0800 Subject: [PATCH 05/27] fastmodel: Fix cluster build failed FastModelCortexCluster subclasses don't have `type` property. They don't need to be specified in sim_objects for generating *Params class. Change-Id: Ic09e494042e05d68c890f9603b8b78a4a8d815a9 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/55305 Reviewed-by: Gabe Black Maintainer: Gabe Black Tested-by: kokoro Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/56247 Reviewed-by: Jason Lowe-Power Maintainer: Jason Lowe-Power --- src/arch/arm/fastmodel/CortexA76/SConscript | 3 +-- src/arch/arm/fastmodel/CortexR52/SConscript | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/arch/arm/fastmodel/CortexA76/SConscript b/src/arch/arm/fastmodel/CortexA76/SConscript index ce51268467..016f6134ea 100644 --- a/src/arch/arm/fastmodel/CortexA76/SConscript +++ b/src/arch/arm/fastmodel/CortexA76/SConscript @@ -39,8 +39,7 @@ for name in ('x1', 'x2', 'x3', 'x4'): SimObject('FastModelCortexA76.py', sim_objects=[ 'FastModelCortexA76', 'FastModelCortexA76Cluster'] + - [f'FastModelScxEvsCortexA76x{num}' for num in (1, 2, 3, 4)] + - [f'FastModelCortexA76x{num}' for num in (1, 2, 3, 4)]) + [f'FastModelScxEvsCortexA76x{num}' for num in (1, 2, 3, 4)]) Source('cortex_a76.cc') Source('evs.cc') Source('thread_context.cc') diff --git a/src/arch/arm/fastmodel/CortexR52/SConscript b/src/arch/arm/fastmodel/CortexR52/SConscript index 4e5e147a01..c1dc1fe136 100644 --- a/src/arch/arm/fastmodel/CortexR52/SConscript +++ b/src/arch/arm/fastmodel/CortexR52/SConscript @@ -40,8 +40,7 @@ for name in ('x1', 'x2', 'x3', 'x4'): SimObject('FastModelCortexR52.py', sim_objects=[ 'FastModelCortexR52', 'FastModelCortexR52Cluster'] + - [f'FastModelScxEvsCortexR52x{num}' for num in (1, 2, 3, 4)] + - [f'FastModelCortexR52x{num}' for num in (1, 2, 3, 4)]) + [f'FastModelScxEvsCortexR52x{num}' for num in (1, 2, 3, 4)]) Source('cortex_r52.cc') Source('evs.cc') Source('thread_context.cc') From 3fa2d4bdf17bf56e10183cd84f8febd38f1af467 Mon Sep 17 00:00:00 2001 From: Yu-hsin Wang Date: Mon, 10 Jan 2022 13:36:39 +0800 Subject: [PATCH 06/27] dev-arm: Mask el2_watchdog in VExpressFastmodel platform el2_watchdog depends on SystemCounter. However, we have mask system_counter in the platform. We should also mask the el2_watchdog accordingly. Change-Id: I2ed774549272438d654e0573ffe9f482a6659d37 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/55306 Reviewed-by: Gabe Black Reviewed-by: Giacomo Travaglini Maintainer: Giacomo Travaglini Tested-by: kokoro Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/56248 Reviewed-by: Jason Lowe-Power Maintainer: Jason Lowe-Power --- src/dev/arm/VExpressFastmodel.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/dev/arm/VExpressFastmodel.py b/src/dev/arm/VExpressFastmodel.py index 6f9a731d3a..6e5ade4150 100644 --- a/src/dev/arm/VExpressFastmodel.py +++ b/src/dev/arm/VExpressFastmodel.py @@ -45,6 +45,7 @@ class VExpressFastmodel(VExpress_GEM5_Base): generic_timer = SubSystem() generic_timer_mem = SubSystem() sys_counter = SubSystem() + el2_watchdog = SubSystem() def _on_chip_devices(self): return [ From 5403054acf509f957ef49a988cb436351ccaa2d7 Mon Sep 17 00:00:00 2001 From: "Bobby R. Bruce" Date: Fri, 28 Jan 2022 11:49:23 -0800 Subject: [PATCH 07/27] tests: Fix gem5 stdlib NPB example test '--maxinst' was replaced with '--ticks' for the 'configs/example/gem5_library/x86-npb-benchmarks.py' script. This test was never updated and resulted in failure. This patch fixes the issue. Change-Id: I5491d48e3d42c37f703600a3dea323146e5ff6d7 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/56223 Maintainer: Bobby Bruce Reviewed-by: Jason Lowe-Power Maintainer: Jason Lowe-Power Tested-by: kokoro Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/56249 --- .../gem5_library_example_tests/test_gem5_library_examples.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/gem5/gem5_library_example_tests/test_gem5_library_examples.py b/tests/gem5/gem5_library_example_tests/test_gem5_library_examples.py index 2aca184321..6f3300d4f6 100644 --- a/tests/gem5/gem5_library_example_tests/test_gem5_library_examples.py +++ b/tests/gem5/gem5_library_example_tests/test_gem5_library_examples.py @@ -128,7 +128,7 @@ if os.access("/dev/kvm", mode=os.R_OK | os.W_OK): "bt", "--size", "A", - "--maxinsts", + "--ticks", "5000000000" ], valid_isas=(constants.x86_tag,), From 7eb732b60b60b32a31212a349af5d0c8addfcf7b Mon Sep 17 00:00:00 2001 From: "Bobby R. Bruce" Date: Fri, 28 Jan 2022 17:39:59 -0800 Subject: [PATCH 08/27] misc: Update REALEASE-NOTES.md for v21.2.1.0 Change-Id: Ib8daff60c624d8e86f0af872c04b43cb2329a043 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/56250 Reviewed-by: Jason Lowe-Power Maintainer: Jason Lowe-Power Tested-by: kokoro --- RELEASE-NOTES.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index b15e6cb80e..76bfeda49d 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -1,3 +1,17 @@ + +# Version 21.2.1.0 + +Version 21.0.1 is a minor gem5 release consisting of bug fixes. The 21.0.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 From 1851934f13c2036a7a2a33a34bda8ef38cc3159c Mon Sep 17 00:00:00 2001 From: "Bobby R. Bruce" Date: Fri, 28 Jan 2022 17:46:08 -0800 Subject: [PATCH 09/27] misc,base: Update the version to v21.2.1.0 Change-Id: Ic92d2c6f23b5618896fdf6e19dc1e5f0c6d14238 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/56251 Reviewed-by: Jason Lowe-Power Maintainer: Jason Lowe-Power Tested-by: kokoro --- src/Doxyfile | 2 +- src/base/version.cc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Doxyfile b/src/Doxyfile index 8ed8839f9a..8fc9ac7f88 100644 --- a/src/Doxyfile +++ b/src/Doxyfile @@ -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 = v21.2.0.0 +PROJECT_NUMBER = v21.2.1.0 # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) # base path where the generated documentation will be put. diff --git a/src/base/version.cc b/src/base/version.cc index 0da32c2494..c28f9ad567 100644 --- a/src/base/version.cc +++ b/src/base/version.cc @@ -32,6 +32,6 @@ namespace gem5 /** * @ingroup api_base_utils */ -const char *gem5Version = "21.2.0.0"; +const char *gem5Version = "21.2.1.0"; } // namespace gem5 From 141cc37c2d4b93959d4c249b8f7e6a8b2ef75338 Mon Sep 17 00:00:00 2001 From: "Bobby R. Bruce" Date: Tue, 8 Feb 2022 11:41:10 -0800 Subject: [PATCH 10/27] misc: Fix typo in RELEASE-NOTES.md "21.0.1" -> "21.2.1". Change-Id: Ia5d7780015bf803931e393d0716cafb51ac7a7d2 --- RELEASE-NOTES.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index 76bfeda49d..156494b31a 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -1,7 +1,7 @@ # Version 21.2.1.0 -Version 21.0.1 is a minor gem5 release consisting of bug fixes. The 21.0.1 release: +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. From e7f603c310a6c02e8cfcfd4e25a8f6b83fd2a253 Mon Sep 17 00:00:00 2001 From: "Bobby R. Bruce" Date: Fri, 22 Apr 2022 10:56:19 -0700 Subject: [PATCH 11/27] stdlib: Update the resources.json URL It is important this URL remains stable across releases. Pulling directly from the Google Source git repo is not stable and may change over time. This patch updates the URL to https://resources.gem5.org/resources.json. As the gem5.org domain is under the gem5 project's control, we can ensure this does not change. In order to ensure this downloader remains stable, the reading of the resources.json file has been updated to either accept plain-text of base64. Change-Id: I549fabb1525ee1df68cb1641c1bd82ea8bd32262 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/59269 Maintainer: Bobby Bruce Reviewed-by: Jason Lowe-Power Tested-by: kokoro --- src/python/gem5/resources/downloader.py | 32 ++++++++++++++----------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/src/python/gem5/resources/downloader.py b/src/python/gem5/resources/downloader.py index 2cb73baef4..2a857e5d4f 100644 --- a/src/python/gem5/resources/downloader.py +++ b/src/python/gem5/resources/downloader.py @@ -48,13 +48,7 @@ def _resources_json_version_required() -> str: return "21.2" def _get_resources_json_uri() -> str: - uri = ( - "https://gem5.googlesource.com/public/gem5-resources/" - + "+/refs/heads/stable/resources.json?format=TEXT" - ) - - return uri - + return "https://resources.gem5.org/resources.json" def _get_resources_json() -> Dict: """ @@ -63,11 +57,18 @@ def _get_resources_json() -> Dict: :returns: The Resources JSON (as a Python Dictionary). """ - # Note: Google Source does not properly support obtaining files as raw - # text. Therefore when we open the URL we receive the JSON in base64 - # format. Conversion is needed before it can be loaded. + with urllib.request.urlopen(_get_resources_json_uri()) as url: - to_return = json.loads(base64.b64decode(url.read()).decode("utf-8")) + try: + to_return = json.loads(url.read()) + except json.JSONDecodeError: + # This is a bit of a hack. If the URL specified exists in a Google + # Source repo (which is the case when on the gem5 develop branch) + # we retrieve the JSON in base64 format. This cannot be loaded + # directly as text. Conversion is therefore needed. + to_return = json.loads( + base64.b64decode(url.read()).decode("utf-8") + ) # If the current version pulled is not correct, look up the # "previous-versions" field to find the correct one. @@ -77,9 +78,12 @@ def _get_resources_json() -> Dict: with urllib.request.urlopen( to_return["previous-versions"][version] ) as url: - to_return = json.loads( - base64.b64decode(url.read()).decode("utf-8") - ) + try: + to_return = json.loads(url.read()) + except json.JSONDecodeError: + to_return = json.loads( + base64.b64decode(url.read()).decode("utf-8") + ) else: # This should never happen, but we thrown an exception to explain # that we can't find the version. From fc7ac542f054ac128adbf3bc51dcbe604c5fb2ff Mon Sep 17 00:00:00 2001 From: "Bobby R. Bruce" Date: Thu, 28 Apr 2022 19:05:49 -0700 Subject: [PATCH 12/27] misc,base: Update the version to v21.2.1.1 Change-Id: I26f7689b7c266951dd6c410a74d53753f42de107 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/59270 Maintainer: Bobby Bruce Tested-by: kokoro Reviewed-by: Jason Lowe-Power --- src/Doxyfile | 2 +- src/base/version.cc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Doxyfile b/src/Doxyfile index 8fc9ac7f88..6a3889aaca 100644 --- a/src/Doxyfile +++ b/src/Doxyfile @@ -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 = v21.2.1.0 +PROJECT_NUMBER = v21.2.1.1 # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) # base path where the generated documentation will be put. diff --git a/src/base/version.cc b/src/base/version.cc index c28f9ad567..057129bb8e 100644 --- a/src/base/version.cc +++ b/src/base/version.cc @@ -32,6 +32,6 @@ namespace gem5 /** * @ingroup api_base_utils */ -const char *gem5Version = "21.2.1.0"; +const char *gem5Version = "21.2.1.1"; } // namespace gem5 From e4fae58da6c044b6efec62392ff99f343ce67947 Mon Sep 17 00:00:00 2001 From: "Bobby R. Bruce" Date: Thu, 28 Apr 2022 19:04:37 -0700 Subject: [PATCH 13/27] misc: Update RELEASE-NOTES.md for v21.2.1.1 Change-Id: I35e511a33fb4fd0327188602174ccb906efbb0eb Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/59271 Tested-by: kokoro Maintainer: Bobby Bruce Reviewed-by: Jason Lowe-Power --- RELEASE-NOTES.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index 156494b31a..5d569b4b04 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -1,3 +1,8 @@ +# 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 . +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 From 4df0d886df0412511db0efdf2c7beac37db20040 Mon Sep 17 00:00:00 2001 From: "Bobby R. Bruce" Date: Wed, 15 Jun 2022 11:48:43 -0700 Subject: [PATCH 14/27] scons: Remove -Werror for the gem5 v22.0 release While gem5 compiles on all our supported compilers, removing the -Werror flag on the stable branch ensures that, as new compilers are released with stricter warnings, gem5 remains compilable. Change-Id: I0efe6cf83714720ae0d5de9de9b993c6d8ab00a8 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/60510 Reviewed-by: Jason Lowe-Power Maintainer: Jason Lowe-Power Tested-by: kokoro --- SConstruct | 7 ------- 1 file changed, 7 deletions(-) diff --git a/SConstruct b/SConstruct index 4d91eae3f0..f1f1c64f07 100755 --- a/SConstruct +++ b/SConstruct @@ -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.", From fd7bfca33b1d2fd9dba1c45ee923f1b731f2d9b3 Mon Sep 17 00:00:00 2001 From: "Bobby R. Bruce" Date: Wed, 15 Jun 2022 11:51:49 -0700 Subject: [PATCH 15/27] base: Update the version to v22.0.0.0 Change-Id: I945304167e3835d3492cb2b81e22372608cb89a5 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/60529 Reviewed-by: Jason Lowe-Power Maintainer: Jason Lowe-Power Tested-by: kokoro --- src/Doxyfile | 2 +- src/base/version.cc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Doxyfile b/src/Doxyfile index f29acbbde4..9edf43f50c 100644 --- a/src/Doxyfile +++ b/src/Doxyfile @@ -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.0 # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) # base path where the generated documentation will be put. diff --git a/src/base/version.cc b/src/base/version.cc index 61b2a5e033..a269987af9 100644 --- a/src/base/version.cc +++ b/src/base/version.cc @@ -32,6 +32,6 @@ namespace gem5 /** * @ingroup api_base_utils */ -const char *gem5Version = "[DEVELOP-FOR-v22.0]"; +const char *gem5Version = "22.0.0.0"; } // namespace gem5 From 2342c74a13c238e2530bae6c461e6dd2e27a8747 Mon Sep 17 00:00:00 2001 From: "Bobby R. Bruce" Date: Wed, 15 Jun 2022 11:56:20 -0700 Subject: [PATCH 16/27] python,misc: Update the resources URL to v22-0 Change-Id: Ida4ee3f52a33fffcaccc8b2ee5b4ed002443f5aa Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/60530 Maintainer: Jason Lowe-Power Reviewed-by: Jason Lowe-Power Tested-by: kokoro --- ext/testlib/configuration.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ext/testlib/configuration.py b/ext/testlib/configuration.py index fd47e3b33a..cc40b0d17f 100644 --- a/ext/testlib/configuration.py +++ b/ext/testlib/configuration.py @@ -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', From 73da4d794c952154de5db8d1efb5383af48b081a Mon Sep 17 00:00:00 2001 From: "Bobby R. Bruce" Date: Wed, 15 Jun 2022 12:02:48 -0700 Subject: [PATCH 17/27] stdlib: Update the resources.json version to v22.0 This is used to ensure the stdlib obtains the resources for v22.0. Change-Id: Ib38e331dcc96cd2d50922dfeeb7edfee3f19d321 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/60531 Reviewed-by: Jason Lowe-Power Maintainer: Jason Lowe-Power Tested-by: kokoro --- src/python/gem5/resources/downloader.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/python/gem5/resources/downloader.py b/src/python/gem5/resources/downloader.py index 7f4480158e..3481c9d10e 100644 --- a/src/python/gem5/resources/downloader.py +++ b/src/python/gem5/resources/downloader.py @@ -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" From 15c896831a615487439149024da1297919f44549 Mon Sep 17 00:00:00 2001 From: "Bobby R. Bruce" Date: Wed, 15 Jun 2022 16:26:51 -0700 Subject: [PATCH 18/27] util-docker: Fix the gpu-fs docker image. This was broken, it was actually building he gcn-gpu image, not the gpu-fs image. This patch fixes this error. Change-Id: I2d8ca0ea6584d059ddb6c9084de2b3075fb59723 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/60532 Tested-by: kokoro Reviewed-by: Jason Lowe-Power Maintainer: Jason Lowe-Power --- util/dockerfiles/docker-compose.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/util/dockerfiles/docker-compose.yaml b/util/dockerfiles/docker-compose.yaml index 5a16717bb5..103c221dc0 100644 --- a/util/dockerfiles/docker-compose.yaml +++ b/util/dockerfiles/docker-compose.yaml @@ -8,7 +8,7 @@ services: image: gcr.io/gem5-test/gcn-gpu gpu-fs: build: - context: gcn-gpu + context: gpu-fs dockerfile: Dockerfile image: gcr.io/gem5-test/gpu-fs sst: From ae3c3fccd4df1cb15b9a6af50ef04abe5e5ab654 Mon Sep 17 00:00:00 2001 From: "Bobby R. Bruce" Date: Wed, 15 Jun 2022 16:35:13 -0700 Subject: [PATCH 19/27] tests: Update the the docker images in Nightly to v22-0 Change-Id: Id7aa4e1cbd2cf3123f82a152b96cd14281e798bd Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/60549 Maintainer: Bobby Bruce Tested-by: kokoro Reviewed-by: Bobby Bruce --- tests/nightly.sh | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/tests/nightly.sh b/tests/nightly.sh index bbed675394..4ee895142d 100755 --- a/tests/nightly.sh +++ b/tests/nightly.sh @@ -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 \ From ac7d7a7d7ae536bb4cf3c9d0c431f5fb65548b04 Mon Sep 17 00:00:00 2001 From: "Bobby R. Bruce" Date: Wed, 15 Jun 2022 16:39:51 -0700 Subject: [PATCH 20/27] tests: Update the Weekly tests' docker version to v22-0 Change-Id: I9940c78396fffb5a009f86a968bc847f6285312d Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/60550 Maintainer: Jason Lowe-Power Tested-by: kokoro Reviewed-by: Jason Lowe-Power --- tests/weekly.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/weekly.sh b/tests/weekly.sh index 98bc47e2e6..8b16907932 100755 --- a/tests/weekly.sh +++ b/tests/weekly.sh @@ -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 @@ -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 \ From 742e661ba76d258d183d35d2b07ba79bea2a56fa Mon Sep 17 00:00:00 2001 From: "Bobby R. Bruce" Date: Wed, 15 Jun 2022 16:43:54 -0700 Subject: [PATCH 21/27] tests: Update Weekly tests to use correct resources version Change-Id: I129a8b69ae7c6bc7ad6a5f13712471c8bf9f8d4c Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/60551 Maintainer: Jason Lowe-Power Reviewed-by: Jason Lowe-Power Tested-by: kokoro --- tests/weekly.sh | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/weekly.sh b/tests/weekly.sh index 8b16907932..febfae4ff9 100755 --- a/tests/weekly.sh +++ b/tests/weekly.sh @@ -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. From e9beee0134ac0b1002629c84d0fb62be1c3b81f2 Mon Sep 17 00:00:00 2001 From: "Bobby R. Bruce" Date: Wed, 15 Jun 2022 16:50:08 -0700 Subject: [PATCH 22/27] tests: Update gem5 dist URL for weekly tests to v22-0 Change-Id: I6ebcb5739df76bd071a3fe261254edfc72cf6839 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/60552 Reviewed-by: Jason Lowe-Power Maintainer: Jason Lowe-Power Tested-by: kokoro --- tests/weekly.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/weekly.sh b/tests/weekly.sh index febfae4ff9..838ccd4d45 100755 --- a/tests/weekly.sh +++ b/tests/weekly.sh @@ -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 \ From 72fdc257bd2ff76a4c7f10964662913d0cd2b043 Mon Sep 17 00:00:00 2001 From: "Bobby R. Bruce" Date: Wed, 15 Jun 2022 16:57:54 -0700 Subject: [PATCH 23/27] util-docker: Update ROCclr.patch link to v22-0 directory Change-Id: Ie58daf751273a28be200c5fe161ac349d0024ca7 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/60553 Tested-by: kokoro Reviewed-by: Jason Lowe-Power Maintainer: Jason Lowe-Power --- util/dockerfiles/gcn-gpu/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/util/dockerfiles/gcn-gpu/Dockerfile b/util/dockerfiles/gcn-gpu/Dockerfile index c5db8963a8..be5851402d 100644 --- a/util/dockerfiles/gcn-gpu/Dockerfile +++ b/util/dockerfiles/gcn-gpu/Dockerfile @@ -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" \ From 78bf9b19605a42206bc63e715989d62934fece4d Mon Sep 17 00:00:00 2001 From: "Bobby R. Bruce" Date: Wed, 15 Jun 2022 17:47:54 -0700 Subject: [PATCH 24/27] tests: Add v22-0 tag for compiler-tests docker images Change-Id: I72247e9371e6a1caf6c693e30fd3d9478fcbaab6 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/60569 Reviewed-by: Jason Lowe-Power Maintainer: Jason Lowe-Power Tested-by: kokoro --- tests/compiler-tests.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/compiler-tests.sh b/tests/compiler-tests.sh index a6a7f99b80..354444c50c 100755 --- a/tests/compiler-tests.sh +++ b/tests/compiler-tests.sh @@ -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 From 962de4c6ce27a68a372ef50bb54d6c4680736aa8 Mon Sep 17 00:00:00 2001 From: "Bobby R. Bruce" Date: Thu, 16 Jun 2022 12:46:00 -0700 Subject: [PATCH 25/27] misc: Update RELEASE-NOTES.md for v22.0.0.0 Change-Id: I4d28ce4711e549e59fafbfa2b2ff681b7e42c623 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/60516 Maintainer: Jason Lowe-Power Tested-by: kokoro Reviewed-by: Jason Lowe-Power Reviewed-by: Matt Sinclair Maintainer: Matt Sinclair --- RELEASE-NOTES.md | 115 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 115 insertions(+) diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index b15e6cb80e..133282aa5e 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -1,3 +1,118 @@ +# 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 . + +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['']` appeared should noe be `env['CONF']['']` +- 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.0.0 ## API (user-facing) changes From a10073119ecdb95961d92f734cc0f5fd7c49adba Mon Sep 17 00:00:00 2001 From: "Bobby R. Bruce" Date: Sat, 18 Jun 2022 03:36:27 -0700 Subject: [PATCH 26/27] misc: Add v22.0.0.1 hotfix This hotfix fixes a bad import in src/python/gem5/components/processors/simple_core.py --- RELEASE-NOTES.md | 8 ++++++++ src/python/gem5/components/processors/simple_core.py | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index d199fed342..881285f695 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -1,3 +1,11 @@ +# 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! diff --git a/src/python/gem5/components/processors/simple_core.py b/src/python/gem5/components/processors/simple_core.py index 92290a3bb6..1fa2f68f91 100644 --- a/src/python/gem5/components/processors/simple_core.py +++ b/src/python/gem5/components/processors/simple_core.py @@ -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 From 39f85b7a3be1ee0ff6e375c9791dd62d23eb8a3e Mon Sep 17 00:00:00 2001 From: "Bobby R. Bruce" Date: Sat, 18 Jun 2022 04:59:02 -0700 Subject: [PATCH 27/27] misc: Update version info to v22.0.0.1 --- src/Doxyfile | 2 +- src/base/version.cc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Doxyfile b/src/Doxyfile index 9edf43f50c..a49de0f124 100644 --- a/src/Doxyfile +++ b/src/Doxyfile @@ -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 = v22.0.0.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. diff --git a/src/base/version.cc b/src/base/version.cc index a269987af9..33b0fd06db 100644 --- a/src/base/version.cc +++ b/src/base/version.cc @@ -32,6 +32,6 @@ namespace gem5 /** * @ingroup api_base_utils */ -const char *gem5Version = "22.0.0.0"; +const char *gem5Version = "22.0.0.1"; } // namespace gem5