All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v4 0/4] Add ASPEED ACRY RSA model for the AST2600
@ 2026-09-01  8:15 Jamin Lin
  2026-09-01  8:15 ` [PATCH v4 1/4] hw/misc/aspeed_acry: Add ASPEED ACRY model Jamin Lin
                   ` (5 more replies)
  0 siblings, 6 replies; 7+ messages in thread
From: Jamin Lin @ 2026-09-01  8:15 UTC (permalink / raw)
  To: Cédric Le Goater, Peter Maydell, Steven Lee, Troy Lee,
	Kane Chen, Andrew Jeffery, Joel Stanley, Fabiano Rosas,
	Laurent Vivier, Paolo Bonzini, open list:ASPEED BMCs,
	open list:All patches CC here
  Cc: Jamin Lin, Troy Lee

This series adds a model of the ASPEED ACRY engine found on the AST2600
SoC, wires it into the SoC, and adds a qtest.

The ACRY engine performs RSA modular exponentiation (c = m^e mod n). It
DMAs the operands (data, exponent, and modulus) from guest DRAM and writes
the result to a dedicated 64 KiB SRAM region.

Guest firmware uses the engine for RSA signature verification during boot.
Without a model, the guest starts the engine and waits indefinitely for a
completion interrupt, causing the boot to hang.

The model uses QEMU's generic akcipher API to perform raw (unpadded) RSA.
Raw RSA is currently supported only by the libgcrypt backend, which can be
enabled alongside gnutls with -Dgcrypt=enabled, so a build does not have to
choose between the two. When raw RSA is unavailable, the engine still
completes and raises its interrupt, but returns an all-zero result. This
allows the guest's signature verification to fail cleanly instead of
hanging. The qtest is skipped when the selected crypto backend does not
support raw RSA.

Although the hardware documentation describes both RSA and ECDSA support,
ECDSA is known to be broken on this hardware and is therefore not modeled.

v1:
 1. Add ASPEED ACRY RSA model for the AST2600
 2. Add qtest for AST2600 ASPEED ACRY RSA model
 
v2:
 1. squash "Add the ACRY model to AspeedSoCState" into "Wire up the ACRY
    model"
 2. wrap the ACRY SRAM in a container mapped at offset 0 so the device
    addresses it by relative offset (drop the "sram-base" property)
 3. build the scattered SRAM byte offsets on the fly instead of caching
    them in per-instance lookup tables
 4. write the result with address_space_stl_le() and check the MemTxResult

v3:
  1. Return early when the DMA read of the operand buffer fails 
  2. Replace g_printerr with g_test_skip
  
v4:
  1. Remove unused macros.
  2. Dynamically allocate data and src_buf to reduce stack usage in aspeed_acry_do_rsa().
  3. Add a helper function to clear the result when aspeed_acry_do_rsa() fails.
  4. Add bounds checking to aspeed_acry_operand_offset() and replace magic numbers with
     compile-time constants.

Jamin Lin (4):
  hw/misc/aspeed_acry: Add ASPEED ACRY model
  hw/arm/aspeed_ast2600: Introduce the ACRY SRAM
  hw/arm/aspeed_ast2600: Wire up the ACRY model
  tests/qtest/aspeed-acry-test: Add RSA ModExp tests

 include/hw/arm/aspeed_soc.h    |   4 +
 include/hw/misc/aspeed_acry.h  |  39 +++
 hw/arm/aspeed_ast2600.c        |  34 +++
 hw/misc/aspeed_acry.c          | 481 +++++++++++++++++++++++++++++++++
 tests/qtest/aspeed-acry-test.c | 406 ++++++++++++++++++++++++++++
 hw/misc/meson.build            |   1 +
 hw/misc/trace-events           |   6 +
 tests/qtest/meson.build        |   5 +-
 8 files changed, 975 insertions(+), 1 deletion(-)
 create mode 100644 include/hw/misc/aspeed_acry.h
 create mode 100644 hw/misc/aspeed_acry.c
 create mode 100644 tests/qtest/aspeed-acry-test.c

-- 
2.53.0


^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2026-09-02  6:11 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-01  8:15 [PATCH v4 0/4] Add ASPEED ACRY RSA model for the AST2600 Jamin Lin
2026-09-01  8:15 ` [PATCH v4 1/4] hw/misc/aspeed_acry: Add ASPEED ACRY model Jamin Lin
2026-09-01  8:15 ` [PATCH v4 2/4] hw/arm/aspeed_ast2600: Introduce the ACRY SRAM Jamin Lin
2026-09-01  8:15 ` [PATCH v4 3/4] hw/arm/aspeed_ast2600: Wire up the ACRY model Jamin Lin
2026-09-01  8:15 ` [PATCH v4 4/4] tests/qtest/aspeed-acry-test: Add RSA ModExp tests Jamin Lin
2026-09-01 12:28 ` [PATCH v4 0/4] Add ASPEED ACRY RSA model for the AST2600 Cédric Le Goater
2026-09-02  6:11 ` Cédric Le Goater

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.