Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Cherry-Pick] UefiCpuPkg: Add PcdCpuSmmApSyncTimeout2 PCD #1096

Conversation

apop5
Copy link
Contributor

@apop5 apop5 commented Aug 7, 2024

Description

Cherry-Picking PCD definition from edk2. This does not change the basecore functionality to consume this pcd.

Provide the capability for platform to specifies the 2nd timeout value in microseconds for the BSP/AP in SMM to wait for one another to enter SMM.

The added interface can enhance the flexibility of timeout configuration. In some cases, certain processors may not be able to enter SMI, and prolonged waiting could lead to kernel soft/hard lockup. We have now defined two timeouts. The first timeout can be set to a smaller value to reduce the waiting period. Processors that are unable to enter SMI will be woken up through SMIIPL to enter SMI, followed by a second waiting period. The second timeout can be set to a larger value to prevent delays in processors entering SMI case due to the long instruction execution.

Cc: Ray Ni [email protected]
Cc: Rahul Kumar [email protected]
Cc: Gerd Hoffmann [email protected]

  • Impacts functionality?
    • Functionality - Does the change ultimately impact how firmware functions?
    • Examples: Add a new library, publish a new PPI, update an algorithm, ...
  • Impacts security?
    • Security - Does the change have a direct security impact on an application,
      flow, or firmware?
    • Examples: Crypto algorithm change, buffer overflow fix, parameter
      validation improvement, ...
  • Breaking change?
    • Breaking change - Will anyone consuming this change experience a break
      in build or boot behavior?
    • Examples: Add a new library class, move a module to a different repo, call
      a function in a new library class in a pre-existing module, ...
  • Includes tests?
    • Tests - Does the change include any explicit test code?
    • Examples: Unit tests, integration tests, robot tests, ...
  • Includes documentation?
    • Documentation - Does the change contain explicit documentation additions
      outside direct code modifications (and comments)?
    • Examples: Update readme file, add feature readme file, link to documentation
      on an a separate Web page, ...

How This Was Tested

Local CI

Integration Instructions

N/A

Provide the capability for platform to specifies the 2nd
timeout value in microseconds for the BSP/AP in SMM to wait for
one another to enter SMM.

The added interface can enhance the flexibility of timeout
configuration. In some cases, certain processors may not be
able to enter SMI, and prolonged waiting could lead to
kernel soft/hard lockup. We have now defined two timeouts.
The first timeout can be set to a smaller value to reduce
the waiting period. Processors that are unable to enter SMI
will be woken up through SMIIPL to enter SMI, followed by
a second waiting period. The second timeout can be set to a
larger value to prevent delays in processors entering SMI
case due to the long instruction execution.

Signed-off-by: Jiaxin Wu <[email protected]>
Cc: Ray Ni <[email protected]>
Cc: Rahul Kumar <[email protected]>
Cc: Gerd Hoffmann <[email protected]>
@apop5 apop5 requested review from os-d and kuqin12 August 7, 2024 22:16
@github-actions github-actions bot added the impact:non-functional Does not have a functional impact label Aug 7, 2024
@kuqin12
Copy link
Contributor

kuqin12 commented Aug 7, 2024

How is the PCD get used?

@apop5
Copy link
Contributor Author

apop5 commented Aug 7, 2024

How is the PCD get used?

A Silicon Vendor provided their own implementation of SmmCpuFeaturesLib that requires the usage of the PCD.

Edk2 adding changes to consume it, then reverted the changes

Initial Addition tianocore/edk2@cb31346
Revert: tianocore/edk2@4efcd65

@apop5 apop5 merged commit 835d06b into microsoft:release/202311 Aug 7, 2024
31 checks passed
apop5 added a commit that referenced this pull request Aug 7, 2024
os-d pushed a commit to os-d/mu_basecore that referenced this pull request Aug 23, 2024
…1096)

## Description
Cherry-Picking PCD definition from edk2. This does not change the
basecore functionality to consume this pcd.

Provide the capability for platform to specifies the 2nd timeout value
in microseconds for the BSP/AP in SMM to wait for one another to enter
SMM.

