All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Cédric Le Goater" <clg@redhat.com>
To: qemu-arm@nongnu.org, qemu-devel@nongnu.org
Cc: "Kane Chen" <kane_chen@aspeedtech.com>,
	"Cédric Le Goater" <clg@redhat.com>
Subject: [PULL 05/21] hw/misc/aspeed_sbc: Derive secure boot state from OTP config
Date: Thu, 15 Oct 2026 14:21:35 +0200	[thread overview]
Message-ID: <20261015122151.889017-6-clg@redhat.com> (raw)
In-Reply-To: <20261015122151.889017-1-clg@redhat.com>

From: Kane Chen <kane_chen@aspeedtech.com>

The secure boot state is currently controlled by the
"signing-settings" machine property instead of the OTP configuration.

Derive SECURE_BOOT_EN and R_QSR from the OTP configuration when the
registers are read.

Remove the "signing-settings" property as the secure boot state is now
derived from OTP.

Signed-off-by: Kane-Chen-AS <kane_chen@aspeedtech.com>
Reviewed-by: Cédric Le Goater <clg@redhat.com>
Link: https://lore.kernel.org/qemu-devel/20260918065347.3713868-4-kane_chen@aspeedtech.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>
---
 include/hw/misc/aspeed_sbc.h |  2 --
 hw/misc/aspeed_sbc.c         | 22 +++++++++++++---------
 2 files changed, 13 insertions(+), 11 deletions(-)

diff --git a/include/hw/misc/aspeed_sbc.h b/include/hw/misc/aspeed_sbc.h
index b210ffb8aa86..7f3fa7062f96 100644
--- a/include/hw/misc/aspeed_sbc.h
+++ b/include/hw/misc/aspeed_sbc.h
@@ -32,8 +32,6 @@ OBJECT_DECLARE_TYPE(AspeedSBCState, AspeedSBCClass, ASPEED_SBC)
 struct AspeedSBCState {
     SysBusDevice parent;
 
-    uint32_t signing_settings;
-
     MemoryRegion iomem;
 
     uint32_t regs[ASPEED_SBC_NR_REGS];
diff --git a/hw/misc/aspeed_sbc.c b/hw/misc/aspeed_sbc.c
index 6cec9ad3daf0..ad4c2b4b1d0c 100644
--- a/hw/misc/aspeed_sbc.c
+++ b/hw/misc/aspeed_sbc.c
@@ -79,6 +79,8 @@
 #define MODE_REGISTER_A             (0x3000)
 #define MODE_REGISTER_B             (0x5000)
 
+static bool aspeed_sbc_otp_read(AspeedSBCState *s, uint32_t otp_addr);
+
 static uint64_t aspeed_sbc_read(void *opaque, hwaddr addr, unsigned int size)
 {
     AspeedSBCState *s = ASPEED_SBC(opaque);
@@ -102,8 +104,16 @@ static uint64_t aspeed_sbc_read(void *opaque, hwaddr addr, unsigned int size)
             val &= ~ABR_EN;
         }
 
+        if (aspeed_otp_read_config(&s->otp, 0) & BIT(1)) {
+            val |= SECURE_BOOT_EN;
+        } else {
+            val &= ~SECURE_BOOT_EN;
+        }
+
         return val;
     }
+    case R_QSR:
+        return aspeed_otp_read_config(&s->otp, 0);
     default:
         return s->regs[addr];
     }
@@ -406,16 +416,11 @@ static void aspeed_sbc_reset_hold(Object *obj, ResetType type)
     memset(s->regs, 0, sizeof(s->regs));
 
     /*
-     * ABR_EN is derived from OTP on every read, see aspeed_sbc_read().
-     * Set secure boot enabled with RSA4096_SHA256.
+     * ABR_EN and SECURE_BOOT_EN are derived from OTP on every read, see
+     * aspeed_sbc_read(), since the SBC status register is just a
+     * reflection of the OTP fuse state.
      */
     s->regs[R_STATUS] = OTP_IDLE | OTP_MEM_IDLE;
