-
Notifications
You must be signed in to change notification settings - Fork 2.6k
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
OvmfPkg: Cache and measure FwCfg #6522
Draft
sunceping
wants to merge
8
commits into
tianocore:master
Choose a base branch
from
sunceping:cache_and_measure_partial_fw_cfg.v1
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Draft
OvmfPkg: Cache and measure FwCfg #6522
sunceping
wants to merge
8
commits into
tianocore:master
from
sunceping:cache_and_measure_partial_fw_cfg.v1
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
sunceping
force-pushed
the
cache_and_measure_partial_fw_cfg.v1
branch
4 times, most recently
from
December 12, 2024 01:33
99c21c3
to
e720b42
Compare
Since TDVF have to measure fw_cfg data from QEMU, it is required to cache the data with measurement in early phase, that can avoid changing the measurement order when reading the fw_cfg process, which depends on multiple factors(depex, order in the firmware volume). Cc: Erdem Aktas <[email protected]> Cc: Jiewen Yao <[email protected]> Cc: Min Xu <[email protected]> Cc: Gerd Hoffmann <[email protected]> Cc: Elena Reshetova <[email protected]> Signed-off-by: Ceping Sun <[email protected]>
Split below tdx measurement APIs into a single library. - TdxMapPcrToMrIndex - TdxHashAndExtendToRtmr - TdxBuildTdxMeasurementGuidHob Cc: Erdem Aktas <[email protected]> Cc: Jiewen Yao <[email protected]> Cc: Min Xu <[email protected]> Cc: Gerd Hoffmann <[email protected]> Cc: Elena Reshetova <[email protected]> Signed-off-by: Min Xu <[email protected]> Signed-off-by: Ceping Sun <[email protected]>
Since the tdx measurement APIs are building by TdxMeasurementLib, remove the duplicate code and update the definitions. Cc: Erdem Aktas <[email protected]> Cc: Jiewen Yao <[email protected]> Cc: Min Xu <[email protected]> Cc: Gerd Hoffmann <[email protected]> Cc: Elena Reshetova <[email protected]> Signed-off-by: Min Xu <[email protected]> Signed-off-by: Ceping Sun <[email protected]>
Add the SecTpmMeasurementLib to support TpmMeasurementAndLogData in Sec phase. Cc: Erdem Aktas <[email protected]> Cc: Jiewen Yao <[email protected]> Cc: Min Xu <[email protected]> Cc: Gerd Hoffmann <[email protected]> Cc: Elena Reshetova <[email protected]> Signed-off-by: Min Xu <[email protected]> Signed-off-by: Ceping Sun <[email protected]>
sunceping
force-pushed
the
cache_and_measure_partial_fw_cfg.v1
branch
from
December 19, 2024 08:09
e720b42
to
09124f2
Compare
Since TDVF needs to cache and measure fwcfg, it is required to add a API to support cache with optional measurement and add some internal interface to support cache in QemuFwCfgLib. The API like below: QemuFwCfgInitCache() Internal interface like below: InternalQemuFwCfgCacheReadBytes() InternalQemuFwCfgCacheSelectItem() InternalQemuFwCfgCacheGetWorkArea() InternalQemuFwCfgCacheResetWorkArea() InternalQemuFwCfgCacheEnable() InternalQemuFwCfgItemCached() InternalQemuFwCfgCacheReading() InternalQemuFwCfgCacheFirstItem() InternalQemuFwCfgItemInCacheList() InternalQemuFwCfgInitCache() Cc: Erdem Aktas <[email protected]> Cc: Jiewen Yao <[email protected]> Cc: Min Xu <[email protected]> Cc: Gerd Hoffmann <[email protected]> Cc: Elena Reshetova <[email protected]> Signed-off-by: Min Xu <[email protected]> Signed-off-by: Ceping Sun <[email protected]>
OVMF uses FW_CFG_SELECTOR(0x510) and FW_CFG_IO_DATA(0x511) to get configuration information from QEMU. From the security perspective these information shall be measured before they're consumed. This patch reads the fw_cfg items and cached them in a GuidHob. In the meanwhile these fw_cfg items are measured as well. This is to avoid changing the order when reading the fw_cfg process, which depends on multiple factors(depex, order in the Firmware volume). Cc: Erdem Aktas <[email protected]> Cc: Jiewen Yao <[email protected]> Cc: Min Xu <[email protected]> Cc: Gerd Hoffmann <[email protected]> Cc: Elena Reshetova <[email protected]> Signed-off-by: Min Xu <[email protected]> Signed-off-by: Ceping Sun <[email protected]>
Since OVMF would initialize the platform info with fwcfg, TDVF needs to cache and measure the fwcfg at first. Cc: Erdem Aktas <[email protected]> Cc: Jiewen Yao <[email protected]> Cc: Min Xu <[email protected]> Cc: Gerd Hoffmann <[email protected]> Cc: Elena Reshetova <[email protected]> Signed-off-by: Min Xu <[email protected]> Signed-off-by: Ceping Sun <[email protected]>
Since OVMF would initialize the platform info with fwcfg, TDVF needs to cache and measure the fwcfg at first. Cc: Erdem Aktas <[email protected]> Cc: Jiewen Yao <[email protected]> Cc: Min Xu <[email protected]> Cc: Gerd Hoffmann <[email protected]> Cc: Elena Reshetova <[email protected]> Signed-off-by: Min Xu <[email protected]> Signed-off-by: Ceping Sun <[email protected]>
sunceping
force-pushed
the
cache_and_measure_partial_fw_cfg.v1
branch
from
December 20, 2024 01:20
09124f2
to
a0c618c
Compare
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
OVMF uses FW_CFG_SELECTOR(0x510) and FW_CFG_IO_DATA(0x511) to
get configuration information from QEMU. From the security perspective
these information shall be measured before they're consumed.
Currently, multiple factors(depex, order in the Firmware volume) would impact the
measurement order when reading the fwcfg process.
This PR add a HOB to cache and measure the fwcfg items at first when initializing
the platform, it is to avoid changing the measurement order.
below fwcfg items are cached/measured in TDVF:
Cc: Erdem Aktas [email protected]
Cc: Jiewen Yao [email protected]
Cc: Min Xu [email protected]
Cc: Gerd Hoffmann [email protected]
Cc: Elena Reshetova [email protected]
Signed-off-by: Min Xu [email protected]
Signed-off-by: Ceping Sun [email protected]
<Include a description of the change and why this change was made.>
<For each item, place an "x" in between
[
and]
if true. Example:[x]
(you can also check items in GitHub UI)><Create the PR as a Draft PR if it is only created to run CI checks.>
<Delete lines in <> tags before creating the PR.>
How This Was Tested
<Describe the test(s) that were run to verify the changes.>
Integration Instructions
<Describe how these changes should be integrated. Use N/A if nothing is required.>