misc: Merge branch stable into release-staging-v23-1
Change-Id: I3903331ec4c9d7ba83656bbf579ac3c1cac8518f
This commit is contained in:
@@ -50,9 +50,11 @@ Suites is a new category of resource being introduced in gem5. Documentation of
|
|||||||
- Update vega10_kvm.py to add checkpointing instructions
|
- Update vega10_kvm.py to add checkpointing instructions
|
||||||
|
|
||||||
## SE mode GPU model improvements
|
## SE mode GPU model improvements
|
||||||
|
|
||||||
- started adding support for mmap'ing inputs for GPUSE tests, which reduces their runtime by 8-15% per run
|
- started adding support for mmap'ing inputs for GPUSE tests, which reduces their runtime by 8-15% per run
|
||||||
|
|
||||||
## GPU model improvements
|
## GPU model improvements
|
||||||
|
|
||||||
- update GPU VIPER and Coalescer support to ensure correct replacement policy behavior when multiple requests from the same CU are concurrently accessing the same line
|
- update GPU VIPER and Coalescer support to ensure correct replacement policy behavior when multiple requests from the same CU are concurrently accessing the same line
|
||||||
- fix bug with GPU VIPER to resolve a race conflict for loads that bypass the TCP (L1D$)
|
- fix bug with GPU VIPER to resolve a race conflict for loads that bypass the TCP (L1D$)
|
||||||
- fix bug with MRU replacement policy updates in GPU SQC (I$)
|
- fix bug with MRU replacement policy updates in GPU SQC (I$)
|
||||||
@@ -126,6 +128,32 @@ Jerin Joy who did much of the initial work, and many others who contributed to t
|
|||||||
- [Bug when trying to restore checkpoints in SPARC: “panic: panic condition !pte occurred: Tried to execute unmapped address 0.”](https://github.com/gem5/gem5/issues/197)
|
- [Bug when trying to restore checkpoints in SPARC: “panic: panic condition !pte occurred: Tried to execute unmapped address 0.”](https://github.com/gem5/gem5/issues/197)
|
||||||
- [BaseCache::recvTimingResp can trigger an assertion error from getTarget() due to MSHR in senderState having no targets](https://github.com/gem5/gem5/issues/100)
|
- [BaseCache::recvTimingResp can trigger an assertion error from getTarget() due to MSHR in senderState having no targets](https://github.com/gem5/gem5/issues/100)
|
||||||
|
|
||||||
|
# Version 23.0.1.0
|
||||||
|
|
||||||
|
This minor release incorporates documentation updates, bug fixes, and some minor improvements.
|
||||||
|
|
||||||
|
## Documentation updates
|
||||||
|
|
||||||
|
* "TESTING.md" has been updated to more accurately reflect our current testing infrastructure.
|
||||||
|
* "README" has been replaced with "README.md" and includes more up-to-date information on using gem5.
|
||||||
|
* "CONTRIBUTING.md" has been updated to reflect our migration to GitHub and the changes in policy and proceedures.
|
||||||
|
* Where needed old references to Gerrit have been removed in favor of GitHub.
|
||||||
|
|
||||||
|
## Bug Fixes
|
||||||
|
|
||||||
|
* Fixes an assert failure when using ARM which was trigged when `shiftAmt` is 0 for a UQRSH instruction.
|
||||||
|
* Fixes `name 'fatal' is not defined` being thrown when tracing is off.
|
||||||
|
* Fixes a bug in ARM in which the TLBIOS instructions were decoded as normal MSR instructions with no effect on the TLBs.
|
||||||
|
* Fixes invalid `packet_id` value in flit.
|
||||||
|
* Fixes default CustomMesh for use with Garnet.
|
||||||
|
|
||||||
|
## Minor Improvements
|
||||||
|
|
||||||
|
* The gem5 resources downloader now outputs more helpful errors in the case of a failure.
|
||||||
|
* "util/github-runners-vagrant" has been added. This outlines how to setup a GitHub Action's set-hosted runner for gem5.
|
||||||
|
* The PyUnit tests have been refactored to no longer download large resources during testing.
|
||||||
|
* Using Perf is now optional when utilizing KVM CPUs.
|
||||||
|
|
||||||
# Version 23.0.0.1
|
# Version 23.0.0.1
|
||||||
|
|
||||||
**[HOTFIX]** Fixes compilation of `GCN3_X86` and `VEGA_X85`.
|
**[HOTFIX]** Fixes compilation of `GCN3_X86` and `VEGA_X85`.
|
||||||
|
|||||||
@@ -389,10 +389,8 @@ decode QUADRANT default Unknown::unknown() {
|
|||||||
if (status.fs == FPUStatus::OFF)
|
if (status.fs == FPUStatus::OFF)
|
||||||
return std::make_shared<IllegalInstFault>("FPU is off",
|
return std::make_shared<IllegalInstFault>("FPU is off",
|
||||||
machInst);
|
machInst);
|
||||||
|
|
||||||
status.fs = FPUStatus::DIRTY;
|
status.fs = FPUStatus::DIRTY;
|
||||||
xc->setMiscReg(MISCREG_STATUS, status);
|
xc->setMiscReg(MISCREG_STATUS, status);
|
||||||
|
|
||||||
Fc1_bits = Mem;
|
Fc1_bits = Mem;
|
||||||
}}, {{
|
}}, {{
|
||||||
EA = rvZext(sp + offset);
|
EA = rvZext(sp + offset);
|
||||||
@@ -420,10 +418,8 @@ decode QUADRANT default Unknown::unknown() {
|
|||||||
if (status.fs == FPUStatus::OFF)
|
if (status.fs == FPUStatus::OFF)
|
||||||
return std::make_shared<IllegalInstFault>("FPU is off",
|
return std::make_shared<IllegalInstFault>("FPU is off",
|
||||||
machInst);
|
machInst);
|
||||||
|
|
||||||
status.fs = FPUStatus::DIRTY;
|
status.fs = FPUStatus::DIRTY;
|
||||||
xc->setMiscReg(MISCREG_STATUS, status);
|
xc->setMiscReg(MISCREG_STATUS, status);
|
||||||
|
|
||||||
freg_t fd;
|
freg_t fd;
|
||||||
fd = freg(f32(Mem_uw));
|
fd = freg(f32(Mem_uw));
|
||||||
Fd_bits = fd.v;
|
Fd_bits = fd.v;
|
||||||
|
|||||||
@@ -47,7 +47,6 @@
|
|||||||
#define __MEM_PORT_HH__
|
#define __MEM_PORT_HH__
|
||||||
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <sstream>
|
|
||||||
#include <stack>
|
#include <stack>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
|
|||||||
@@ -67,26 +67,6 @@ You can check the status of the runner here: https://github.com/organizations/{G
|
|||||||
|
|
||||||
If the runner ever shows as offline, you can rerun the `vagrant up --provider=libvirt` command to make sure everything is working properly.
|
If the runner ever shows as offline, you can rerun the `vagrant up --provider=libvirt` command to make sure everything is working properly.
|
||||||
|
|
||||||
## Troubleshooting
|
|
||||||
|
|
||||||
### The default libvirt disk image storage pool is on the wrong drive
|
|
||||||
|
|
||||||
By default libvirt will store disk images in "/var/lib/libvirt/images".
|
|
||||||
This is not ideal as it is on a small root partition.
|
|
||||||
A solution to this is to change the default storage location.
|
|
||||||
To do so, do the following:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
virsh pool-list --all # Confirm here a "default" pool exist. We'll modify this.
|
|
||||||
virsh pool-dumpxml default >default-pool.xml # We take a dump of the default then removed it.
|
|
||||||
virsh pool-destroy default
|
|
||||||
virsh pool-undefine default
|
|
||||||
vim default-pool.xml # Change the image path to the desired path
|
|
||||||
virsh pool-define default-pool.xml # From here we re-add the default.
|
|
||||||
virsh pool-start default
|
|
||||||
virsh pool-autostart default
|
|
||||||
```
|
|
||||||
|
|
||||||
### Error: "Vagrant failed to initialize at a very early stage"
|
### Error: "Vagrant failed to initialize at a very early stage"
|
||||||
|
|
||||||
W set the `VAGRANT_HOME` environment variable to the CWD.
|
W set the `VAGRANT_HOME` environment variable to the CWD.
|
||||||
|
|||||||
57
util/github-runners-vagrant/Vagrantfile-builder
Normal file
57
util/github-runners-vagrant/Vagrantfile-builder
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
# -*- mode: ruby -*-
|
||||||
|
# vi: set ft=ruby :
|
||||||
|
|
||||||
|
Vagrant.configure("2") do |config|
|
||||||
|
config.vm.box = "generic/ubuntu2204"
|
||||||
|
config.vm.box_check_update = true
|
||||||
|
config.vm.define "<VM NAME>"
|
||||||
|
config.vm.hostname = "<VM NAME>"
|
||||||
|
# allows us to ssh into the machine, addressing the problem below
|
||||||
|
# https://www.reddit.com/r/vagrant/comments/sb7hfl/new_to_vagrant_getting_efault_warning/
|
||||||
|
config.ssh.username = "vagrant"
|
||||||
|
config.ssh.password = "vagrant"
|
||||||
|
|
||||||
|
config.vm.provider "libvirt" do |vb|
|
||||||
|
# Customize the amount of cpus and memory on the VM:
|
||||||
|
vb.cpus = "4".to_i
|
||||||
|
vb.memory = "16384".to_i
|
||||||
|
end
|
||||||
|
|
||||||
|
# sets up vm
|
||||||
|
config.vm.provision :shell, path: "provision_root.sh"
|
||||||
|
config.vm.provision :shell, privileged: false, path: "provision_nonroot.sh"
|
||||||
|
# To ensure we don't run out of memory, we enable dynamic Swap Space. This is
|
||||||
|
# done via the "swapspace" daemon: https://pqxx.org/development/swapspace/
|
||||||
|
config.vm.provision :shell, inline: "sudo apt install swapspace -y"
|
||||||
|
# The provision_root.sh adds the vagrant user to the docker group, so we need to reload the VM.
|
||||||
|
config.vm.provision :reload
|
||||||
|
config.vm.provision :shell, run: 'always', inline: <<-SHELL
|
||||||
|
# When running gem5 in SE mode we must overcommit memory.
|
||||||
|
# This is run on every startup of the VM.
|
||||||
|
/sbin/sysctl vm.overcommit_memory=1
|
||||||
|
SHELL
|
||||||
|
config.vm.provision :shell, privileged: false, run: 'always', inline: <<-SHELL
|
||||||
|
if [ -d ~/actions-runner ]; then
|
||||||
|
# This will be run everytime the VM is run (once created).
|
||||||
|
cd actions-runner
|
||||||
|
nohup ./run.sh &
|
||||||
|
else
|
||||||
|
# This will be run the first time the VM is created.
|
||||||
|
mkdir ~/actions-runner && cd ~/actions-runner
|
||||||
|
curl -so actions-runner-linux-x64-2.304.0.tar.gz -L \
|
||||||
|
https://github.com/actions/runner/releases/download/v2.304.0/actions-runner-linux-x64-2.304.0.tar.gz
|
||||||
|
tar xzf ./actions-runner-linux-x64-2.304.0.tar.gz
|
||||||
|
|
||||||
|
# configure the runner
|
||||||
|
# echo automatically sets the name of the runner, and the tags
|
||||||
|
# create a personal access token with admin permission and copy it into the curl command
|
||||||
|
echo -ne '\n\nbuild\n\n' | ./config.sh --url https://github.com/<GITHUB REPO> --token $(curl -L \
|
||||||
|
-X POST -H "Accept: application/vnd.github+json" -H "Authorization: Bearer <PERSONAL ACCESS TOKEN>" \
|
||||||
|
-H "X-GitHub-Api-Version: 2022-11-28" \
|
||||||
|
https://api.github.com/repos/<GITHUB REPO>/actions/runners/registration-token | jq -r '.token')
|
||||||
|
# start the runner
|
||||||
|
nohup ./run.sh &
|
||||||
|
fi
|
||||||
|
SHELL
|
||||||
|
|
||||||
|
end
|
||||||
56
util/github-runners-vagrant/Vagrantfile-runner
Normal file
56
util/github-runners-vagrant/Vagrantfile-runner
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
# -*- mode: ruby -*-
|
||||||
|
# vi: set ft=ruby :
|
||||||
|
|
||||||
|
Vagrant.configure("2") do |config|
|
||||||
|
config.vm.box = "generic/ubuntu2204"
|
||||||
|
config.vm.box_check_update = true
|
||||||
|
config.vm.define "<VM NAME>"
|
||||||
|
config.vm.hostname = "<VM NAME>"
|
||||||
|
# allows us to ssh into the machine, addressing the problem below
|
||||||
|
# https://www.reddit.com/r/vagrant/comments/sb7hfl/new_to_vagrant_getting_efault_warning/
|
||||||
|
config.ssh.username = "vagrant"
|
||||||
|
config.ssh.password = "vagrant"
|
||||||
|
|
||||||
|
config.vm.provider "libvirt" do |vb|
|
||||||
|
# Customize the amount of cpus and memory on the VM:
|
||||||
|
vb.cpus = "1".to_i
|
||||||
|
vb.memory = "8192".to_i
|
||||||
|
end
|
||||||
|
|
||||||
|
# sets up vm
|
||||||
|
config.vm.provision :shell, path: "provision_root.sh"
|
||||||
|
config.vm.provision :shell, privileged: false, path: "provision_nonroot.sh"
|
||||||
|
# To ensure we don't run out of memory, we enable dynamic Swap Space. This is
|
||||||
|
# done via the "swapspace" daemon: https://pqxx.org/development/swapspace/
|
||||||
|
config.vm.provision :shell, inline: "sudo apt install swapspace -y"
|
||||||
|
# The provision_root.sh adds the vagrant user to the docker group, so we need to reload the VM.
|
||||||
|
config.vm.provision :reload
|
||||||
|
config.vm.provision :shell, run: 'always', inline: <<-SHELL
|
||||||
|
# When running gem5 in SE mode we must overcommit memory.
|
||||||
|
# This is run on every startup of the VM.
|
||||||
|
/sbin/sysctl vm.overcommit_memory=1
|
||||||
|
SHELL
|
||||||
|
config.vm.provision :shell, privileged: false, run: 'always', inline: <<-SHELL
|
||||||
|
if [ -d ~/actions-runner ]; then
|
||||||
|
# This will be run everytime the VM is run (once created).
|
||||||
|
cd actions-runner
|
||||||
|
nohup ./run.sh &
|
||||||
|
else
|
||||||
|
# This will be run the first time the VM is created.
|
||||||
|
mkdir ~/actions-runner && cd ~/actions-runner
|
||||||
|
curl -so actions-runner-linux-x64-2.304.0.tar.gz -L \
|
||||||
|
https://github.com/actions/runner/releases/download/v2.304.0/actions-runner-linux-x64-2.304.0.tar.gz
|
||||||
|
tar xzf ./actions-runner-linux-x64-2.304.0.tar.gz
|
||||||
|
|
||||||
|
# configure the runner
|
||||||
|
# echo automatically sets the name of the runner, and the tags
|
||||||
|
# create a personal access token with admin permission and copy it into the curl command
|
||||||
|
echo -ne '\n\nrun\n\n' | ./config.sh --url https://github.com/<GITHUB REPO> --token $(curl -L \
|
||||||
|
-X POST -H "Accept: application/vnd.github+json" -H "Authorization: Bearer <PERSONAL ACCESS TOKEN>" \
|
||||||
|
-H "X-GitHub-Api-Version: 2022-11-28" \
|
||||||
|
https://api.github.com/repos/<GITHUB REPO>/actions/runners/registration-token | jq -r '.token')
|
||||||
|
# start the runner
|
||||||
|
nohup ./run.sh &
|
||||||
|
fi
|
||||||
|
SHELL
|
||||||
|
end
|
||||||
43
util/github-runners-vagrant/vm_manager.sh
Executable file
43
util/github-runners-vagrant/vm_manager.sh
Executable file
@@ -0,0 +1,43 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
NUM_RUNNERS=20
|
||||||
|
NUM_BUILDERS=3
|
||||||
|
RUNNER_PREFIX="$(hostname)-runner-"
|
||||||
|
BUILDER_PREFIX="$(hostname)-builder-"
|
||||||
|
|
||||||
|
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
|
||||||
|
export VAGRANT_HOME=${SCRIPT_DIR}
|
||||||
|
|
||||||
|
param="up"
|
||||||
|
if [[ $# -ge 1 ]]; then
|
||||||
|
param=$1
|
||||||
|
if [[ "${param}" != "destroy" ]] && [[ "${param}" != "shutdown" ]]; then
|
||||||
|
echo "Only valid parameters are 'destroy' and 'shutdown' to destroy all VMs or shutdown all VMs"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
for (( i=1; i<=NUM_RUNNERS; i++ )); do
|
||||||
|
sed -i "s/ config.vm.define.*/ config.vm.define \"${RUNNER_PREFIX}${i}\"/g" Vagrantfile-runner
|
||||||
|
sed -i "s/ config.vm.hostname.*/ config.vm.hostname = \"${RUNNER_PREFIX}${i}\"/g" Vagrantfile-runner
|
||||||
|
if [[ "${param}" == "destroy" ]]; then
|
||||||
|
VAGRANT_VAGRANTFILE=Vagrantfile-runner vagrant destroy -f
|
||||||
|
elif [[ "${param}" == "shutdown" ]]; then
|
||||||
|
VAGRANT_VAGRANTFILE=Vagrantfile-runner vagrant halt -f
|
||||||
|
else
|
||||||
|
VAGRANT_VAGRANTFILE=Vagrantfile-runner vagrant up --provider=libvirt
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
for (( i=1; i<=NUM_BUILDERS; i++ )); do
|
||||||
|
sed -i "s/ config.vm.define.*/ config.vm.define \"${BUILDER_PREFIX}${i}\"/g" Vagrantfile-builder
|
||||||
|
sed -i "s/ config.vm.hostname.*/ config.vm.hostname = \"${BUILDER_PREFIX}${i}\"/g" Vagrantfile-builder
|
||||||
|
if [[ "${param}" == "destroy" ]]; then
|
||||||
|
VAGRANT_VAGRANTFILE=Vagrantfile-builder vagrant destroy -f
|
||||||
|
elif [[ "${param}" == "shutdown" ]]; then
|
||||||
|
VAGRANT_VAGRANTFILE=Vagrantfile-builder vagrant halt -f
|
||||||
|
else
|
||||||
|
VAGRANT_VAGRANTFILE=Vagrantfile-builder vagrant up --provider=libvirt
|
||||||
|
fi
|
||||||
|
done
|
||||||
Reference in New Issue
Block a user