-
-    if (s->signing_settings) {
-        s->regs[R_STATUS] &= SECURE_BOOT_EN;
-    }
-
-    s->regs[R_QSR] = s->signing_settings;
 }
 
 static void aspeed_sbc_instance_init(Object *obj)
@@ -468,7 +473,6 @@ static const VMStateDescription vmstate_aspeed_sbc = {
 };
 
 static const Property aspeed_sbc_properties[] = {
-    DEFINE_PROP_UINT32("signing-settings", AspeedSBCState, signing_settings, 0),
     DEFINE_PROP_LINK("sram", AspeedSBCState, sram,
                      TYPE_MEMORY_REGION, MemoryRegion *),
 };
-- 
2.56.0



  parent reply	other threads:[~2026-10-15 12:22 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-15 12:21 [PULL 00/21] aspeed queue Cédric Le Goater
2026-10-15 12:21 ` [PULL 01/21] hw/misc/aspeed_hace: Fix OOB read in has_padding() Cédric Le Goater
2026-10-15 12:21 ` [PULL 02/21] tests/qtest/aspeed-acry: Allocate SRAM buffers on the heap Cédric Le Goater
2026-10-15 12:21 ` [PULL 03/21] hw/nvram/aspeed_otp, hw/misc/aspeed_sbc: Consolidate OTP layout definitions Cédric Le Goater
2026-10-15 12:21 ` [PULL 04/21] hw/misc/aspeed_sbc: Derive ABR state from OTP config straps Cédric Le Goater
2026-10-15 12:21 ` Cédric Le Goater [this message]
2026-10-15 12:21 ` [PULL 06/21] hw/arm/aspeed: Sort device IDs alphabetically Cédric Le Goater
2026-10-15 12:21 ` [PULL 07/21] tests/functional/aarch64/test_aspeed_ast2700a2: Add I2C test for IO expander 1 Cédric Le Goater
2026-10-15 12:21 ` [PULL 08/21] MAINTAINERS: Update ASPEED BMCs reviewers Cédric Le Goater
2026-10-15 12:21 ` [PULL 09/21] hw/misc/unimp: Add create_unimplemented_devices() helper Cédric Le Goater
2026-10-15 12:21 ` [PULL 10/21] hw/arm/aspeed_ast2400: Use a table for unimplemented devices Cédric Le Goater
2026-10-15 12:21 ` [PULL 11/21] hw/arm/aspeed_ast2600: " Cédric Le Goater
2026-10-15 12:21 ` [PULL 12/21] hw/arm/aspeed_ast27x0: " Cédric Le Goater
2026-10-15 12:21 ` [PULL 13/21] hw/arm/aspeed_ast10x0: " Cédric Le Goater
2026-10-15 12:21 ` [PULL 14/21] hw/arm/aspeed_ast1040: " Cédric Le Goater
2026-10-15 12:21 ` [PULL 15/21] hw/arm/aspeed: Remove unused unimplemented device fields Cédric Le Goater
2026-10-15 12:21 ` [PULL 16/21] hw/arm/aspeed_ast27x0: Use a table for unimplemented devices for SSP/TSP Cédric Le Goater
2026-10-15 12:21 ` [PULL 17/21] hw/arm/aspeed_coprocessor: Remove unused unimplemented device fields Cédric Le Goater
2026-10-15 12:21 ` [PULL 18/21] hw/arm/aspeed_ast1700: Use a table for unimplemented devices Cédric Le Goater
2026-10-15 12:21 ` [PULL 19/21] hw/arm/aspeed_ast1700: Remove unused unimplemented device field Cédric Le Goater
2026-10-15 12:21 ` [PULL 20/21] hw/arm/aspeed: Remove unused aspeed_mmio_map_unimplemented() Cédric Le Goater
2026-10-15 12:21 ` [PULL 21/21] tests/functional: give the set_machine probe VM the test workdir Cédric Le Goater
2026-10-15 14:55 ` [PULL 00/21] aspeed queue Richard Henderson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20261015122151.889017-6-clg@redhat.com \
    --to=clg@redhat.com \
    --cc=kane_chen@aspeedtech.com \
    --cc=qemu-arm@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.