Skip to content

Update QEMU implementation #157

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 175 commits into from
Jul 22, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
175 commits
Select commit Hold shift + click to select a range
6429788
[ot] hw/opentitan: ot_ibex_wrapper: replace legacy reset API with Res…
rivos-eblot Apr 17, 2025
c74b14f
[ot] target/riscv: Revert to upstream PMP implementation
rbradford Feb 10, 2025
b9481cf
FROMLIST: target/riscv: Respect mseccfg.RLB bit for TOR mode PMP entry
rbradford Feb 10, 2025
32fd03c
FROMLIST: target/riscv: pmp: don't allow RLB to bypass rule privileges
loiclefort Mar 13, 2025
87c92bb
FROMLIST: target/riscv: pmp: move Smepmp operation conversion into a …
loiclefort Mar 13, 2025
d010aaa
FROMLIST: target/riscv: pmp: fix checks on writes to pmpcfg in Smepmp…
loiclefort Mar 13, 2025
096f057
FROMLIST: target/riscv: pmp: exit csr writes early if value was not c…
loiclefort Mar 13, 2025
11be082
FROMLIST: target/riscv: pmp: remove redundant check in pmp_is_locked
loiclefort Mar 13, 2025
84bdfe1
[ot] hw/opentitan: ot_hmac.c: code cleanup
rivos-eblot Jul 7, 2025
9748253
[ot] hw/opentitan: ot_kmac: replace public functions with class funct…
rivos-eblot Apr 22, 2025
d5ed0f4
[ot] hw/opentitan: ot_csrng: replace public functions with class func…
rivos-eblot Apr 22, 2025
467e334
[ot] hw/opentitan: ot_vmapper: add support to disable execution
rivos-eblot Apr 9, 2025
1289538
[ot] hw/opentitan: ot_otp: SRAM ifetch depends on OTP file presence.
rivos-eblot Apr 23, 2025
edf73c2
[ot] hw/opentitan: ot_sram_ctrl: delegate instruction fetch managemen…
rivos-eblot Jul 22, 2025
434e44d
[ot] hw/riscv: ot_darjeeling, ot_earlgrey: connect SRAMs to ot_vmapper.
rivos-eblot Apr 23, 2025
ecdcd45
[ot] hw/opentitan: ot_flash_ctrl: delegate instruction fetch manageme…
rivos-eblot Apr 28, 2025
28bfe57
[ot] hw/riscv: ot_earlgrey: connect flash controller to ot_vmapper.
rivos-eblot Apr 28, 2025
770e76f
[ot] hw/opentitan: ot_i2c: only emit guest_errors if I2C timings are …
rivos-eblot Apr 28, 2025
540863e
[ot] hw/opentitan: ot_pwrmgr: rename PwrMgr versions
rivos-eblot Apr 29, 2025
5d7754f
[ot] hw/riscv: ot_darjeeling, ot_earlgrey: update PwrMgr versions
rivos-eblot Apr 29, 2025
5e3834c
[ot] hw/opentitan: ot_rstmgr: add support for multiple RstMgr versions
rivos-eblot Apr 29, 2025
632567d
[ot] hw/riscv: ot_darjeeling, ot_earlgrey: select RstMgr versions
rivos-eblot Apr 29, 2025
71ca5b8
[ot] hw/opentitan: ot_vmapper: use a trace message to report ifetch c…
rivos-eblot Apr 30, 2025
b193671
[ot] hw/opentitan: ot_vmapper: fix a bug with the CentOS workaround
rivos-eblot May 12, 2025
c6fa5b7
[ot] python/qemu: ot.pyot.executer: add more trace shortcuts
rivos-eblot May 13, 2025
cf5b3ff
[ot] hw/riscv: dtm: add DTM capture/update traces
rivos-eblot May 7, 2025
3e05b08
[ot] hw/riscv: dtm: replace legacy reset API with Resettable API
rivos-eblot May 7, 2025
b894ff2
[ot] hw/riscv: dm: replace legacy reset API with Resettable API
rivos-eblot May 7, 2025
142d8cc
[ot] hw/risv: ibex_common: new API retrieve function name from its ad…
rivos-eblot May 13, 2025
4c0c47a
[ot] hw/opentitan: ot_ibex_wrapper: improve execution update trace
rivos-eblot May 14, 2025
f72a6ac
[ot] hw/opentitan: ot_ibex_wrapper: when lc-ignore is enforced, ignor…
rivos-eblot May 14, 2025
928e20b
[ot] python/qemu: ot.dm.dm: improve DM status reporting
rivos-eblot Jun 2, 2025
5928cb4
[ot] hw/riscv: dm: fix long-lasting typo
rivos-eblot Jun 3, 2025
9a5122b
[ot] hw/riscv: dm: fix and improve log and trace messages
rivos-eblot Jun 3, 2025
cbeb5ff
[ot] hw/riscv: dm: do not blindly access debugger requests
rivos-eblot Jun 3, 2025
8db0af3
[ot] scripts/opentitan: dtm: add an idle option
rivos-eblot Jun 3, 2025
09f0b14
[ot] hw/opentitan: ot_socdbg_ctrl: improve trace message
rivos-eblot Jun 3, 2025
52cb70a
[ot] hw/opentitan: ot_lc_ctrl: fix transition matrix generation
rivos-eblot Jun 3, 2025
a983ed9
[ot] scripts/opentitan: pt.pyot.context: add an optional timeout
rivos-eblot Jun 4, 2025
51e582b
[ot] hw/opentitan: ot_socdbg_ctrl: A0_DEBUG & HALT_CPU_BOOT input sig…
rivos-eblot Jun 4, 2025
254e9f0
[ot] hw/opentitan: ot_otp_dj: add trace messages
rivos-eblot Jun 4, 2025
0903563
[ot] hw/opentitan: ot_ibex_wrapper: fix a major regression
rivos-eblot Jun 4, 2025
0f2285e
[ot] hw/opentitan: ot_csrng: simplify IRQ trace message
rivos-eblot Jun 4, 2025
fc32dd9
[ot] hw/opentitan: ot_sram_ctrl: get rid of the BH to switch memory r…
rivos-eblot Jun 4, 2025
7f72c0d
[ot] scripts/opentitan: otptool.py: add HW digest generation
rivos-eblot Jun 4, 2025
cb1196a
[ot] hw/opentitan: ot_mbx: add missing ot_id info in trace message
rivos-eblot Jun 5, 2025
8ab5e95
[ot] hw/opentitan: ot_otp_dj: add missing ot_id info from trace and l…
rivos-eblot Jun 5, 2025
299b07c
[ot] hw/opentitan: ot_otp_dj: fix alert generation and add irq and al…
rivos-eblot Jun 5, 2025
543b103
[ot] hw/opentitan: ot_otp_dj: add DAI status on DAI request denial
rivos-eblot Jun 5, 2025
7f093d9
[ot] hw/opentitan: ot_otp_dj: fix clang-format issue
rivos-eblot Jun 5, 2025
b498aec
[ot] hw/opentitan: ot_otp_dj: disable all partitions on fatal error
rivos-eblot Jun 5, 2025
60b6ca7
[ot] hw/opentitan: ot_otp_dj: add an option to early abort VM on LC e…
rivos-eblot Jun 5, 2025
6aa29d1
[ot] python/qemu: ot.pyot.executer: be sure to flush all sub-loggers
rivos-eblot Jun 5, 2025
fd41af1
[ot] hw/riscv: ot_darjeeling: fix indentation
rivos-eblot Jun 5, 2025
917dc36
[ot] scripts/opentitan: tktool.py: add a new tool to manage LC tokens
rivos-eblot Jun 6, 2025
d8a562c
[ot] scripts/opentitan: otptool.py: fix invalid class names
rivos-eblot Jun 6, 2025
30fe854
[ot] scripts/opentitan: otptool.py: add LC token update feature.
rivos-eblot Jun 6, 2025
4aa8ece
[ot] hw/opentitan: ot_lc_ctrl: update broadcast signals on each state…
rivos-eblot Jun 10, 2025
f677030
[ot] hw/opentitan: ot_otp_dj: use QEMU_CLOCK_VIRTUAL_RT for programmi…
rivos-eblot Jun 10, 2025
ec7c5ae
[ot] hw/riscv: dm: rework dmstatus content generation
rivos-eblot Jun 11, 2025
921054c
[ot] hw/opentitan: ot_ibex_wrapper: force a disable event to maintain…
rivos-eblot Jun 11, 2025
1d2f5ab
[ot] python/qemu: ot.lc_ctrl.lcdmi: fix volatile_raw_unlock getter
rivos-eblot Jun 11, 2025
32e98c2
[ot] hw/opentitan: ot_lc_ctrl: fix signal broadcast on volatile trans…
rivos-eblot Jun 11, 2025
bff633e
[ot] hw/opentitan: ot_ibex_common: code clean up
rivos-eblot Jun 12, 2025
de20930
[ot] hw/core: cpu: replace held_in_reset with disabled
rivos-eblot Jun 12, 2025
f915467
[ot] hw/riscv: dm: replace held_in_reset with disabled
rivos-eblot Jun 12, 2025
046167c
[ot] hw/riscv: ibex_common: replace held_in_reset with disabled
rivos-eblot Jun 12, 2025
a9b2a7c
[ot] hw/riscv: ot_ibex_wrapper: replace held_in_reset with disabled
rivos-eblot Jun 12, 2025
40014b2
[ot] hw/riscv: ot_earlgrey, ot_darjeeling: add missing hart reset on …
rivos-eblot Jun 12, 2025
cc7e6ae
[ot] hw/riscv: darjeeling, earlgrey: use CPU disabled rather than ass…
rivos-eblot Jun 12, 2025
89c680a
[ot] hw/opentitan: ot_rom_ctrl: move ROM load and check into a dedica…
rivos-eblot Jun 12, 2025
983718a
[ot] hw/opentitan: darjeeling, earlgrey: trigger ROM load and check e…
rivos-eblot Jun 12, 2025
f0d0da2
[ot] python/qemu: ot.dm, ot.dtm: decrease log verbosity of some traces
rivos-eblot Jun 16, 2025
f2ebefc
[ot] scripts/opentitan: dtm.py: add an optional delay before terminat…
rivos-eblot Jun 16, 2025
7e65f34
[ot] scripts/opentitan: pyot.py: add an option to handle ASAN output
rivos-eblot Jun 16, 2025
b1e9748
[ot] scripts/opentitan: pyot.py: recover hidden error message
rivos-eblot Jun 18, 2025
6976446
[ot] scripts/opentitan: pyot.py: --otcfg may now be repeated.
rivos-eblot Jun 23, 2025
022960f
[ot] scripts/opentitan: cfggen.py: add parsing of clock definitions
rivos-eblot Jun 19, 2025
2379158
[ot] scripts/opentitan: cfggen.py: parse module input clocks
rivos-eblot Jun 26, 2025
605667f
[ot] hw/opentitan: ot_clock_ctrl: create a new interface to manage cl…
rivos-eblot Jun 23, 2025
3ae4fcb
[ot] hw/riscv: ibex_common: create new helpers to define clock connec…
rivos-eblot Jun 18, 2025
41743ec
[ot] hw/riscv: ibex_clock_src: create a new interface to manage clocks
rivos-eblot Jun 18, 2025
bfef364
[ot] hw/opentitan: ot_common: create clock connections on device conf…
rivos-eblot Jun 18, 2025
7a42c4d
[ot] hw/riscv: ibexdemo: create clock connections on device configura…
rivos-eblot Jun 18, 2025
0bc31df
[ot] hw/opentitan: ot_ast_dj: implement ot_clock_src interface
rivos-eblot Jun 23, 2025
e43a9af
[ot] hw/opentitan: ot_ast_dj: implement ibex_clock_src interface
rivos-eblot Jun 19, 2025
2878a81
[ot] hw/opentitan: ot_ast_eg: implement ibex_clock_src and ot_clock_c…
rivos-eblot Jun 23, 2025
7622b7e
[ot] hw/opentitan: ot_clkmgr: add clock configuration and distribution
rivos-eblot Jun 24, 2025
c4fba48
[ot] hw/opentitan: ot_pwrmgr: add basic clock enablement to FSM
rivos-eblot Jun 19, 2025
00e631f
[ot] hw/opentitan: ot_hmac: add initial dynamic clock management
rivos-eblot Jun 24, 2025
9e4fdfb
[ot] hw/opentitan: ot_uart: add initial dynamic clock management
rivos-eblot Jun 20, 2025
c4c1178
[ot] hw/opentitan: ot_spi_host: add initial dynamic clock management
rivos-eblot Jun 20, 2025
b4c4ad1
[ot] hw/opentitan: ot_i2c_dj: add initial dynamic clock management
rivos-eblot Jun 20, 2025
46f565d
[ot] hw/opentitan: ot_timer: add initial dynamic clock management
rivos-eblot Jun 20, 2025
6d68faf
[ot] hw/opentitan: ot_aon_timer: add initial dynamic clock management
rivos-eblot Jun 20, 2025
5b52c90
[ot] hw/opentitan: ot_alert: add initial dynamic clock management
rivos-eblot Jun 20, 2025
4d19bec
[ot] hw/opentitan: ot_aes: add ot_id trace information
rivos-eblot Jun 24, 2025
6c7f3ab
[ot] hw/opentitan: ot_aes: add initial dynamic clock management
rivos-eblot Jun 24, 2025
19fd068
[ot] hw/opentitan: ot_otbn: add ot_id trace information
rivos-eblot Jun 24, 2025
9f6bd1d
[ot] hw/opentitan: ot_otbn: add initial dynamic clock management
rivos-eblot Jun 24, 2025
800e39f
[ot] hw/opentitan: ot_kmac: add ot_id trace information
rivos-eblot Jun 24, 2025
0389405
[ot] hw/opentitan: ot_kmac: add initial dynamic clock management
rivos-eblot Jun 24, 2025
641f4ab
[ot] hw/riscv: ot_darjeeling: remove all static clock definitions
rivos-eblot Jun 18, 2025
95aa0a8
[ot] hw/riscv: ot_earlgrey: remove all static clock definitions
rivos-eblot Jun 18, 2025
206e173
[ot] docs/opentitan: darjeeling, earlgrey: update emulation status
rivos-eblot Jun 27, 2025
812f404
[ot] hw/opentitan: ot_clkmgr: fix clang-tidy warning with toupper()
rivos-eblot Jul 1, 2025
4cfa72d
[ot] hw/opentitan: ot_rom_ctrl: disable clang-tidy warning (Linux-only)
rivos-eblot Jul 1, 2025
1b3113d
[ot] scripts/opentitan: clang-tidy: update to LLVM 20.x
rivos-eblot Jul 1, 2025
35aa1fc
[ot] scripts/opentitan: clang-format: update to LLVM 20.x
rivos-eblot Jul 1, 2025
a0544a2
[ot] .github: workflows: update to LLVM 20.x
rivos-eblot Jul 7, 2025
e69c543
[ot] hw/opentitan: ot_otp_be_if: define OTP characteristics retrieval…
rivos-eblot Jul 2, 2025
44791f6
[ot] hw/opentitan: ot_otp_be: define OTP backend characteristics
rivos-eblot Jul 2, 2025
9dbe072
[ot] hw/opentitan: ot_otp_dj: use OTP backend timings to fake delays
rivos-eblot Jul 2, 2025
5f34095
[ot] hw/opentitan: ot_entropy_src: fix a bug in entropy fill-in function
rivos-eblot Jul 7, 2025
e00cb0c
[ot] scripts/opentitan: pyot: improve ROM support
rivos-eblot Jul 3, 2025
9e878be
[ot] python/qemu: jtagtools.bits: fix to_bytestream implementation
rivos-eblot Jul 3, 2025
bfd6946
[ot] scripts/opentitan: clang-tidy.yml: discard buggy rule
rivos-eblot Jul 7, 2025
bed1594
[ot] hw/opentitan: multiple components: use C-style comment style (QE…
rivos-eblot Jul 2, 2025
d731926
[ot] scripts/opentitan: cfggen.py: add LC ctrl keymgr parameters
rivos-eblot Oct 29, 2024
ed299ed
[ot] scripts/opentitan: cfggen.py: add OTP default invalid partition …
rivos-eblot Oct 29, 2024
1a5a5d7
[ot] scripts/opentitan: cfggen.py: add KeyMgr parameters
rivos-eblot Dec 6, 2024
bbecae4
[ot] hw/opentitan: ot_lc_ctrl: add keymgr properties
rivos-eblot Oct 29, 2024
c0a661e
[ot] hw/opentitan: ot_otp_dj: add invalid default partition properties
rivos-eblot Oct 29, 2024
eeff54f
[ot] hw/opentitan: ot_kmac: fix KMAC for app interface
loiclefort Sep 5, 2023
1a1f3d2
[ot] hw/opentitan: ot_rom_ctrl: add public function to retrieve ROM d…
loiclefort Mar 26, 2025
8af03a4
[ot] hw/opentitan: ot_otp: encode all hw_cfg data as byte arrays
loiclefort Mar 26, 2025
b5912af
[ot] hw/opentitan: ot_otp_dj: store current LC broadcast for later use
loiclefort Mar 26, 2025
263bdc8
[ot] hw/opentitan: ot_otp_dj: fix creator/owner LC broadcast handling
loiclefort Mar 26, 2025
ae66c97
[ot] hw/opentitan: ot_otp: add function to retrieve KeyMgr secrets
loiclefort Mar 26, 2025
41e5a2a
[ot] hw/opentitan: ot_lc_ctrl: add function to retrieve KeyMgr div va…
loiclefort Mar 26, 2025
c6a4d26
[ot] hw/opentitan: ot_kmac: fix some clang-tidy errors
loiclefort Mar 26, 2025
5b63f54
[ot] hw/opentitan: ot_kmac: add traces for unimplemented entropy config
loiclefort Mar 26, 2025
8eb2521
[ot] hw/opentitan: ot_keymgr_dpe: add initial implementation
loiclefort Mar 26, 2025
55e67a9
[ot] hw/opentitan: ot_kmac: add Key Manager DPE support
loiclefort Mar 26, 2025
af2e6de
[ot] hw/opentitan: ot_darjeeling: add Key Manager DPE
loiclefort Mar 26, 2025
a5fc5d0
[ot] hw/opentitan: ot_kmac: constify some function parameters
loiclefort Jul 4, 2025
89d790a
[ot] hw/opentitan: trace-events: fix trace messages
loiclefort Jul 16, 2025
67229a8
[ot] hw/opentitan: ot_common: add hex string utility functions
rivos-eblot Jul 8, 2025
3b7f52c
[ot] hw/opentitan: ot_flash: remove dead code
rivos-eblot Jul 8, 2025
6f62283
[ot] hw/opentitan: ot_aes: replace hex string debug function
rivos-eblot Jul 8, 2025
bb98fe4
[ot] hw/opentitan: ot_keymgr_dpe: replace hex string debug function
rivos-eblot Jul 8, 2025
a466594
[ot] hw/opentitan: ot_lc_ctrl: replace hex string debug function
rivos-eblot Jul 8, 2025
4bb3108
[ot] hw/opentitan: ot_otp_dj: replace hex string debug function
rivos-eblot Jul 8, 2025
543d5ed
[ot] hw/opentitan: ot_present: replace hex string debug function
rivos-eblot Jul 8, 2025
7b6d1b7
[ot] hw/opentitan: ot_sram_ctrl: replace hex string debug function
rivos-eblot Jul 8, 2025
f6f6034
[ot] hw/opentitan: ot_kmac: use OT common idiom to define KMAC interface
rivos-eblot Jul 7, 2025
bdefda7
[ot] hw/opentitan: ot_key_sink: define a new interface for key sidelo…
rivos-eblot Jul 7, 2025
d2e09a6
[ot] hw/opentitan: ot_otbn: implement the OtKeySinkIf interface
rivos-eblot Jul 7, 2025
82f67a9
[ot] hw/opentitan: ot_aes: implement the OtKeySinkIf interface
rivos-eblot Jul 7, 2025
7c564ac
[ot] hw/opentitan: ot_kmac: implement the OtKeySinkIf interface
rivos-eblot Jul 8, 2025
b96ad6e
[ot] hw/opentitan: ot_keymgr_dpe: use OtKeyMgrIf for AES, KMAC and OTBN
rivos-eblot Jul 8, 2025
c17f4af
[ot] hw/riscv: ot_darjeeling, ot_earlgrey: update keymgr_dpe connections
rivos-eblot Jul 8, 2025
5b18594
[ot] hw/opentitan: ot_keymgr_dpe: fix debug trace for ROM digests
loiclefort Jul 17, 2025
02d3241
[ot] hw/opentitan: ot_rom_ctrl: compute digests for ELF/BIN ROMs
loiclefort Jul 17, 2025
83a5299
[ot] hw/opentitan: ot_kmac: add trace for incoming app requests
loiclefort Jul 17, 2025
fce326a
[ot] hw/opentitan: ot_rom_ctrl: add trace for computed ROM digests
loiclefort Jul 17, 2025
097bbc9
[ot] hw/opentitan: ot_keymgr_dpe: switch compile-time traces to runtime
loiclefort Jul 18, 2025
43b4bdd
[ot] python/qemu: ot.util.file: rename guess_test_type as guess_file_…
rivos-eblot Jul 17, 2025
61bda7a
[ot] python/qemu: ot.util.file: add 'hex' file support to guess_file_…
rivos-eblot Jul 17, 2025
dec0703
[ot] python/qemu: ot.otp: add get_field, decode_field, get_partition …
rivos-eblot Jul 17, 2025
fabbdbf
[ot] python/qemu: ot.util.prince: add a basic PRINCE cipher implement…
rivos-eblot Jul 17, 2025
fc10bcc
[ot] python/qemu: ot.rom.image: add a new module to handle ROM scramb…
rivos-eblot Jul 17, 2025
156f7c6
[ot] python/qemu: ot.util.misc: add a custom ArgError exception
rivos-eblot Jul 17, 2025
135e989
[ot] docs/opentitan: pymod.md: add missing modules
rivos-eblot Jul 17, 2025
7194d50
[ot] python/qemu: ot.pyot.execute: fix test listing for virtual tests
rivos-eblot Jul 18, 2025
04bcc34
[ot] scripts/opentitan: pyot.py: add an option to copy log messages t…
rivos-eblot Jul 18, 2025
2dc1e0b
[ot] scripts/opentitan: pyot.py: `-t` may now be used to specified tr…
rivos-eblot Jul 18, 2025
72c09d2
[ot] python/qemu: ot.pyot.executer: `log_file` option may be used for…
rivos-eblot Jul 21, 2025
39a2c06
[ot] python/qemu: ot.pyot.context: classify context log messages
rivos-eblot Jul 21, 2025
83eaeaf
[ot] scripts/opentitan: keymgr-dpe.py: add a new script for KeyManage…
rivos-eblot Jul 17, 2025
2930b30
[ot] hw/opentitan: ot_aes: fix key sideloading
loiclefort Jul 21, 2025
38524fb
[ot] hw/riscv: ot_earlgrey: re-align clock frequencies with RTL
loiclefort Jul 22, 2025
cead76d
[ot] docs/opentitan: keymgr-dpe.md: fix documentation
rivos-eblot Jul 22, 2025
5b23c88
[ot] .gitlab-ci.d: opentitan: update BM tests
loiclefort Jul 22, 2025
0f1e87b
[ot] scripts: opentitan: allow additional commit prefix
loiclefort Jul 22, 2025
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
16 changes: 8 additions & 8 deletions .github/workflows/build_test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@ jobs:
run: |
wget -qO- https://apt.llvm.org/llvm-snapshot.gpg.key |
sudo tee /etc/apt/trusted.gpg.d/apt.llvm.org.asc &&
sudo add-apt-repository "deb http://apt.llvm.org/noble/ llvm-toolchain-noble-19 main" &&
sudo add-apt-repository "deb http://apt.llvm.org/noble/ llvm-toolchain-noble-20 main" &&
sudo apt-get update &&
sudo apt-get install -y git make pkg-config clang-19 cmake ninja-build python3 rust-all \
sudo apt-get install -y git make pkg-config clang-20 cmake ninja-build python3 rust-all \
libpixman-1-dev libglib2.0-dev
- name: Check out QEMU
uses: actions/checkout@v4
Expand All @@ -30,7 +30,7 @@ jobs:
git clean -dffx subprojects
mkdir build-clang
(cd build-clang &&
../configure --cc=clang-19 --disable-werror --disable-install-blobs \
../configure --cc=clang-20 --disable-werror --disable-install-blobs \
--target-list=riscv32-softmmu,riscv64-softmmu)
- name: Build
run: |
Expand Down Expand Up @@ -73,9 +73,9 @@ jobs:
run: |
wget -qO- https://apt.llvm.org/llvm-snapshot.gpg.key |
sudo tee /etc/apt/trusted.gpg.d/apt.llvm.org.asc &&
sudo add-apt-repository "deb http://apt.llvm.org/noble/ llvm-toolchain-noble-19 main" &&
sudo add-apt-repository "deb http://apt.llvm.org/noble/ llvm-toolchain-noble-20 main" &&
sudo apt-get update &&
sudo apt-get install -y clang-format-19
sudo apt-get install -y clang-format-20
- name: Check out QEMU
uses: actions/checkout@v4
- name: Check C code format
Expand Down Expand Up @@ -106,9 +106,9 @@ jobs:
run: |
wget -qO- https://apt.llvm.org/llvm-snapshot.gpg.key |
sudo tee /etc/apt/trusted.gpg.d/apt.llvm.org.asc &&
sudo add-apt-repository "deb http://apt.llvm.org/noble/ llvm-toolchain-noble-19 main" &&
sudo add-apt-repository "deb http://apt.llvm.org/noble/ llvm-toolchain-noble-20 main" &&
sudo apt-get update &&
sudo apt-get install -y clang-tidy-19 libglib2.0-dev
sudo apt-get install -y clang-tidy-20 libglib2.0-dev
- name: Check out QEMU
uses: actions/checkout@v4
- name: Download QEMU source artifacts
Expand Down Expand Up @@ -166,7 +166,7 @@ jobs:
run: |
wget -qO- https://apt.llvm.org/llvm-snapshot.gpg.key |
sudo tee /etc/apt/trusted.gpg.d/apt.llvm.org.asc &&
sudo add-apt-repository "deb http://apt.llvm.org/noble/ llvm-toolchain-noble-19 main" &&
sudo add-apt-repository "deb http://apt.llvm.org/noble/ llvm-toolchain-noble-20 main" &&
sudo apt-get update &&
sudo apt-get install -y git make pkg-config gcc cmake ninja-build python3 rust-all \
libpixman-1-dev libglib2.0-dev
Expand Down
2 changes: 1 addition & 1 deletion .gitlab-ci.d/opentitan/qemu-ot.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
variables:
BAREMETAL_REF: "b0-250325-1"
BAREMETAL_REF: "b0-250722-1"
QEMU_BUILD_OPTS: "--disable-install-blobs"

include:
Expand Down
2 changes: 1 addition & 1 deletion accel/tcg/cpu-exec.c
Original file line number Diff line number Diff line change
Expand Up @@ -677,7 +677,7 @@ static inline void tb_add_jump(TranslationBlock *tb, int n,
static inline bool cpu_handle_halt(CPUState *cpu)
{
#ifndef CONFIG_USER_ONLY
if (unlikely(cpu->held_in_reset)) {
if (unlikely(cpu->disabled)) {
return true;
}

Expand Down
10 changes: 9 additions & 1 deletion docs/opentitan/cfggen.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@ the QEMU binary.

````text
usage: cfggen.py [-h] [-T {darjeeling,earlgrey}] [-o CFG] [-c SV] [-l SV]
[-t HJSON] [-s SOCID] [-C COUNT] [-v] [-d]
[-t HJSON] [-s SOCID] [-C COUNT] [-a {config,clock}] [-v]
[-d]
[OTDIR]

OpenTitan QEMU configuration file generator.
Expand All @@ -33,6 +34,10 @@ Modifiers:
-s, --socid SOCID SoC identifier, if any
-C, --count COUNT SoC count (default: 1)

Actions:
-a, --action {config,clock}
Action(s) to perform, default: config

Extras:
-v, --verbose increase verbosity
-d, --debug enable debug mode
Expand All @@ -44,6 +49,9 @@ Extras:
repository to analyze. It is used to generate the path towards the required files to parse, each of
which can be overidden with options `-c`, `-l` and `-t`.

* `-a` specify one or more actions to execute. Default is to generate a configuration file. It is
also possible to emit the list of module input clocks in a plain text format.

* `-C` specify how many SoCs are used on the platform

* `-c` alternative path to the `otp_ctrl_part_pkg.sv` file
Expand Down
25 changes: 18 additions & 7 deletions docs/opentitan/darjeeling.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,11 @@ Please check out `hw/opentitan/ot_ref.log`

Devices in this group implement subset(s) of the real HW.

* Clock Manager
* Runtime-configurable device, through properties
* Manage clock dividers, groups, hints, software configurable clocks
* Propagate clock signals from source (AST, ...) to devices
* Hint management and measurement are not implemented
* DMA
* Only memory-to-memory transfers (inc. hashing) are supported, Handshake modes are not supported
* Flash controller
Expand All @@ -54,6 +59,9 @@ Devices in this group implement subset(s) of the real HW.
* A CharDev backend can be used to get GPIO outputs and update GPIO inputs,
* KMAC
* Side loading is not supported
* Ibex wrapper
* random source (connected to CSR), FPGA version, virtual remapper, fetch enable can be controlled
from Power Manager
* Lifecycle controller
* [LC controller](lc_ctrl_dmi.md) can be accessed through JTAG using a DM-TL bridge
* Escalation is not supported
Expand All @@ -73,11 +81,7 @@ features are implemented.

* AST
* entropy source only (from host source)
* Clock Manager
* Clock hints only
* Ibex wrapper
* random source (connected to CSR), FPGA version, virtual remapper, fetch enable can be controlled
from Power Manager
* configurable clock sources
* Reset Manager
* HW and SW reset requests are supported
* Pinmux
Expand Down Expand Up @@ -221,8 +225,12 @@ There are two modes to handle address remapping, with different limitations:

### OTBN

* `-global ot-otbn.logfile=<filename>` dumps executed instructions on OTBN core into the specified
filename. Beware that is even further slows down execution speed, which could likely result into
* `-global ot-otbn.logfile=<filename>` output OTBN execution message to the specified logfile. When
_logasm_ option (see below) is not enabled, only execution termination and error messages are
logged. `stderr` can be used to log the messages to the standard error stream instead of a file.

* `-global ot-otbn.logasm=<true|false>` dumps executed instructions on OTBN core into the _logfile_
filename. Beware that this further slows down execution speed, which could likely result in the
guest application on the Ibex core to time out.

### OTP
Expand All @@ -231,6 +239,9 @@ There are two modes to handle address remapping, with different limitations:
file used as the OpenTitan OTP image. This _RAW_ file should have been generated with the
[`otptool.py`](otptool.md) tool.

* on LC escalate reception, it is possible to early abort VM execution. Specify
`-global ot-otp-dj.fatal_escalate=true` to enable this feature.

### SoC Debug controller

SoC debug controller manages SoC debug policies based on external signals - such as GPIO, Power
Expand Down
22 changes: 18 additions & 4 deletions docs/opentitan/dtm.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,9 @@ Module to access the Ibex core.
## Usage

````text
usage: dtm.py [-h] [-S SOCKET] [-t] [-l IR_LENGTH] [-b BASE] [-I] [-c CSR]
[-C CSR_CHECK] [-x] [-X] [-a ADDRESS] [-m {read,write}]
usage: dtm.py [-h] [-S SOCKET] [-t] [-w DELAY] [-l IR_LENGTH]
[--idcode IDCODE] [--dtmcs DTMCS] [--dmi DMI] [-b BASE] [-I]
[-c CSR] [-C CSR_CHECK] [-x] [-X] [-a ADDRESS] [-m {read,write}]
[-s SIZE] [-f FILE] [-D DATA] [-e ELF] [-F] [-v] [-d]

Debug Transport Module tiny demo
Expand All @@ -16,13 +17,16 @@ options:
-h, --help show this help message and exit

Virtual machine:
-S, --socket SOCKET unix:path/to/socket or tcp:host:port (default
tcp:localhost:3335)
-S, --socket SOCKET connection (default tcp:localhost:3335)
-t, --terminate terminate QEMU when done
-w, --idle DELAY stay idle before interacting with DTM

DMI:
-l, --ir-length IR_LENGTH
bit length of the IR register (default: 5)
--idcode IDCODE define the ID code (default: 1)
--dtmcs DTMCS define an alternative DTMCS register (default: 0x10)
--dmi DMI define an alternative DMI register (default: 0x11)
-b, --base BASE define DMI base address (default: 0x0)

Info:
Expand Down Expand Up @@ -107,6 +111,10 @@ Extras:

* `-v` can be repeated to increase verbosity of the script, mostly for debug purpose.

* `-w` pause execution on start up before communication with the remote DTM. This enables QEMU VM
to initialize and boot the guest SW before attempting a communication. It can be repeated once,
the second value being used to delay the termination of the VM when the `-t` option is used.

* `-X` do not attempt to resume normal execution of the hart once DTM operation have been completed.
This can be useful for example when the QEMU VM is started with `-S` and no application code has
been loaded in memory: once the DTM operations are completed, the default behavior is to resume
Expand All @@ -117,6 +125,12 @@ Extras:
* `-x` execute the loaded ELF application from its entry point. Requires the `--elf` option.
Application is executed even with `-X` defined.

* `--idcode` specify an alternate IDCODE value

* `--dmi` specify an alternate address for the DMI register

* `--dtmcs` specify an alternate address for the DTMCS register

### Examples

Running QEMU VM with the `-chardev socket,id=taprbb,host=localhost,port=3335,server=on,wait=off`
Expand Down
24 changes: 14 additions & 10 deletions docs/opentitan/earlgrey.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ EarlGrey 2.5.2-RC0

* AES
* missing side-loading
* Alert controller
* ping mechanism is not supported
* AON Timer
* CSRNG
* EDN
Expand All @@ -32,6 +34,11 @@ EarlGrey 2.5.2-RC0

Devices in this group implement subset(s) of the real HW.

* Clock Manager
* Runtime-configurable device, through properties
* Manage clock dividers, groups, hints, software configurable clocks
* Propagate clock signals from source (AST, ...) to devices
* Hint management and measurement are not implemented
* Flash controller
* read-only features only
* OTP controller
Expand All @@ -41,6 +48,9 @@ Devices in this group implement subset(s) of the real HW.
* AES CTR not supported (uses xoroshiro128++ reseeded from entropy src)
* [GPIO](gpio.md)
* A CharDev backend can be used to get GPIO outputs and update GPIO inputs,
* Ibex wrapper
* random source (connected to CSR), FPGA version, virtual remapper, fetch enable can be controlled
from Power Manager
* KMAC
* Side loading is not supported
* [ROM controller](rom_ctrl.md)
Expand All @@ -54,13 +64,11 @@ In this group, device CSRs are supported (w/ partial or full access control & ma
features are implemented.

* AST
* entropy source only (from host source)
* Clock Manager
* Clock hints only
* Ibex wrapper
* random source (connected to CSR), FPGA version, virtual remapper
* configurable clock sources
* GPIO
* Connections with pinmux not implemented (need to be ported from [Darjeeling](darjeeling.md) version)
* Lifecycle controller
* only forwards LC state from OTP
* only forwards LC state from OTP (need to be ported from [Darjeeling](darjeeling.md) version)
* Power Manager
* Fast FSM is partially supported, Slow FSM is bypassed
* Interactions with other devices (such as the Reset Manager) are limited
Expand All @@ -70,12 +78,8 @@ features are implemented.
Devices in this group are mostly implemented with a RAM backend or real CSRs but do not implement
any useful feature (only allow guest test code to execute as expected).

* Alert controller
* Key manager
* KMAC (in development)
* GPIO
* Pinmux
* Power Manager
* Sensor

## Running the virtual machine
Expand Down
Loading