From: Yan Zhao <yan.y.zhao@intel.com>
To: Sean Christopherson <seanjc@google.com>
Cc: Rick P Edgecombe <rick.p.edgecombe@intel.com>,
"pbonzini@redhat.com" <pbonzini@redhat.com>,
"kas@kernel.org" <kas@kernel.org>,
"jthoughton@google.com" <jthoughton@google.com>,
"dave.hansen@linux.intel.com" <dave.hansen@linux.intel.com>,
"x86@kernel.org" <x86@kernel.org>,
"binbin.wu@linux.intel.com" <binbin.wu@linux.intel.com>,
Xiaoyao Li <xiaoyao.li@intel.com>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"sashiko-bot@kernel.org" <sashiko-bot@kernel.org>,
"kvm@vger.kernel.org" <kvm@vger.kernel.org>,
"linux-coco@lists.linux.dev" <linux-coco@lists.linux.dev>,
"ackerleytng@google.com" <ackerleytng@google.com>,
Vishal Annapurve <vannapurve@google.com>
Subject: Re: [PATCH v2 0/3] KVM: TDX: Syntehsize SHUTDOWN on unhandled EPT Violation
Date: Thu, 8 Oct 2026 16:03:05 +0800 [thread overview]
Message-ID: <asdOF41hqDpycXKU@yzhao56-desk.sh.intel.com> (raw)
In-Reply-To: <arxd78Pn6WWL6TGq@google.com>
On Tue, Sep 29, 2026 at 05:55:11PM -0700, Sean Christopherson wrote:
> On Wed, Sep 30, 2026, Rick P Edgecombe wrote:
> > On Tue, 2026-09-29 at 17:11 -0700, Sean Christopherson wrote:
> > > Signal SHUTDOWN instead of -EIO if the guest accesses an unaccepted page and
> > > has disabled EPT Violation #VEs on such accesses. Returning -EIO is all but
> > > guaranteed to mislead the VMM into thinking KVM (or the VMM) messed up, and
> > > will likely result in the VM being terminated instead of rebooted.
Hmm, it's by design in my previous implementation to terminate a VM when the
guest accesses an unaccepted page and has disabled EPT Violation #VEs on such
accesses, according to the TDX module spec:
"This happens if the TD is configured to TD-exit (instead of a #VE) on an EPT
violation due to accessing a PENDING page. It normally indicates an error
condition; the host VMM may decide to tear the TD down."
So, for the initial implementation, we chose to invoke kvm_vm_dead() and print
out the exact reason as a hint to the system admin. (Previously, reboot was also
not supported for a TDX guest).
Returning -EIO was based on the following considerations:
- vcpu_enter_guest() returns -EIO when kvm_test_request(KVM_REQ_VM_DEAD, vcpu)
is true.
- A request to handle a specific EPT violation is rejected by the firmware (the
TDX module).
> > I'm pretty sure Yan had a test for this path, and I'd love to see it actually
> > exercised. What is the urgency on getting this fix upstream? Can we wait a week?
I triggered the EPT violation in the kexec path, and successfully had the TD
- killed with error msg: "qemu-system-x86_64: cpus are not resettable,
terminating" on an old QEMU, or
- rebooted on a new QEMU with the msg printed:
"qemu-system-x86_64: info: virtual machine state has been rebuilt with new
guest file handle".
The TDX selftests we are using do not handle KVM_EXIT_SHUTDOWN, so if such
an error occurs, it's silently ignored by the TDX selftests even with msg
"kvm_intel: Guest access before accepting 0x8000c000 on vCPU 1" printed in dmesg.
> Absolutely. It can probably wait a month and no one would care. IIRC, this got
> hit by someone (internal to Google) deliberately crashing a guest kernel and doing
> funky things with kexec. It showed up on my radar purely because our automated
> madness alerted on the resulting assertion (on -EIO) in the VMM.
Though I didn't realize that returning -EIO would mislead the VMM into thinking
KVM (or the VMM) messed up, such an error could also be introduced by a VMM bug?
e.g., VMM removes an accepted page without any notification to the TD configured
with TDX_TD_ATTRIBUTES_SEPT_VE_DISABLE bit.
next prev parent reply other threads:[~2026-10-08 8:04 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-30 0:11 [PATCH v2 0/3] KVM: TDX: Syntehsize SHUTDOWN on unhandled EPT Violation Sean Christopherson
2026-09-30 0:11 ` [PATCH v2 1/3] KVM: x86: Add a helper to prepare vcpu->run for a SHUTDOWN exit to userspace Sean Christopherson
2026-09-30 3:04 ` Binbin Wu
2026-09-30 0:11 ` [PATCH v2 2/3] KVM: TDX: Synthesize SHUTDOWN instead of returning -EIO on unhandled EPT violation Sean Christopherson
2026-09-30 4:58 ` Binbin Wu
2026-10-10 3:28 ` Yan Zhao
2026-09-30 0:11 ` [PATCH v2 3/3] KVM: TDX: Ratelimit the "EPT Violation on pending acceptance page" warning Sean Christopherson
2026-09-30 5:01 ` Binbin Wu
2026-10-08 3:08 ` Yan Zhao
2026-10-08 8:04 ` Binbin Wu
2026-10-10 2:37 ` Yan Zhao
2026-09-30 0:32 ` [PATCH v2 0/3] KVM: TDX: Syntehsize SHUTDOWN on unhandled EPT Violation Edgecombe, Rick P
2026-09-30 0:55 ` Sean Christopherson
2026-10-08 8:03 ` Yan Zhao [this message]
2026-10-09 20:58 ` Sean Christopherson
2026-10-10 2:29 ` Yan Zhao
2026-10-12 13:15 ` Sean Christopherson
2026-10-14 1:32 ` Yan Zhao
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=asdOF41hqDpycXKU@yzhao56-desk.sh.intel.com \
--to=yan.y.zhao@intel.com \
--cc=ackerleytng@google.com \
--cc=binbin.wu@linux.intel.com \
--cc=dave.hansen@linux.intel.com \
--cc=jthoughton@google.com \
--cc=kas@kernel.org \
--cc=kvm@vger.kernel.org \
--cc=linux-coco@lists.linux.dev \
--cc=linux-kernel@vger.kernel.org \
--cc=pbonzini@redhat.com \
--cc=rick.p.edgecombe@intel.com \
--cc=sashiko-bot@kernel.org \
--cc=seanjc@google.com \
--cc=vannapurve@google.com \
--cc=x86@kernel.org \
--cc=xiaoyao.li@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.