From 280871245b812ff6090ddfbc7a8b33987454d24b Mon Sep 17 00:00:00 2001 From: Giacomo Travaglini Date: Fri, 16 Aug 2024 22:49:49 +0100 Subject: [PATCH 1/6] arch-arm: Redirect VHE for ZCR_EL1 (#1472) Change-Id: Iff83d25257065503dc02728461823bc9985dbab3 Signed-off-by: Giacomo Travaglini --- src/arch/arm/isa.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/arch/arm/isa.cc b/src/arch/arm/isa.cc index 69ca95d306..d94c583a09 100644 --- a/src/arch/arm/isa.cc +++ b/src/arch/arm/isa.cc @@ -274,6 +274,8 @@ ISA::redirectRegVHE(int misc_reg) return currEL() == EL2 ? MISCREG_CNTHCTL_EL2 : misc_reg; case MISCREG_MPAM1_EL1: return currEL() == EL2 ? MISCREG_MPAM2_EL2 : misc_reg; + case MISCREG_ZCR_EL1: + return currEL() == EL2 ? MISCREG_ZCR_EL2 : misc_reg; case MISCREG_CNTP_TVAL: case MISCREG_CNTP_TVAL_EL0: if (ELIsInHost(tc, currEL())) { From aa4fe362a582ca52cff0ccf83b764cc109bbc5c4 Mon Sep 17 00:00:00 2001 From: Yu-Cheng Chang Date: Mon, 19 Aug 2024 23:21:42 +0800 Subject: [PATCH 2/6] arch-riscv: Sign-extend the address in newPCState (#1471) From #1316, creating the new PCState should sign-extend the address to avoid wrong address issue. Change-Id: I884b4e3708f5f1cc49cfd44d51bec5a2b63cc47a --- src/arch/riscv/isa.hh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/arch/riscv/isa.hh b/src/arch/riscv/isa.hh index 04bbcfbe9e..a27982bc7d 100644 --- a/src/arch/riscv/isa.hh +++ b/src/arch/riscv/isa.hh @@ -117,6 +117,9 @@ class ISA : public BaseISA newPCState(Addr new_inst_addr=0) const override { unsigned vlenb = vlen >> 3; + if (_rvType == RV32) { + new_inst_addr = sext<32>(new_inst_addr); + } return new PCState(new_inst_addr, _rvType, vlenb); } From b0d81ec8a2bcece1a510b20d40bd47314b24a89e Mon Sep 17 00:00:00 2001 From: Yangyu Chen Date: Tue, 20 Aug 2024 01:25:39 +0800 Subject: [PATCH 3/6] arch-riscv: fix GDB breakpoint issue for RV32 (#1470) Since PR #1316, we use sign-extend for all address generation, including PC, to match the ISA specification for modifiable XLEN. However, when we set a breakpoint using remote GDB, our address is not sign-extended. This causes the breakpoint to be set at the wrong address, as specified in Issue #1463. This PR fixes the issue by sign-extending the address when setting a breakpoint. This also matches the RISC-V ISA Specification that "must sign-extend results to fill the entire widest supported XLEN in the destination register." Change-Id: I9b493bf8ad5b1ef45a9728bb40fc5e38250fe9c3 Signed-off-by: Yangyu Chen --- src/arch/riscv/remote_gdb.cc | 14 ++++++++++++++ src/arch/riscv/remote_gdb.hh | 2 ++ src/base/remote_gdb.hh | 8 ++++---- 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/src/arch/riscv/remote_gdb.cc b/src/arch/riscv/remote_gdb.cc index ef76451b17..111af8e62f 100644 --- a/src/arch/riscv/remote_gdb.cc +++ b/src/arch/riscv/remote_gdb.cc @@ -233,6 +233,20 @@ RemoteGDB::acc(Addr va, size_t len) return context()->getProcessPtr()->pTable->lookup(va) != nullptr; } +void +RemoteGDB::insertHardBreak(Addr addr, size_t kind) +{ + Addr realAddr = getRvType(context()) == RV64 ? addr : sext(addr, 32); + BaseRemoteGDB::insertHardBreak(realAddr, kind); +} + +void +RemoteGDB::removeHardBreak(Addr addr, size_t kind) +{ + Addr realAddr = getRvType(context()) == RV64 ? addr : sext(addr, 32); + BaseRemoteGDB::removeHardBreak(realAddr, kind); +} + void RemoteGDB::Riscv32GdbRegCache::getRegs(ThreadContext *context) { diff --git a/src/arch/riscv/remote_gdb.hh b/src/arch/riscv/remote_gdb.hh index b2f90c32be..a01ebe08f0 100644 --- a/src/arch/riscv/remote_gdb.hh +++ b/src/arch/riscv/remote_gdb.hh @@ -57,6 +57,8 @@ class RemoteGDB : public BaseRemoteGDB bool acc(Addr addr, size_t len) override; // A breakpoint will be 2 bytes if it is compressed and 4 if not bool checkBpKind(size_t kind) override { return kind == 2 || kind == 4; } + void insertHardBreak(Addr addr, size_t kind) override; + void removeHardBreak(Addr addr, size_t kind) override; class Riscv32GdbRegCache : public BaseGdbRegCache { diff --git a/src/base/remote_gdb.hh b/src/base/remote_gdb.hh index 02802e7a85..8735f6feaf 100644 --- a/src/base/remote_gdb.hh +++ b/src/base/remote_gdb.hh @@ -321,10 +321,10 @@ class BaseRemoteGDB void descheduleInstCommitEvent(Event *ev); // Breakpoints. - void insertSoftBreak(Addr addr, size_t kind); - void removeSoftBreak(Addr addr, size_t kind); - void insertHardBreak(Addr addr, size_t kind); - void removeHardBreak(Addr addr, size_t kind); + virtual void insertSoftBreak(Addr addr, size_t kind); + virtual void removeSoftBreak(Addr addr, size_t kind); + virtual void insertHardBreak(Addr addr, size_t kind); + virtual void removeHardBreak(Addr addr, size_t kind); void sendTPacket(GDBSignal sig, ContextID id, const std::string& stopReason); From f600db4a98d4aee4e9543d6e62e5aeeb53146126 Mon Sep 17 00:00:00 2001 From: "Bobby R. Bruce" Date: Mon, 19 Aug 2024 10:58:06 -0700 Subject: [PATCH 4/6] gpu-compute,tests: Move GPU tests to testlib (#1270) A new host tag `gcn_gpu` has been added. This allows for selection of those GPU tests which depend upon the gcn-gpu docker image to run. In addition to this, the square GPU tests has been moved to the CI tests. This ensures some GPU code is compiled and run on every PR. --- .github/workflows/ci-tests.yaml | 27 ++++ .github/workflows/daily-tests.yaml | 48 +++---- .github/workflows/weekly-tests.yaml | 94 ++++--------- configs/example/apu_se.py | 28 ++++ ext/testlib/configuration.py | 2 + tests/gem5/gpu/test_gpu_apu_se.py | 145 ++++++++++++++++++++ tests/gem5/gpu/test_gpu_ruby_random.py | 4 +- tests/gem5/gpu/test_gpu_ruby_random_wbL2.py | 4 +- 8 files changed, 255 insertions(+), 97 deletions(-) create mode 100644 tests/gem5/gpu/test_gpu_apu_se.py diff --git a/.github/workflows/ci-tests.yaml b/.github/workflows/ci-tests.yaml index a1adfdb8ef..efaa94a7c4 100644 --- a/.github/workflows/ci-tests.yaml +++ b/.github/workflows/ci-tests.yaml @@ -221,6 +221,32 @@ jobs: path: tests/testing-results retention-days: 30 + gpu-tests: + runs-on: [self-hosted, linux, x64] + container: ghcr.io/gem5/gcn-gpu:latest + timeout-minutes: 180 + needs: [pre-commit, check-for-change-id] + steps: + - uses: actions/checkout@v4 + + # Build the VEGA_X86/gem5.opt binary. + - name: Build VEGA_X86/gem5.opt + run: scons build/VEGA_X86/gem5.opt -j`nproc` + + # Run the GPU tests. + - name: Run Testlib GPU Tests + working-directory: ${{ github.workspace }}/tests + run: ./main.py run --skip-build -vvv -t $(nproc) --host gcn_gpu gem5/gpu + + # Upload the tests/testing-results directory as an artifact. + - name: Upload results + if: success() || failure() + uses: actions/upload-artifact@v4 + with: + name: ci-tests-run-${{ github.run_number }}-attempt-${{ github.run_attempt }}-gpu-status-${{ steps.run-tests.outcome }}-output + path: tests/testing-results + retention-days: 30 + ci-tests: # It is 'testlib-quick' which needs to pass for the pull request to be # merged. This job is a dummy job that depends on all the other jobs. @@ -232,5 +258,6 @@ jobs: - unittests-all-opt - pre-commit - check-for-change-id + - gpu-tests steps: - run: echo "This job's status is ${{ job.status }}." diff --git a/.github/workflows/daily-tests.yaml b/.github/workflows/daily-tests.yaml index 2ad0069a3d..45e9e58dd4 100644 --- a/.github/workflows/daily-tests.yaml +++ b/.github/workflows/daily-tests.yaml @@ -80,6 +80,30 @@ jobs: retention-days: 7 - run: echo "This job's status is ${{ job.status }}." + gpu-tests: + runs-on: [self-hosted, linux, x64] + container: ghcr.io/gem5/gcn-gpu:latest + timeout-minutes: 300 + + steps: + - uses: actions/checkout@v4 + with: + ref: develop + - name: Build VEGA_X86/gem5.opt + run: scons build/VEGA_X86/gem5.opt -j`nproc` + + - name: Run Testlib GPU Tests + working-directory: ${{ github.workspace }}/tests + run: ./main.py run --length=long --skip-build -vvv -t $(nproc) --host gcn_gpu + + - name: Upload results + if: success() || failure() + uses: actions/upload-artifact@v4 + with: + name: gpu_COMMIT.${{github.sha}}_RUN.${{github.run_id}}_ATTEMPT.${{github.run_attempt}} + path: tests/testing-results + retention-days: 7 + # This runs the SST-gem5 integration compilation and tests it with # ext/sst/sst/example.py. sst-test: @@ -124,30 +148,6 @@ jobs: - name: Continue gem5 within SystemC test run: LD_LIBRARY_PATH=build/ARM/:/opt/systemc/lib-linux64/ ./util/systemc/gem5_within_systemc/gem5.opt.sc m5out/config.ini - # Runs the gem5 Nighyly GPU tests. - gpu-tests: - runs-on: [self-hosted, linux, x64] - container: ghcr.io/gem5/gcn-gpu:latest - timeout-minutes: 720 # 12 hours - - steps: - - uses: actions/checkout@v4 - - name: Compile build/VEGA_X86/gem5.opt - run: scons build/VEGA_X86/gem5.opt -j $(nproc) - - name: Get Square test-prog from gem5-resources - run: build/VEGA_X86/gem5.opt util/obtain-resource.py square-gpu-test -p square - - name: Run Square test with VEGA_X86/gem5.opt (SE mode) - run: | - mkdir -p tests/testing-results - ./build/VEGA_X86/gem5.opt configs/example/apu_se.py --reg-alloc-policy=dynamic -n3 -c square - - name: Get allSyncPrims-1kernel from gem5-resources - run: build/VEGA_X86/gem5.opt util/obtain-resource.py allSyncPrims-1kernel -p allSyncPrims-1kernel - - name: Run allSyncPrims-1kernel sleepMutex test with VEGA_X86/gem5.opt (SE mode) - run: ./build/VEGA_X86/gem5.opt configs/example/apu_se.py --reg-alloc-policy=dynamic -n3 -c allSyncPrims-1kernel --options="sleepMutex 10 16 - 4" - - name: Run allSyncPrims-1kernel lfTreeBarrUsing test with VEGA_X86/gem5.opt (SE mode) - run: ./build/VEGA_X86/gem5.opt configs/example/apu_se.py --reg-alloc-policy=dynamic -n3 -c allSyncPrims-1kernel --options="lfTreeBarrUniq - 10 16 4" daily-tests: # The dummy job is used to indicate whether the daily tests have # passed or not. This can be used as status check for pull requests. diff --git a/.github/workflows/weekly-tests.yaml b/.github/workflows/weekly-tests.yaml index 1d4161731a..e80761e986 100644 --- a/.github/workflows/weekly-tests.yaml +++ b/.github/workflows/weekly-tests.yaml @@ -8,73 +8,6 @@ on: workflow_dispatch: jobs: - build-gcn-gpu-gem5: - runs-on: [self-hosted, linux, x64] - container: ghcr.io/gem5/gcn-gpu:latest - steps: - - uses: actions/checkout@v4 - - name: Build gem5 - run: scons build/VEGA_X86/gem5.opt -j $(nproc) --ignore-style - - uses: actions/upload-artifact@v4 - with: - name: weekly-test-${{ github.run_number }}-attempt-${{ github.run_attempt }}-gem5-build-vega - path: build/VEGA_X86/gem5.opt - retention-days: 5 - - run: echo "This job's status is ${{ job.status }}." - - LULESH-tests: - runs-on: [self-hosted, linux, x64] - container: ghcr.io/gem5/gcn-gpu:latest - needs: build-gcn-gpu-gem5 - timeout-minutes: 480 # 8 hours - steps: - - uses: actions/checkout@v4 - - - name: Download build/VEGA_X86/gem5.opt - uses: actions/download-artifact@v4 - with: - name: weekly-test-${{ github.run_number }}-attempt-${{ github.run_attempt }}-gem5-build-vega - path: build/VEGA_X86 - # `download-artifact` does not preserve permissions so we need to set - # them again. - - run: chmod u+x build/VEGA_X86/gem5.opt - - - name: Obtain LULESH - # Obtains the latest LULESH compatible with this version of gem5 via - # gem5 Resources. - run: build/VEGA_X86/gem5.opt util/obtain-resource.py lulesh -p lulesh - - - name: Run LULUESH tests - working-directory: ${{ github.workspace }} - run: | - build/VEGA_X86/gem5.opt configs/example/apu_se.py -n3 --mem-size=8GB --reg-alloc-policy=dynamic --dgpu --gfx-version=gfx900 -c \ - lulesh --options="0.01 2" - - HACC-tests: - runs-on: [self-hosted, linux, x64] - container: ghcr.io/gem5/gcn-gpu:latest - needs: build-gcn-gpu-gem5 - timeout-minutes: 120 # 2 hours - steps: - - uses: actions/checkout@v4 - - uses: actions/download-artifact@v4 - with: - name: weekly-test-${{ github.run_number }}-attempt-${{ github.run_attempt }}-gem5-build-vega - path: build/VEGA_X86 - - run: chmod u+x build/VEGA_X86/gem5.opt - - name: make hip directory - run: mkdir hip - - name: Compile m5ops and x86 - working-directory: ${{ github.workspace }}/util/m5 - run: | - export TERM=xterm-256color - scons build/x86/out/m5 - - name: Download tests - run: build/VEGA_X86/gem5.opt util/obtain-resource.py hacc-force-tree -p hip/ForceTreeTest - - name: Run HACC tests - run: | - build/VEGA_X86/gem5.opt configs/example/apu_se.py -n3 --reg-alloc-policy=dynamic --benchmark-root=hip -c ForceTreeTest --options="0.5 0.1 64 0.1 1 N 12 rcb" - build-gem5: runs-on: [self-hosted, linux, x64] container: ghcr.io/gem5/ubuntu-24.04_all-dependencies:latest @@ -127,6 +60,30 @@ jobs: retention-days: 7 - run: echo "This job's status is ${{ job.status }}." + gpu-tests: + runs-on: [self-hosted, linux, x64] + container: ghcr.io/gem5/gcn-gpu:latest + timeout-minutes: 300 + + steps: + - uses: actions/checkout@v4 + with: + ref: develop + - name: Build VEGA_X86/gem5.opt + run: scons build/VEGA_X86/gem5.opt -j`nproc` + + - name: Run Testlib GPU Tests + working-directory: ${{ github.workspace }}/tests + run: ./main.py run --length=very-long --skip-build -vvv -t $(nproc) --host gcn_gpu + + - name: Upload results + if: success() || failure() + uses: actions/upload-artifact@v4.0.0 + with: + name: gpu_COMMIT.${{github.sha}}_RUN.${{github.run_id}}_ATTEMPT.${{github.run_attempt}} + path: tests/testing-results + retention-days: 7 + dramsys-tests: runs-on: [self-hosted, linux, x64] container: ghcr.io/gem5/ubuntu-22.04_all-dependencies:latest @@ -158,7 +115,6 @@ jobs: needs: - testlib-very-long-tests - dramsys-tests - - LULESH-tests - - HACC-tests + - gpu-tests steps: - run: echo "This weekly tests have passed." diff --git a/configs/example/apu_se.py b/configs/example/apu_se.py index eb7c625cad..fa7a35381d 100644 --- a/configs/example/apu_se.py +++ b/configs/example/apu_se.py @@ -40,6 +40,7 @@ from m5.objects import * from m5.util import addToPath from gem5.isas import ISA +from gem5.resources.resource import obtain_resource from gem5.runtime import get_supported_isas addToPath("../") @@ -402,6 +403,22 @@ parser.add_argument( help="cache replacement policy" "policy for sqc", ) +parser.add_argument( + "--download-resource", + type=str, + default=None, + required=False, + help="Download this resources prior to simulation", +) + +parser.add_argument( + "--download-dir", + type=str, + default=None, + required=False, + help="Download resources to this directory", +) + Ruby.define_options(parser) # add TLB options to the parser @@ -409,6 +426,17 @@ GPUTLBOptions.tlb_options(parser) args = parser.parse_args() +# Get the resource if specified. +if args.download_resource: + resources = obtain_resource( + resource_id=args.download_resource, + resource_directory=args.download_dir, + ) + + # This line seems pointless but is actually what triggers the download. + resources.get_local_path() + + # The GPU cache coherence protocols only work with the backing store args.access_backing_store = True diff --git a/ext/testlib/configuration.py b/ext/testlib/configuration.py index cebf493add..53d4476aec 100644 --- a/ext/testlib/configuration.py +++ b/ext/testlib/configuration.py @@ -267,6 +267,7 @@ def define_constants(constants): constants.host_isa_tag_type = "host" constants.host_x86_64_tag = "x86_64" constants.host_arm_tag = "aarch64" + constants.host_gcn_gpu_tag = "gcn_gpu" constants.kvm_tag = "kvm" @@ -295,6 +296,7 @@ def define_constants(constants): constants.host_isa_tag_type: ( constants.host_x86_64_tag, constants.host_arm_tag, + constants.host_gcn_gpu_tag, ), } diff --git a/tests/gem5/gpu/test_gpu_apu_se.py b/tests/gem5/gpu/test_gpu_apu_se.py new file mode 100644 index 0000000000..72a416bb23 --- /dev/null +++ b/tests/gem5/gpu/test_gpu_apu_se.py @@ -0,0 +1,145 @@ +# Copyright (c) 2024 The Regents of the University of California +# All rights reserved. +# +# 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 testlib import * + +if config.bin_path: + resource_path = config.bin_path +else: + resource_path = joinpath(absdirpath(__file__), "..", "resources") + +gem5_verify_config( + name="gpu-apu-se-square", + fixtures=(), + verifiers=(), + config=joinpath(config.base_dir, "configs", "example", "apu_se.py"), + config_args=[ + "--download-resource", + "square-gpu-test", + "--download-dir", + resource_path, + "--reg-alloc-policy=dynamic", + "-n3", + "-c", + joinpath(resource_path, "square-gpu-test"), + ], + valid_isas=(constants.vega_x86_tag,), + valid_hosts=(constants.host_gcn_gpu_tag,), + length=constants.quick_tag, +) + +gem5_verify_config( + name="gpu-apu-se-sleepMutex", + fixtures=(), + verifiers=(), + config=joinpath(config.base_dir, "configs", "example", "apu_se.py"), + config_args=[ + "--download-resource", + "allSyncPrims-1kernel", + "--download-dir", + resource_path, + "--reg-alloc-policy=dynamic", + "-n3", + "-c", + joinpath(resource_path, "allSyncPrims-1kernel"), + "--options", + "'sleepMutex 10 16 4'", + ], + valid_isas=(constants.vega_x86_tag,), + valid_hosts=(constants.host_gcn_gpu_tag,), + length=constants.long_tag, +) + +gem5_verify_config( + name="gpu-apu-se-lftreebarruniq", + fixtures=(), + verifiers=(), + config=joinpath(config.base_dir, "configs", "example", "apu_se.py"), + config_args=[ + "--download-resource", + "allSyncPrims-1kernel", + "--download-dir", + resource_path, + "--reg-alloc-policy=dynamic", + "-n3", + "-c", + joinpath(resource_path, "allSyncPrims-1kernel"), + "--options", + "'lfTreeBarrUniq 10 16 4 10 16 4'", + ], + valid_isas=(constants.vega_x86_tag,), + valid_hosts=(constants.host_gcn_gpu_tag,), + length=constants.long_tag, +) + +gem5_verify_config( + name="gpu-apu-se-lulesh", + fixtures=(), + verifiers=(), + config=joinpath(config.base_dir, "configs", "example", "apu_se.py"), + config_args=[ + "--download-resource", + "lulesh", + "--download-dir", + resource_path, + "--reg-alloc-policy=dynamic", + "-n3", + "--mem-size=8GB", + "--dgpu", + "--gfx-version", + "gfx900", + "-c", + joinpath(resource_path, "lulesh"), + "--options", + "'0.01 2'", + ], + valid_isas=(constants.vega_x86_tag,), + valid_hosts=(constants.host_gcn_gpu_tag,), + length=constants.very_long_tag, +) + +gem5_verify_config( + name="gpu-apu-se-hacc", + fixtures=(), + verifiers=(), + config=joinpath(config.base_dir, "configs", "example", "apu_se.py"), + config_args=[ + "--download-resource", + "hacc-force-tree", + "--download-dir", + resource_path, + "--reg-alloc-policy=dynamic", + "-n3", + "-c", + joinpath(resource_path, "hacc-force-tree"), + "--options", + "'0.5 0.1 64 0.1 1 N 12 rcb'", + ], + valid_isas=(constants.vega_x86_tag,), + valid_hosts=(constants.host_gcn_gpu_tag,), + length=constants.very_long_tag, +) diff --git a/tests/gem5/gpu/test_gpu_ruby_random.py b/tests/gem5/gpu/test_gpu_ruby_random.py index e29ecf24b1..7cea412ff8 100644 --- a/tests/gem5/gpu/test_gpu_ruby_random.py +++ b/tests/gem5/gpu/test_gpu_ruby_random.py @@ -52,7 +52,7 @@ gem5_verify_config( ), config_args=["--test-length", "50000", "--num-dmas", "0"], valid_isas=(constants.vega_x86_tag,), - valid_hosts=constants.supported_hosts, + valid_hosts=(constants.host_gcn_gpu_tag,), length=constants.long_tag, ) @@ -79,6 +79,6 @@ gem5_verify_config( ), config_args=["--test-length", "5000000", "--num-dmas", "0"], valid_isas=(constants.vega_x86_tag,), - valid_hosts=constants.supported_hosts, + valid_hosts=(constants.host_gcn_gpu_tag,), length=constants.long_tag, ) diff --git a/tests/gem5/gpu/test_gpu_ruby_random_wbL2.py b/tests/gem5/gpu/test_gpu_ruby_random_wbL2.py index 9af4e65a11..4e4074ec15 100644 --- a/tests/gem5/gpu/test_gpu_ruby_random_wbL2.py +++ b/tests/gem5/gpu/test_gpu_ruby_random_wbL2.py @@ -52,7 +52,7 @@ gem5_verify_config( ), config_args=["--WB_L2", "--test-length", "50000", "--num-dmas", "0"], valid_isas=(constants.vega_x86_tag,), - valid_hosts=constants.supported_hosts, + valid_hosts=(constants.host_gcn_gpu_tag,), length=constants.long_tag, ) @@ -79,6 +79,6 @@ gem5_verify_config( ), config_args=["--WB_L2", "--test-length", "5000000", "--num-dmas", "0"], valid_isas=(constants.vega_x86_tag,), - valid_hosts=constants.supported_hosts, + valid_hosts=(constants.host_gcn_gpu_tag,), length=constants.long_tag, ) From 7413d3217c1b926ead7cc19ea8784cf82ac4d37d Mon Sep 17 00:00:00 2001 From: "Bobby R. Bruce" Date: Mon, 19 Aug 2024 10:58:29 -0700 Subject: [PATCH 5/6] docs,misc: RELEASE-NOTES.md updates for v24.1 (#1460) --- RELEASE-NOTES.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index 5fd35e2aff..0ebdb8a47d 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -1,3 +1,12 @@ +# Verion 24.1 + +## User facing changes + +* The [behavior of the`StridePrefetcher` has been altered](https://github.com/gem5/gem5/pull/1449) as follows: + * The addresses used to compute the stride has been changed from word aligned addresses to cache line aligned addresses. + * It returns if the stride does not match, as opposed to issuing prefetching using the new stride --- the previous, incorrect behavior. + * Returns if the new stride is 0, indicating multiple reads from the same cache line. + # Version 24.0 gem5 Version 24.0 is the first major release of 2024. From ce4c2c649566d57c7b5c78d29f2199880b9d5a4c Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Mon, 19 Aug 2024 12:21:31 -0700 Subject: [PATCH 6/6] dev,arch-x86: Added softstrobe mode to intel8254 timer (#1447) This PR should fix the #1195 --- src/dev/intel_8254_timer.cc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/dev/intel_8254_timer.cc b/src/dev/intel_8254_timer.cc index df9b4b3d4e..548de0dd1e 100644 --- a/src/dev/intel_8254_timer.cc +++ b/src/dev/intel_8254_timer.cc @@ -210,8 +210,10 @@ Intel8254Timer::Counter::setRW(int rw_val) void Intel8254Timer::Counter::setMode(int mode_val) { + if (mode_val == SoftwareStrobe) + warn_once("SoftwareStrobe mode is used and it is not well tested\n"); if (mode_val != InitTc && mode_val != RateGen && - mode_val != SquareWave) + mode_val != SquareWave && mode_val != SoftwareStrobe) panic("PIT mode %#x is not implemented: \n", mode_val); mode = mode_val; @@ -292,6 +294,7 @@ Intel8254Timer::Counter::CounterEvent::process() break; case RateGen: case SquareWave: + case SoftwareStrobe: setTo(counter->period); break; default: