OpenDevicePartnership / OpenDevicePartnership/patina

[Task]: Remaining Perf Work

Open
#467 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

state:needs-owner type:feature-request urgency:medium
Dominant language
Rust
Stars
544
Forks
54
Avg merge
1d 8h
Merged PRs (30d)
30

Description

Feature Overview
  1. Ability to publish the FBPT as a fallback if perf tracing is "disabled".
  2. Install the FPDT when perf tracing is "enabled".
  3. Add FPDT report status code listeners. Make sure all status code are picked up.
  • Note: We do not support S3 in Patina. As a result, we do not support lock box (lock box is more generic than S3 but that was the main use case, and we've rejected it).

  • Note: Try to avoid the EFI_FIRMWARE_PERFORMANCE_VARIABLE_NAME variable implementation in Rust code. We should not share pointers between modules using UEFI variables.

  • Goal: We eliminate all C performance - DxeCorePerformanceLib (already done), DxePerformanceLib (already done), FirmwarePerformanceDataTableDxe.


Today:

  • DxeCorePerformanceLib - Used by the DXE core only to acquire perf records from MM with the communicate service and from PEI using the HOB list. Installs the performance protocol. Installs the gPerformanceProtocolGuid EFI configuration table.
  • DxePerformanceLib - Used by non-core DXE drivers to report performance records. Wraps the performance protocol so they don't have to deal with it.
  • FirmwarePerformanceDataTableDxe - Installs the FBPT (in case it is not already installed), FPDT, and S3PT.
Urgency

Medium

Are you going to implement the feature request?

Someone else needs to implement the feature

Do you need maintainer feedback?

No maintainer feedback needed

Anything else?

No response

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by locating the Rust implementations corresponding to DxeCorePerformanceLib, DxePerformanceLib, and FirmwarePerformanceDataTableDxe, then trace the existing FBPT, FPDT, and S3PT installation paths. Compare the current behavior with the three requested capabilities and verify that every FPDT status code is handled; done means the C performance components are eliminated without relying on S3, lock box, or EFI performance-variable pointer sharing.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
embedded-iot
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.