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

[Deepin-Kernel-SIG] [linux 6.6-y] [Upstream] [Intel] Intel: backport KVM Fix for Clearing SGX EDECCSSA to 6.6 #598

Merged

Conversation

Avenger-285714
Copy link
Collaborator

@Avenger-285714 Avenger-285714 commented Feb 14, 2025

Description
When SGX EDECCSSA support was added to KVM in commit 16a7fe3 ("KVM/VMX: Allow exposing EDECCSSA user leaf function to KVM guest"), it forgot to clear the X86_FEATURE_SGX_EDECCSSA bit in KVM CPU caps when KVM SGX is disabled. Fix it.

Fixes: 16a7fe3 ("KVM/VMX: Allow exposing EDECCSSA user leaf function to KVM guest")

About the patches
The total patch number is 1:

7efb4d8a392a KVM: VMX: Also clear SGX EDECCSSA in KVM CPU caps when SGX is disabled
Tests

Build successfully for each commit
Kernel selftest - SGX: PASSED
cd tools/testing/selftests/sgx/
make
./test_sgx
Kernel selftest - SGX in VM: PASSED
Function test
Step 1. Original SGX EDECCSSA status in guest
[root@guest ~]# cpuid -1 -l 0x12
CPU:
Software Guard Extensions (SGX) capability (0x12/0):
SGX1 supported = true
SGX2 supported = true
SGX ENCLV E*VIRTCHILD, ESETCONTEXT = false
SGX ENCLS ETRACKC, ERDINFO, ELDBC, ELDUC = false
SGX ENCLU EVERIFYREPORT2 = false
SGX ENCLS EUPDATESVN = false
SGX ENCLU EDECCSSA = true
MISCSELECT.EXINFO supported: #PF & #GP = true
MISCSELECT.CPINFO supported: #CP = false
MaxEnclaveSize_Not64 (log2) = 0x1f (31)
MaxEnclaveSize_64 (log2) = 0x38 (56)
Step 2. Disable SGX in guest

root@KVM-host:# rmmod kvm_intel
root@KVM-host:
# modprobe kvm_intel sgx=0
Step 3. The SGX EDECCSSA capability is cleared in KVM, then its status becomes false

[root@guest ~]# cpuid -1 -l 0x12
CPU:
Software Guard Extensions (SGX) capability (0x12/0):
SGX1 supported = false
SGX2 supported = false
SGX ENCLV E*VIRTCHILD, ESETCONTEXT = false
SGX ENCLS ETRACKC, ERDINFO, ELDBC, ELDUC = false
SGX ENCLU EVERIFYREPORT2 = false
SGX ENCLS EUPDATESVN = false
SGX ENCLU EDECCSSA = false
MISCSELECT.EXINFO supported: #PF & #GP = false
MISCSELECT.CPINFO supported: #CP = false
MaxEnclaveSize_Not64 (log2) = 0x0 (0)
MaxEnclaveSize_64 (log2) = 0x0 (0)
[root@TDX-guest ~]#
Known issue:
None

Default config change:
None

Link: https://gitee.com/OpenCloudOS/OpenCloudOS-Kernel/pulls/307

Upstream commit 7efb4d8a392a18e37fcdb5e77c111af6e9a9e2f2 Conflict: none

When SGX EDECCSSA support was added to KVM in commit 16a7fe3 ("KVM/VMX: Allow exposing EDECCSSA user leaf function to KVM guest"), it forgot to clear the X86_FEATURE_SGX_EDECCSSA bit in KVM CPU caps when KVM SGX is disabled. Fix it.

Intel-SIG: commit 7efb4d8a392a KVM: VMX: Also clear SGX EDECCSSA in KVM CPU caps when SGX is disabled
Backport a SGX bug fix from upstream.

Fixes: 16a7fe3 ("KVM/VMX: Allow exposing EDECCSSA user leaf function to KVM guest")

Link: https://lore.kernel.org/r/[email protected]

[ Zhiquan Li: amend commit log ]

Summary by Sourcery

Bug Fixes:

  • Clear the X86_FEATURE_SGX_EDECCSSA bit in KVM CPU capabilities when KVM SGX is disabled to resolve an issue where the bit remained set even when SGX was disabled in the guest VM. This fixes a bug introduced when EDECCSSA support was added to KVM, ensuring that the guest CPU capabilities accurately reflect the SGX configuration.

Upstream commit 7efb4d8a392a18e37fcdb5e77c111af6e9a9e2f2
Conflict: none

When SGX EDECCSSA support was added to KVM in commit 16a7fe3
("KVM/VMX: Allow exposing EDECCSSA user leaf function to KVM guest"), it
forgot to clear the X86_FEATURE_SGX_EDECCSSA bit in KVM CPU caps when
KVM SGX is disabled.  Fix it.

Intel-SIG: commit 7efb4d8a392a KVM: VMX: Also clear SGX EDECCSSA in KVM
CPU caps when SGX is disabled
Backport a SGX bug fix from upstream.

Fixes: 16a7fe3 ("KVM/VMX: Allow exposing EDECCSSA user leaf function to KVM guest")
Signed-off-by: Kai Huang <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Sean Christopherson <[email protected]>
[ Zhiquan Li: amend commit log ]
Signed-off-by: Zhiquan Li <[email protected]>
Copy link

sourcery-ai bot commented Feb 14, 2025

Reviewer's Guide by Sourcery

This pull request backports a fix that ensures the SGX EDECCSSA capability is correctly cleared in KVM CPU caps when SGX is disabled. This is achieved by adding a kvm_cpu_cap_clear call within the vmx_set_cpu_caps function.

No diagrams generated as the changes look simple and do not need a visual representation.

File-Level Changes

Change Details Files
The SGX EDECCSSA capability is now cleared in KVM CPU caps when SGX is disabled.
  • Added a call to kvm_cpu_cap_clear(X86_FEATURE_SGX_EDECCSSA) within the vmx_set_cpu_caps function when SGX is disabled.
arch/x86/kvm/vmx/vmx.c

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!
  • Generate a plan of action for an issue: Comment @sourcery-ai plan on
    an issue to generate a plan of action for it.

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

Copy link

@sourcery-ai sourcery-ai bot left a comment

Choose a reason for hiding this comment

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

Hey @Avenger-285714 - I've reviewed your changes - here's some feedback:

Overall Comments:

  • The commit message is well-formatted and provides sufficient context for the change.
Here's what I looked at during the review
  • 🟢 General issues: all looks good
  • 🟢 Security: all looks good
  • 🟢 Testing: all looks good
  • 🟢 Complexity: all looks good
  • 🟢 Documentation: all looks good

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

@deepin-ci-robot
Copy link

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: sourcery-ai[bot]
Once this PR has been reviewed and has the lgtm label, please ask for approval from avenger-285714. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@Avenger-285714 Avenger-285714 merged commit 0291c94 into deepin-community:linux-6.6.y Feb 14, 2025
3 of 5 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