The added interface can enhance the flexibility of timeout
configuration. In some cases, certain processors may not be able to
enter SMI, and prolonged waiting could lead to kernel soft/hard lockup.
We have now defined two timeouts. The first timeout can be set to a
smaller value to reduce the waiting period. Processors that are unable
to enter SMI will be woken up through SMIIPL to enter SMI, followed by a
second waiting period. The second timeout can be set to a larger value
to prevent delays in processors entering SMI case due to the long
instruction execution.


Cc: Ray Ni <[email protected]>
Cc: Rahul Kumar <[email protected]>
Cc: Gerd Hoffmann <[email protected]>


- [ ] Impacts functionality?
- **Functionality** - Does the change ultimately impact how firmware
functions?
- Examples: Add a new library, publish a new PPI, update an algorithm,
...
- [ ] Impacts security?
- **Security** - Does the change have a direct security impact on an
application,
    flow, or firmware?
  - Examples: Crypto algorithm change, buffer overflow fix, parameter
    validation improvement, ...
- [ ] Breaking change?
- **Breaking change** - Will anyone consuming this change experience a
break
    in build or boot behavior?
- Examples: Add a new library class, move a module to a different repo,
call
    a function in a new library class in a pre-existing module, ...
- [ ] Includes tests?
  - **Tests** - Does the change include any explicit test code?
  - Examples: Unit tests, integration tests, robot tests, ...
- [ ] Includes documentation?
- **Documentation** - Does the change contain explicit documentation
additions
    outside direct code modifications (and comments)?
- Examples: Update readme file, add feature readme file, link to
documentation
    on an a separate Web page, ...

## How This Was Tested
Local CI

## Integration Instructions
N/A

Signed-off-by: Jiaxin Wu <[email protected]>
Co-authored-by: Jiaxin Wu <[email protected]>
os-d pushed a commit that referenced this pull request Aug 24, 2024
## Description
Cherry-Picking PCD definition from edk2. This does not change the
basecore functionality to consume this pcd.

Provide the capability for platform to specifies the 2nd timeout value
in microseconds for the BSP/AP in SMM to wait for one another to enter
SMM.

The added interface can enhance the flexibility of timeout
configuration. In some cases, certain processors may not be able to
enter SMI, and prolonged waiting could lead to kernel soft/hard lockup.
We have now defined two timeouts. The first timeout can be set to a
smaller value to reduce the waiting period. Processors that are unable
to enter SMI will be woken up through SMIIPL to enter SMI, followed by a
second waiting period. The second timeout can be set to a larger value
to prevent delays in processors entering SMI case due to the long
instruction execution.


Cc: Ray Ni <[email protected]>
Cc: Rahul Kumar <[email protected]>
Cc: Gerd Hoffmann <[email protected]>


- [ ] Impacts functionality?
- **Functionality** - Does the change ultimately impact how firmware
functions?
- Examples: Add a new library, publish a new PPI, update an algorithm,
...
- [ ] Impacts security?
- **Security** - Does the change have a direct security impact on an
application,
    flow, or firmware?
  - Examples: Crypto algorithm change, buffer overflow fix, parameter
    validation improvement, ...
- [ ] Breaking change?
- **Breaking change** - Will anyone consuming this change experience a
break
    in build or boot behavior?
- Examples: Add a new library class, move a module to a different repo,
call
    a function in a new library class in a pre-existing module, ...
- [ ] Includes tests?
  - **Tests** - Does the change include any explicit test code?
  - Examples: Unit tests, integration tests, robot tests, ...
- [ ] Includes documentation?
- **Documentation** - Does the change contain explicit documentation
additions
    outside direct code modifications (and comments)?
- Examples: Update readme file, add feature readme file, link to
documentation
    on an a separate Web page, ...

## How This Was Tested
Local CI

## Integration Instructions
N/A

Signed-off-by: Jiaxin Wu <[email protected]>
Co-authored-by: Jiaxin Wu <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
impact:non-functional Does not have a functional impact
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants