Skip to content

Add fwTPM example for Microchip PolarFire SoC MPFS250T Video Kit#2

Open
dgarske wants to merge 1 commit into
mainfrom
fwtpm_polarfire_miv
Open

Add fwTPM example for Microchip PolarFire SoC MPFS250T Video Kit#2
dgarske wants to merge 1 commit into
mainfrom
fwtpm_polarfire_miv

Conversation

@dgarske
Copy link
Copy Markdown
Member

@dgarske dgarske commented Apr 29, 2026

Bare-metal wolfTPM fwTPM server on U54 hart 4 in M-mode under HSS AMP boot. Linux runs on harts 1-3 and talks to the server through a shared-memory mailbox + console ring + TIS register block in L2 LIM (0x08000000). A linux-client/ tree provides a /dev/mem mailbox dump + smoke test.

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Note

Copilot was unable to run its full agentic suite in this review.

Adds a PolarFire SoC MPFS250T Video Kit fwTPM example: a bare-metal fwTPM server on U54 hart 4 (M-mode) booted via HSS AMP, plus Linux-side /dev/mem helper scripts for mailbox/reg inspection and a smoke test.

Changes:

  • Introduces bare-metal firmware project (startup, linker script, HALs, fwTPM init + TIS server loop) for U54 hart 4.
  • Defines shared-memory IPC layout (mailbox + console ring + TIS regs) and Linux client scripts to inspect/drive it.
  • Adds HSS payload generator config, device-tree overlay, and build/ignore scaffolding.

Reviewed changes

Copilot reviewed 17 out of 18 changed files in this pull request and generated 7 comments.

Show a summary per file
File Description
Microchip/fwtpm-polarfire-miv/firmware/fwtpm-u54/user_settings.h wolfSSL/wolfTPM compile-time configuration for the bare-metal fwTPM server
Microchip/fwtpm-polarfire-miv/firmware/fwtpm-u54/startup.S Minimal M-mode startup, BSS clear, and trap breadcrumbs to shared memory
Microchip/fwtpm-polarfire-miv/firmware/fwtpm-u54/mpfs_hal.h Minimal platform HAL definitions (UART, CLINT mtime accessor, prototypes)
Microchip/fwtpm-polarfire-miv/firmware/fwtpm-u54/mpfs_hal.c UART + console ring backend, newlib _write, and stubs needed by fwTPM
Microchip/fwtpm-polarfire-miv/firmware/fwtpm-u54/mpfs250-u54.ld Linker script for hart-4 DDR placement and correct .sbss/.bss zeroing
Microchip/fwtpm-polarfire-miv/firmware/fwtpm-u54/mpfs-fwtpm-disable-cpu4.dts DTS overlay intended to keep Linux off hart 4 for AMP fwTPM
Microchip/fwtpm-polarfire-miv/firmware/fwtpm-u54/main.c fwTPM server entry point: HAL setup, init, then TIS server loop
Microchip/fwtpm-polarfire-miv/firmware/fwtpm-u54/linux-client/fwtpm_smoke.py Linux smoke test to validate shared-memory visibility and mailbox flow
Microchip/fwtpm-polarfire-miv/firmware/fwtpm-u54/linux-client/fwtpm_mbox_dump.py Linux mailbox + console ring + trap-field decoder via /dev/mem
Microchip/fwtpm-polarfire-miv/firmware/fwtpm-u54/fwtpm_tis_mpfs.h Shared IPC layout + fences + CLINT IPI macros used by server/client
Microchip/fwtpm-polarfire-miv/firmware/fwtpm-u54/fwtpm_tis_mpfs.c MPFS-specific fwTPM TIS HAL implementation using the shared region
Microchip/fwtpm-polarfire-miv/firmware/fwtpm-u54/fwtpm_nv_ram.c Volatile RAM-backed NV HAL for fwTPM
Microchip/fwtpm-polarfire-miv/firmware/fwtpm-u54/fwtpm_clock_mpfs.c Clock HAL wired to platform time source
Microchip/fwtpm-polarfire-miv/firmware/fwtpm-u54/amp-fwtpm.yaml HSS payload generator AMP boot configuration
Microchip/fwtpm-polarfire-miv/firmware/fwtpm-u54/Makefile Bare-metal build for fwTPM server and required wolfSSL/wolfTPM sources
Microchip/fwtpm-polarfire-miv/firmware/fwtpm-u54/.gitignore Ignores local firmware build artifacts
Microchip/fwtpm-polarfire-miv/README.md End-to-end documentation: architecture, memory layout, build + usage
.gitignore Adds ignore rules for this example’s build outputs

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread Microchip/fwtpm-polarfire-miv/firmware/fwtpm-u54/user_settings.h
Comment thread Microchip/fwtpm-polarfire-miv/firmware/fwtpm-u54/fwtpm_tis_mpfs.c Outdated
Comment thread Microchip/fwtpm-polarfire-miv/firmware/fwtpm-u54/fwtpm_tis_mpfs.c Outdated
Comment thread Microchip/fwtpm-polarfire-miv/firmware/fwtpm-u54/mpfs-fwtpm-disable-cpu4.dts Outdated
Comment thread Microchip/fwtpm-polarfire-miv/firmware/fwtpm-u54/fwtpm_clock_mpfs.c Outdated
Comment thread Microchip/fwtpm-polarfire-miv/firmware/fwtpm-u54/fwtpm_tis_mpfs.c Outdated
Comment thread Microchip/fwtpm-polarfire-miv/firmware/fwtpm-u54/fwtpm_tis_mpfs.c Outdated
Bare-metal wolfTPM fwTPM server on U54 hart 4 in M-mode under HSS
AMP boot. Linux runs on harts 1-3 and talks to the server through a
shared-memory mailbox + console ring + TIS register block in L2 LIM
(0x08000000). A linux-client/ tree provides a /dev/mem mailbox dump
+ smoke test.
@dgarske dgarske force-pushed the fwtpm_polarfire_miv branch from 33d8ec8 to 8f961ed Compare April 29, 2026 22:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants