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

[13.4-stable] vTPM communication and error handling refactoring #4429

Merged

Conversation

shjala
Copy link
Member

@shjala shjala commented Nov 6, 2024

Backport of #4400.

This changes refactors the control socket communication and error handling
in the vTPM (server) and KVM (client). The control socket communication
is now handled by HTTP over UDS, and the error handling is improved,
since the vTPM server now returns an error message when an error occurs.

Signed-off-by: Shahriyar Jalayeri <[email protected]>
(cherry picked from commit d965fa1)
Use a defer function to ensure that the virtual TPM is always terminated
when the domain manager hits an error during the setup process or boot
process.

Signed-off-by: Shahriyar Jalayeri <[email protected]>
(cherry picked from commit 20da6cd)
When server gets a launch request, it checks if the the requested
instance is already running, but it only checks the internal list and
not actually the running instances. This can lead to server thinking
the instance is running but client fails to get the PID with error
"failed to get pid from file ...".

Signed-off-by: Shahriyar Jalayeri <[email protected]>
(cherry picked from commit 25af0d6)
Validate ID before using it in, it must be in form of a UUID.

Signed-off-by: Shahriyar Jalayeri <[email protected]>
(cherry picked from commit 7294cce)
Rename wd kicker in proc utils.

Signed-off-by: Shahriyar Jalayeri <[email protected]>
(cherry picked from commit 9db3b4d)
Refactor vTPM setup/term/teardown functions to call the vTPM server
endpoints asynchronously, this remove the timeout guessworks and make the
vTPM setup more reliable.

Refactor vTPM setup functions to accept all watchdog related parameters
as struct.

Signed-off-by: Shahriyar Jalayeri <[email protected]>
(cherry picked from commit 18abc71)
The domainmanager calls vTPM server asynchronously, so we dont need to
worry and set the wait time too low to return quicly to prevent a watchdog
kill on pillar.

Signed-off-by: Shahriyar Jalayeri <[email protected]>
(cherry picked from commit bd856c7)
Add vtpm vendor directory to .spdxignore.

Signed-off-by: Shahriyar Jalayeri <[email protected]>
(cherry picked from commit 5d4f771)
Signed-off-by: Shahriyar Jalayeri <[email protected]>
The TestSwtpmAbruptTerminationRequest function verifies that if swtpm is
terminated without vTPM notice, no stale id is left in the vtpm internal
bookkeeping and vtpm can launch a new instance with the same id.

The TestSwtpmMultipleLaucnhRequest function verifies that if swtpm is
launched multiple times with the same id, only one instance is created
and other requests are ignored.

Signed-off-by: Shahriyar Jalayeri <[email protected]>
(cherry picked from commit bc80a42)
@shjala
Copy link
Member Author

shjala commented Nov 6, 2024

This should be fine, but let me run some tests to be sure.

@OhmSpectator
Copy link
Member

OhmSpectator commented Nov 6, 2024

@shjala rebase on the latest 13.4-stable and I'll run ztests (Eden is still broken by edk2 I believe)

@eriknordmark eriknordmark merged commit 7f13a46 into lf-edge:13.4-stable Nov 7, 2024
38 checks passed
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.

3 participants