Skip to content

W2: Own interrupt lines and peripherals per partition on the AArch64 SPMC #67

Open

Description

@aidangarske

Context

Plan item W2 of the AArch64 level 3 plan (tracking #46). The Armv8-M ports own each partition's interrupt lines and refuse partition access to SPM peripherals; the AArch64 SPMC needs the same before its manifests can declare isolation level 3.

Origin

#29 rebase onto main's level 3 work; the AArch64 level 3 plan

What is needed

  • wt_arch_secure_irq_claim on the AArch64 SPMC routes through the shared wt_irq_claim: disable, Secure Group 0, clear pending, read back, fail closed (GICv2 and GICv3)
  • wt_platform_sp_peripherals for qemuvirt and versal: no partition owns MMIO today, so the table refuses every DEVICE resource
  • QEMU twins of the M33MU periphspneg (a partition reads the Secure UART and faults) and periphneg (the Normal world probes Secure MMIO; SKIP on versal-virt, which has no XPPU model, see Add a Versal hardware port with an XMPU and XPPU Normal-world fence #45)

Blockers and dependencies

None. The interrupt claim is done on wolfTrust-dev2; the twins follow it.

Acceptance criteria

  • periphspneg passes on virt gicv2 a35, virt gicv3 a72 and versal-virt with both engines; periphneg passes on virt and SKIPs on versal-virt
  • ffa-sint and the ACS interrupts group stay green
  • Skoll review and review-security clean on the change

Activity

  1. added
    todoDeferred work tracked for later
    P1High: blocks a claim, release, or port milestone; next up
    on Oct 2, 2026
  2. aidangarske commented on Oct 2, 2026

    @aidangarske
    MemberAuthor

    W2 progress, on wolfTrust-dev2 (#29):

    • f5d35dcc Claim AArch64 secure interrupts fail closed with clear-pending and readback.

    Remaining: the refuse-all partition peripheral table and the periphneg and periphspneg twins. They are in review now and land in the next push to #29.

  3. aidangarske commented on Oct 3, 2026

    @aidangarske
    MemberAuthor

    Landed on wolfTrust-dev2 (#29):

    wt_platform_sp_peripherals stays an empty refuse-all table: no AArch64 partition owns MMIO. The ACS watchdog (INTID 56) is the SPM's virtual timer watchdog, and the secure UART belongs to the SPM.

    Remaining: nothing for W2 beyond the versal XPPU fence, which is tracked in #45.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    P1High: blocks a claim, release, or port milestone; next uptodoDeferred work tracked for later

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions