-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[PATCH v3 0/5] Introduce svukte ISA extension
https://lore.kernel.org/qemu-devel/20241112091423.2529583-1-fea.wang@sifive.com --- From: "Fea.Wang" <fea.wang@sifive.com> To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Cc: Palmer Dabbelt <palmer@dabbelt.com>, Alistair Francis <alistair.francis@wdc.com>, Bin Meng <bmeng.cn@gmail.com>, Weiwei Li <liwei1518@gmail.com>, Daniel Henrique Barboza <dbarboza@ventanamicro.com>, Liu Zhiwei <zhiwei_liu@linux.alibaba.com>, "Fea.Wang" <fea.wang@sifive.com> Subject: [PATCH v3 0/5] Introduce svukte ISA extension Date: Tue, 12 Nov 2024 17:14:18 +0800 Message-Id: <20241112091423.2529583-1-fea.wang@sifive.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Received-SPF: pass client-ip=2607:f8b0:4864:20::434; envelope-from=fea.wang@sifive.com; helo=mail-pf1-x434.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: <qemu-devel.nongnu.org> List-Unsubscribe: <https://lists.nongnu.org/mailman/options/qemu-devel>, <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe> List-Archive: <https://lists.nongnu.org/archive/html/qemu-devel> List-Post: <mailto:qemu-devel@nongnu.org> List-Help: <mailto:qemu-devel-request@nongnu.org?subject=help> List-Subscribe: <https://lists.nongnu.org/mailman/listinfo/qemu-devel>, <mailto:qemu-devel-request@nongnu.org?subject=subscribe> Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org The Svukte ISA extension has been approved for fast-track development. https://lf-riscv.atlassian.net/browse/RVS-2977 And there are Linux patches for the Svukte that are under review. https://lore.kernel.org/kvm/20240920-dev-maxh-svukte-rebase-v1-0-7864a88a62bd@sifive.com/T/#mf70fcb22cd2987ad268c0efee9b8583197d3cb4f Svukte provides a means to make user-mode accesses to supervisor memory raise page faults in constant time, mitigating attacks that attempt to discover the supervisor software's address-space layout. Refer to the draft of svukte extension from: riscv/riscv-isa-manual#1564 base-commit: 27652f9 [v3] * Fix some typos * Refine code by separating a function into two dedicated functions. * Follow the riscv,isa order [v2] * Refactor the code [v1] * Add svukte extension Fea.Wang (5): target/riscv: Add svukte extension capability variable target/riscv: Support senvcfg[UKTE] bit when svukte extension is enabled target/riscv: Support hstatus[HUKTE] bit when svukte extension is enabled target/riscv: Check memory access to meet svukte rule target/riscv: Expose svukte ISA extension target/riscv/cpu.c | 2 ++ target/riscv/cpu_bits.h | 2 ++ target/riscv/cpu_cfg.h | 1 + target/riscv/cpu_helper.c | 61 +++++++++++++++++++++++++++++++++++++++ target/riscv/csr.c | 7 +++++ 5 files changed, 73 insertions(+) -- 2.34.1 Signed-off-by: GitHub Actions Bot <bot@github.com>
- Loading branch information
GitHub Actions Bot
committed
Nov 12, 2024
1 parent
21684f0
commit b34c050
Showing
24 changed files
with
766 additions
and
127 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,297 @@ | ||
on: push | ||
|
||
concurrency: | ||
group: ${{ github.workflow }}-${{ github.ref }} | ||
cancel-in-progress: true | ||
|
||
jobs: | ||
checkapply: | ||
runs-on: ubuntu-24.04 | ||
steps: | ||
- uses: actions/checkout@v4 | ||
# to debug container live from GitHub | ||
# - uses: mxschmitt/action-tmate@v3 | ||
- run: bash -c '[ ! -f shazam.log ] || { cat shazam.log; exit 1; }' | ||
|
||
checkpatch-ignore-signoff: | ||
needs: checkapply | ||
runs-on: ubuntu-24.04 | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- run: git fetch -a origin --unshallow || true | ||
- run: git remote add upstream -f https://gitlab.com/qemu-project/qemu | ||
- run: ./scripts/checkpatch.pl --no-signoff $(git merge-base upstream/master HEAD)..HEAD | ||
|
||
checkpatch-with-signoff: | ||
needs: checkapply | ||
runs-on: ubuntu-24.04 | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- run: git fetch -a origin --unshallow || true | ||
- run: git remote add upstream -f https://gitlab.com/qemu-project/qemu | ||
- run: ./scripts/checkpatch.pl $(git merge-base upstream/master HEAD)..HEAD | ||
|
||
# use docker-run to not rebuild images | ||
# images are built daily and pushed on pbolinaro/qemu-ci:* | ||
build-cross: | ||
needs: checkapply | ||
runs-on: ubuntu-24.04 | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
container: [alpine,centos9,debian,debian-all-test-cross,debian-amd64-cross,debian-arm64-cross,debian-armhf-cross,debian-hexagon-cross,debian-i686-cross,debian-legacy-test-cross,debian-loongarch-cross,debian-mips64el-cross,debian-mipsel-cross,debian-ppc64el-cross,debian-riscv64-cross,debian-s390x-cross,debian-tricore-cross,fedora,fedora-rust-nightly,opensuse-leap,ubuntu2204] | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- run: pip install meson | ||
- run: make docker-run J=$(nproc) RUNC=podman TEST=test-build IMAGE=docker.io/pbolinaro/qemu-ci:${{matrix.container}} | ||
|
||
build: | ||
needs: checkapply | ||
runs-on: ubuntu-24.04 | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- run: > | ||
podman run --init --rm -it -v $(pwd):$(pwd) -w $(pwd) | ||
docker.io/pbolinaro/qemu-ci:debian | ||
bash -cx './configure && ninja -C build install' | ||
- run: > | ||
podman run --init --rm -it -v $(pwd):$(pwd) -w $(pwd) | ||
docker.io/pbolinaro/qemu-ci:debian | ||
./build/qemu-system-x86_64 -nographic -plugin ./build/contrib/plugins/libstoptrigger,icount=1000000 -plugin ./build/tests/tcg/plugins/libinsn -d plugin | ||
build-cross-mingw64: | ||
needs: checkapply | ||
runs-on: ubuntu-24.04 | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- run: > | ||
podman run --init --rm -it -v $(pwd):$(pwd) -w $(pwd) | ||
docker.io/pbolinaro/qemu-ci:fedora-win64-cross | ||
bash -cx './configure $QEMU_CONFIGURE_OPTS && ninja -C build install' | ||
build-windows: | ||
needs: checkapply | ||
runs-on: windows-2022 | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
sys: [UCRT64, CLANG64, MINGW64] | ||
defaults: | ||
run: | ||
shell: msys2 {0} | ||
steps: | ||
- uses: msys2/setup-msys2@v2 | ||
with: | ||
update: true | ||
msystem: ${{matrix.sys}} | ||
- run: pacman -S --noconfirm curl git | ||
- uses: actions/checkout@v4 | ||
- run: > | ||
pacman -S --noconfirm | ||
base-devel binutils bison diffutils flex git grep make sed | ||
${MINGW_PACKAGE_PREFIX}-toolchain | ||
${MINGW_PACKAGE_PREFIX}-glib2 | ||
${MINGW_PACKAGE_PREFIX}-gtk3 | ||
${MINGW_PACKAGE_PREFIX}-libnfs | ||
${MINGW_PACKAGE_PREFIX}-libssh | ||
${MINGW_PACKAGE_PREFIX}-ninja | ||
${MINGW_PACKAGE_PREFIX}-pixman | ||
${MINGW_PACKAGE_PREFIX}-pkgconf | ||
${MINGW_PACKAGE_PREFIX}-python | ||
${MINGW_PACKAGE_PREFIX}-SDL2 | ||
${MINGW_PACKAGE_PREFIX}-zstd | ||
- run: ./configure && ninja -C build | ||
- run: ./build/qemu-system-x86_64 -nographic -plugin ./build/contrib/plugins/libstoptrigger,icount=1000000 -plugin ./build/tests/tcg/plugins/libinsn -d plugin | ||
|
||
build-macos-x86_64: | ||
needs: checkapply | ||
runs-on: macos-13 | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- run: brew install --quiet $(brew deps --include-build qemu) | ||
# on macos, werror is not on by default | ||
- run: ./configure --enable-werror && ninja -C build | ||
- run: ./build/qemu-system-x86_64 -nographic -plugin ./build/contrib/plugins/libstoptrigger,icount=1000000 -plugin ./build/tests/tcg/plugins/libinsn -d plugin | ||
|
||
build-macos-aarch64: | ||
needs: checkapply | ||
runs-on: macos-14 | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- run: brew install --quiet $(brew deps --include-build qemu) | ||
# on macos, werror is not on by default | ||
- run: ./configure --enable-werror && ninja -C build | ||
- run: ./build/qemu-system-x86_64 -nographic -plugin ./build/contrib/plugins/libstoptrigger,icount=1000000 -plugin ./build/tests/tcg/plugins/libinsn -d plugin | ||
|
||
build-misc: | ||
needs: checkapply | ||
runs-on: ubuntu-24.04 | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- run: > | ||
podman run --init --rm -it -v $(pwd):$(pwd) -w $(pwd) | ||
docker.io/pbolinaro/qemu-ci:debian | ||
bash -cx './configure --disable-user --disable-system --enable-docs --enable-tools && ninja -C build install' | ||
build-32bits: | ||
needs: checkapply | ||
runs-on: ubuntu-24.04 | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- run: > | ||
podman run --init --rm -it -v $(pwd):$(pwd) -w $(pwd) | ||
docker.io/pbolinaro/qemu-ci:debian-i686-cross | ||
bash -cx './configure $QEMU_CONFIGURE_OPTS && ninja -C build install' | ||
build-big-endian: | ||
needs: checkapply | ||
runs-on: ubuntu-24.04 | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- run: > | ||
podman run --init --rm -it -v $(pwd):$(pwd) -w $(pwd) | ||
docker.io/pbolinaro/qemu-ci:debian-s390x-cross | ||
bash -cx './configure $QEMU_CONFIGURE_OPTS && ninja -C build install' | ||
build-debug: | ||
needs: checkapply | ||
runs-on: ubuntu-24.04 | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- run: > | ||
podman run --init --rm -it -v $(pwd):$(pwd) -w $(pwd) | ||
docker.io/pbolinaro/qemu-ci:debian | ||
bash -cx './configure --enable-debug --enable-asan --enable-ubsan && ninja -C build install' | ||
- run: > | ||
podman run --init --rm -it -v $(pwd):$(pwd) -w $(pwd) | ||
docker.io/pbolinaro/qemu-ci:debian | ||
./build/qemu-system-x86_64 -nographic -plugin ./build/contrib/plugins/libstoptrigger,icount=1000000 -plugin ./build/tests/tcg/plugins/libinsn -d plugin | ||
build-static: | ||
needs: checkapply | ||
runs-on: ubuntu-24.04 | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- run: > | ||
podman run --init --rm -it -v $(pwd):$(pwd) -w $(pwd) | ||
docker.io/pbolinaro/qemu-ci:debian | ||
bash -cx './configure --disable-system --disable-tools --disable-guest-agent --disable-docs --static && ninja -C build install' | ||
build-tsan: | ||
needs: checkapply | ||
runs-on: ubuntu-24.04 | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- run: > | ||
podman run --init --rm -it -v $(pwd):$(pwd) -w $(pwd) | ||
docker.io/pbolinaro/qemu-ci:debian | ||
bash -cx './configure --enable-tsan && ninja -C build install' | ||
build-clang: | ||
needs: checkapply | ||
runs-on: ubuntu-24.04 | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- run: > | ||
podman run --init --rm -it -v $(pwd):$(pwd) -w $(pwd) | ||
docker.io/pbolinaro/qemu-ci:debian | ||
bash -cx './configure --cxx=clang++ --cc=clang --host-cc=clang && ninja -C build install' | ||
build-clang-latest: | ||
needs: checkapply | ||
runs-on: ubuntu-24.04 | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- run: > | ||
podman run --init --rm -it -v $(pwd):$(pwd) -w $(pwd) | ||
docker.io/pbolinaro/qemu-ci:debian | ||
bash -cx 'LLVM_VERSION=19 && apt update && apt install -y lsb-release wget software-properties-common gnupg && wget https://apt.llvm.org/llvm.sh && bash llvm.sh ${LLVM_VERSION} && ./configure --cxx=clang++-${LLVM_VERSION} --cc=clang-${LLVM_VERSION} --host-cc=clang-${LLVM_VERSION} && ninja -C build install' | ||
build-rust: | ||
needs: checkapply | ||
runs-on: ubuntu-24.04 | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- run: > | ||
podman run --init --rm -it -v $(pwd):$(pwd) -w $(pwd) | ||
docker.io/pbolinaro/qemu-ci:fedora-rust-nightly | ||
bash -cx './configure $QEMU_CONFIGURE_OPTS --enable-rust && ninja -C build install' | ||
build-disable-tcg: | ||
needs: checkapply | ||
runs-on: ubuntu-24.04 | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- run: > | ||
podman run --init --rm -it -v $(pwd):$(pwd) -w $(pwd) | ||
docker.io/pbolinaro/qemu-ci:debian | ||
bash -cx './configure --disable-tcg && ninja -C build install' | ||
build-disable-kvm: | ||
needs: checkapply | ||
runs-on: ubuntu-24.04 | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- run: > | ||
podman run --init --rm -it -v $(pwd):$(pwd) -w $(pwd) | ||
docker.io/pbolinaro/qemu-ci:debian | ||
bash -cx './configure --disable-kvm && ninja -C build install' | ||
build-disable-tcg-kvm-for-xen: | ||
needs: checkapply | ||
runs-on: ubuntu-24.04 | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- run: > | ||
podman run --init --rm -it -v $(pwd):$(pwd) -w $(pwd) | ||
docker.io/pbolinaro/qemu-ci:debian | ||
bash -cx './configure --disable-tcg --disable-kvm && ninja -C build install' | ||
check-tcg: | ||
needs: checkapply | ||
runs-on: ubuntu-24.04 | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- run: > | ||
podman run --init --rm -it -v $(pwd):$(pwd) -w $(pwd) | ||
docker.io/pbolinaro/qemu-ci:debian-all-test-cross | ||
bash -cx './configure $QEMU_CONFIGURE_OPTS --enable-debug-tcg && ninja -C build' | ||
- run: > | ||
podman run --init --privileged --rm -it -v $(pwd):$(pwd) -w $(pwd) | ||
docker.io/pbolinaro/qemu-ci:debian-all-test-cross | ||
bash -cx "make -k check-tcg" | ||
# run all meson tests, including functional. Run -j1 to avoid sporadic issues. | ||
check: | ||
needs: checkapply | ||
runs-on: ubuntu-24.04 | ||
steps: | ||
- uses: actions/checkout@v4 | ||
# we use image with download cache filled. Solves servers flakiness. | ||
- run: > | ||
podman run --init --rm -it -v $(pwd):$(pwd) -w $(pwd) | ||
docker.io/pbolinaro/qemu-ci:debian-precache-tests | ||
bash -cx './configure --enable-debug-tcg && ninja -C build' | ||
- run: sudo chown $USER:$USER /dev/kvm | ||
- run: > | ||
podman run --init --privileged --rm -it -v /dev/kvm:/dev/kvm -v $(pwd):$(pwd) -w $(pwd) | ||
docker.io/pbolinaro/qemu-ci:debian-precache-tests | ||
bash -cx "make -k check SPEED=thorough" | ||
check-avocado: | ||
needs: checkapply | ||
runs-on: ubuntu-24.04 | ||
steps: | ||
- uses: actions/checkout@v4 | ||
# add more time for all tests | ||
- run: sed -i -e 's/timeout = .*/timeout = 3600/' $(find tests/avocado/ -type f) | ||
# we use image with download cache filled. Solves servers flakiness. | ||
- run: > | ||
podman run --init --rm -it -v $(pwd):$(pwd) -w $(pwd) | ||
docker.io/pbolinaro/qemu-ci:debian-precache-tests | ||
bash -cx './configure --enable-debug-tcg && ninja -C build' | ||
- run: sudo chown $USER:$USER /dev/kvm | ||
- run: > | ||
podman run --init --privileged --rm -it -v /dev/kvm:/dev/kvm -v $(pwd):$(pwd) -w $(pwd) | ||
docker.io/pbolinaro/qemu-ci:debian-precache-tests | ||
bash -cx "make -k check-avocado" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
on: | ||
schedule: | ||
- cron: '0 6 * * *' | ||
workflow_dispatch: | ||
|
||
permissions: write-all | ||
|
||
jobs: | ||
build_container: | ||
runs-on: ubuntu-latest | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
# cd tests/docker/dockerfiles/ | ||
# ls *docker | sed -e 's/.docker//' | tr '\n' ',' | ||
# remove: debian-bootstrap,debian-toolchain | ||
container: [alpine,centos9,debian-all-test-cross,debian-amd64-cross,debian-arm64-cross,debian-armhf-cross,debian,debian-hexagon-cross,debian-i686-cross,debian-legacy-test-cross,debian-loongarch-cross,debian-mips64el-cross,debian-mipsel-cross,debian-ppc64el-cross,debian-riscv64-cross,debian-s390x-cross,debian-tricore-cross,debian-xtensa-cross,fedora,fedora-rust-nightly,fedora-win64-cross,opensuse-leap,python,ubuntu2204] | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- run: make docker-image-${{matrix.container}} RUNC=podman V=1 | ||
- run: podman tag qemu/${{matrix.container}} docker.io/pbolinaro/qemu-ci:${{matrix.container}} | ||
- run: podman login -u pbolinaro -p ${{secrets.DOCKERHUB_PASSWORD}} | ||
- run: podman push docker.io/pbolinaro/qemu-ci:${{matrix.container}} | ||
|
||
build_container_debian-precache-tests: | ||
runs-on: ubuntu-latest | ||
steps: | ||
# we clean up runner first, to get more disk space | ||
- run: docker system prune -af && sudo rm -rf /opt/* | ||
- uses: actions/checkout@v4 | ||
- run: make docker-image-debian RUNC=podman V=1 | ||
# fill download cache for functional and check-avocado | ||
# running check-avocado without any qemu binary will only download data | ||
# in /root/avocado | ||
- run: > | ||
podman run -it -v $(pwd):$(pwd) -w $(pwd) qemu/debian | ||
./precache_tests.sh | ||
# commit result as a new image. Cache will be in /root/.cache and /root/avocado | ||
- run: podman commit "$(podman ps -aq)" docker.io/pbolinaro/qemu-ci:debian-precache-tests | ||
- run: podman login -u pbolinaro -p ${{secrets.DOCKERHUB_PASSWORD}} | ||
- run: podman push docker.io/pbolinaro/qemu-ci:debian-precache-tests | ||
|
||
keepalive-job: | ||
name: Keepalive Workflow | ||
if: ${{ always() }} | ||
needs: build_container | ||
runs-on: ubuntu-latest | ||
permissions: | ||
contents: write | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- uses: gautamkrishnar/keepalive-workflow@v2 | ||
with: | ||
use_api: false |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
on: | ||
schedule: | ||
- cron: '*/10 * * * *' | ||
workflow_dispatch: | ||
|
||
permissions: write-all | ||
|
||
jobs: | ||
push_new_series: | ||
runs-on: ubuntu-latest | ||
concurrency: | ||
group: push_new_series | ||
cancel-in-progress: true | ||
steps: | ||
- name: checkout | ||
uses: actions/checkout@v3 | ||
with: | ||
# a PAT must be generated with workflow permission, else it's not | ||
# possible to push any change for those files | ||
# https://docs.github.com/en/actions/writing-workflows/choosing-when-your-workflow-runs/triggering-a-workflow#triggering-a-workflow-from-a-workflow | ||
token: ${{ secrets.WORKFLOW_COMMIT_TOKEN }} | ||
- run: git fetch -a origin --unshallow || true | ||
- run: git config user.name "GitHub Actions Bot" | ||
- run: git config user.email "<bot@github.com>" | ||
- run: git config advice.detachedHead false | ||
- run: sudo pip install b4 | ||
- run: ./push_new_series.sh | ||
|
||
keepalive-job: | ||
name: Keepalive Workflow | ||
if: ${{ always() }} | ||
needs: push_new_series | ||
runs-on: ubuntu-latest | ||
permissions: | ||
contents: write | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- uses: gautamkrishnar/keepalive-workflow@v2 | ||
with: | ||
use_api: false |
Oops, something went wrong.