Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
80 commits
Select commit Hold shift + click to select a range
ed19277
Rebooting the system emulation efforts based on UNIX domain sockets
JOOpdenhoevel Jun 26, 2026
ce2894c
Further iteration on the architecture
JOOpdenhoevel Jun 29, 2026
84b8fc1
Adding a reference document for the ZMQ model process protocol
JOOpdenhoevel Jun 30, 2026
772e0de
Fleshing out the QDMA mechanisms
JOOpdenhoevel Jun 30, 2026
bb02ae5
Specing the BAR subsystem
JOOpdenhoevel Jul 1, 2026
99c07d0
Passing the ZMQ address to the model executable via a CLI argument
JOOpdenhoevel Jul 1, 2026
31e8ba0
Writing tweaks
JOOpdenhoevel Jul 1, 2026
51067d0
Moving the model control workers into their own subsyste
JOOpdenhoevel Jul 1, 2026
ac96f17
Decentralizing setup and teardown procedures
JOOpdenhoevel Jul 1, 2026
38d1320
Explicitly handling model process deaths and forced UNIX socket disco…
JOOpdenhoevel Jul 1, 2026
6b70f16
Removing the last todos
JOOpdenhoevel Jul 1, 2026
4e66fb7
Fleshing out an implementation plan
JOOpdenhoevel Jul 1, 2026
bb47fef
Final architecture tweaks
JOOpdenhoevel Jul 1, 2026
89befa0
Small amendments to the implementation plan
JOOpdenhoevel Jul 1, 2026
fcc3121
slash_emu: Step 1 — project scaffolding and test harness
JOOpdenhoevel Jul 1, 2026
cb74d5d
slash_emu: Step 2 — socket transport and protocol framing
JOOpdenhoevel Jul 1, 2026
5fe0b4a
slash_emu: Step 3 — configuration and CLI
JOOpdenhoevel Jul 1, 2026
872ee04
slash_emu: Step 4 — VBIN and system map parsing
JOOpdenhoevel Jul 3, 2026
646d36c
slash_emu: Step 5 — ZeroMQ model client
JOOpdenhoevel Jul 3, 2026
adc13da
slash_emu: Step 6 — Model process lifecycle and reconfiguration
JOOpdenhoevel Jul 3, 2026
b0d10a8
slash_emu: Step 7 — BAR memfds
JOOpdenhoevel Jul 6, 2026
88dfb41
slash_emu: Step 8 — Model control workers
JOOpdenhoevel Jul 6, 2026
29932e0
slash_emu: Step 9 — BAR/device-info subsystem (PF2)
JOOpdenhoevel Jul 6, 2026
c291936
slash_emu: Step 10 — QDMA subsystem (PF1)
JOOpdenhoevel Jul 6, 2026
7d52144
slash_emu: Step 11 — Accelerator lifecycle and hotplug
JOOpdenhoevel Jul 7, 2026
3c750c9
slash_emu: refactor daemon onto systemd (sd-event/sd_notify), drop wh…
JOOpdenhoevel Jul 7, 2026
b026414
slash_sysemu: rename from slash_emu (system emulation, not FPGA emula…
JOOpdenhoevel Jul 7, 2026
12577f3
slash_sysemu: build a default VBIN from source and use it as the star…
JOOpdenhoevel Jul 7, 2026
7e5758f
slash_sysemu: package the daemon as a systemd service (deb + rpm)
JOOpdenhoevel Jul 7, 2026
3b0ca4c
slash_sysemu: fix Step-11 generation-guard race (generation collision…
JOOpdenhoevel Jul 7, 2026
e005af8
libslash/slash_sysemu: Step 12 — socket transport, sysemu E2E, and da…
JOOpdenhoevel Jul 8, 2026
439981d
slash_sysemu + libslash: fix fd-reuse shutdown() clobber; add real-da…
JOOpdenhoevel Jul 9, 2026
e1bfc27
Compacting the progress section of the architecture document
JOOpdenhoevel Jul 9, 2026
70a070a
examples/00_axilite: add libslash-only raw E2E app; wire xsim libs fo…
JOOpdenhoevel Jul 9, 2026
0fe66cf
slash_sysemu: fix kernels never finishing (absolute base vs BAR offset)
JOOpdenhoevel Jul 9, 2026
ad2cccc
Updating the progress in the architecture document
JOOpdenhoevel Jul 9, 2026
70ff998
Deferring VRTD and VRT integration from the work plan
JOOpdenhoevel Jul 9, 2026
2245fd6
Documenting system emulation
JOOpdenhoevel Jul 9, 2026
53f88af
Folding the design descriptions of the architecture document into in-…
JOOpdenhoevel Jul 10, 2026
544946a
Adding a workflow for unit-testing the sysemu daemon
JOOpdenhoevel Jul 10, 2026
ee2bc18
Removing hardcoded filepaths
JOOpdenhoevel Jul 10, 2026
223a9bc
Merge remote-tracking branch 'Xilinx/dev' into feature/system_emulati…
JOOpdenhoevel Jul 10, 2026
2af411f
Updating the system emulation daemon to handle the aperture size argu…
JOOpdenhoevel Jul 10, 2026
f6174df
Updating the kernel driver to report the BDF on QDMA's ctl device
JOOpdenhoevel Jul 10, 2026
175e969
Merge branch 'dev' into feature/system_emulation_via_sockets
quetric Jul 22, 2026
3501016
Fix QDMA keyhole apertures
quetric Jul 22, 2026
c721bc0
Unifying the qdma test suites
JOOpdenhoevel Jul 27, 2026
5feaf40
Correctly sorting the functions in the qdma module
JOOpdenhoevel Jul 28, 2026
ed5b80f
[libslash] Removing the usages of the old qdma mock system
JOOpdenhoevel Jul 28, 2026
5745d9e
[libslash] Starting to sketch a built-in mock server for QDMA
JOOpdenhoevel Jul 28, 2026
c25a29e
[libslash] Expanding the mock sock system to support its first IOCTL
JOOpdenhoevel Jul 29, 2026
aaa34ad
[libslash] Integrating mock sock into the QDMA system
JOOpdenhoevel Jul 29, 2026
b1624ca
[libslash/mock_sock] Adding qpair support
JOOpdenhoevel Jul 29, 2026
76221b1
[slash/mock_sock] A bit of documentation
JOOpdenhoevel Jul 29, 2026
bd39e52
[libslash/mock_sock] Implementing FD passing and host buffer creation
JOOpdenhoevel Jul 30, 2026
541f116
Making internal functions static
JOOpdenhoevel Jul 30, 2026
d2ee58c
[libslash/mocksock] Moving functionality out of the main function
JOOpdenhoevel Jul 30, 2026
2abe6e8
[libslash/mock_sock] Missing documentation
JOOpdenhoevel Jul 30, 2026
9677f07
Merge remote-tracking branch 'Xilinx/dev' into feature/system_emulati…
JOOpdenhoevel Aug 4, 2026
aa0ff3c
[libslash/sock_mock] Properly flagging the output cmsg size
JOOpdenhoevel Aug 4, 2026
9527c37
[libslash/mock_sock] Making the QDMA endpoint state sharable
JOOpdenhoevel Aug 4, 2026
e8dcf56
[libslash/mock_sock] Moving the QDMA endpoint into it's own module
JOOpdenhoevel Aug 5, 2026
0b79232
[libslash/mock_sock_qdma] Adding the qpair endpoint
JOOpdenhoevel Aug 5, 2026
4a63f9b
Implementing the transfer IOCTL
JOOpdenhoevel Aug 5, 2026
934b7a5
[libslash/mock_sock] Removing dead code
JOOpdenhoevel Aug 5, 2026
4c06273
Sketching up the ctldev endpoint
JOOpdenhoevel Aug 5, 2026
6a00864
[libslash] Fixing the unit tests of the QDMA buffer creation
JOOpdenhoevel Aug 10, 2026
7ba8d5f
Updating the ctldev tests
JOOpdenhoevel Aug 10, 2026
18aea53
[libslash/ctldev] Exchanging the old mock backend with the new one
JOOpdenhoevel Aug 10, 2026
804bbfb
[libslash] Removing the old QDMA mock module
JOOpdenhoevel Aug 10, 2026
c8a9f12
[libslash] Further DRYing
JOOpdenhoevel Aug 13, 2026
58111a9
Further compacting the test suites
JOOpdenhoevel Aug 13, 2026
80a7015
[libslash] Closing small coverage gaps and fixing small bugs
JOOpdenhoevel Aug 13, 2026
be6c888
[VRTD] Fixing an edge-case and removing a outdated test case
JOOpdenhoevel Aug 14, 2026
236a362
[libslash/mock_sock_qdma] Implementing keyhole mode and the design wr…
JOOpdenhoevel Aug 14, 2026
b31a478
Merge remote-tracking branch 'Xilinx/dev' into feature/system_emulati…
JOOpdenhoevel Aug 14, 2026
9b44cb5
Running mock-based libslash tests in CI
JOOpdenhoevel Aug 14, 2026
d45f046
[libslash/mock_sock_qdma] Manually implementing allocate-on-demand
JOOpdenhoevel Aug 14, 2026
5b6e292
Merge remote-tracking branch 'Xilinx/dev' into feature/system_emulati…
JOOpdenhoevel Aug 17, 2026
13aef57
Merge remote-tracking branch 'Xilinx/dev' into feature/system_emulati…
JOOpdenhoevel Aug 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 54 additions & 0 deletions .github/workflows/libslash-unit-test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
# ##################################################################################################
# The MIT License (MIT)
# Copyright (c) 2025-2026 Advanced Micro Devices, Inc. All rights reserved.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy of this software
# and associated documentation files (the "Software"), to deal in the Software without restriction,
# including without limitation the rights to use, copy, modify, merge, publish, distribute,
# sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all copies or
# substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
# NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
# DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
# ##################################################################################################

name: libSLASH unit testing

on:
push:
branches:
- main
- dev
pull_request:

jobs:
vrtd_unit_tests:
runs-on: ubuntu-24.04
permissions: { contents: read }

steps:
- name: Checkout code
uses: actions/checkout@v6
with:
submodules: "true"

- name: Install dependencies
run: |
sudo apt update
sudo apt install -y cmake pkg-config ninja-build

- name: Build and run libslash unit tests
run: |
mkdir driver/libslash/build
cd driver/libslash/build
cmake -DCMAKE_BUILD_TYPE=Debug -DENABLE_SANITIZERS=ON -DLIBSLASH_BUILD_TESTS=ON ..
make unit_tests -j$(nproc)
ctest --output-on-failure --test-dir tests -E "(.*/driver)|(.*/sysemu)|(.*/implicit_driver)"

# Coverage not needed since the hardware paths won't be covered anyway.
79 changes: 79 additions & 0 deletions .github/workflows/sysemu-unit-test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
# ##################################################################################################
# The MIT License (MIT)
# Copyright (c) 2025 Advanced Micro Devices, Inc. All rights reserved.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy of this software
# and associated documentation files (the "Software"), to deal in the Software without restriction,
# including without limitation the rights to use, copy, modify, merge, publish, distribute,
# sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all copies or
# substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
# NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
# DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
# ##################################################################################################

name: Slash SysEmu unit testing

on:
push:
branches:
- main
- dev
pull_request:

jobs:
vrt_unit_tests:
runs-on: ubuntu-24.04
permissions: { contents: read }

steps:
- name: Checkout code
uses: actions/checkout@v6
with:
submodules: "true"

- name: Install dependencies
run: |
sudo apt-get update
sudo apt install -y cmake pkg-config ninja-build \
libxml2-dev libzmq3-dev cppzmq-dev libjsoncpp-dev zlib1g-dev \
libsystemd-dev libinih-dev libcli11-dev lcov python3-zmq

- name: Build and run normal unit tests, generate coverage reports
run: |
mkdir -p slash_sysemu/build/normal
cd slash_sysemu/build/normal
cmake -DSLASH_SYSEMU_BUILD_TESTS=1 -DENABLE_COVERAGE=1 ../..
make unit_tests -j$(nproc)
cd tests && ctest --output-on-failure -j$(nproc)
lcov --capture --directory . --output-file coverage.info \
--ignore-errors mismatch --ignore-errors negative
lcov --remove coverage.info \
'/usr/*' '*/_deps/*' '*/tests/*' \
--output-file coverage.filtered.info \
--ignore-errors unused
genhtml coverage.filtered.info --output-directory coverage-report
lcov --list coverage.filtered.info

- name: Upload coverage report
uses: actions/upload-artifact@v4
with:
name: sysemu-coverage-report
path: slash_sysemu/build/normal/coverage-report/

- name: Build and run unit tests with ASan and UBSan
run: |
mkdir -p slash_sysemu/build/sanitizers
cd slash_sysemu/build/sanitizers
cmake -DSLASH_SYSEMU_BUILD_TESTS=1 -DENABLE_ASAN=1 -DENABLE_UBSAN=1 ../..
make unit_tests -j$(nproc)
cd tests && ctest --output-on-failure -j$(nproc)



Loading