From: Sean Christopherson <seanjc@google.com>
To: Xiaoyao Li <xiaoyao.li@intel.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>,
Kiryl Shutsemau <kas@kernel.org>,
Rick Edgecombe <rick.p.edgecombe@intel.com>,
Dave Hansen <dave.hansen@linux.intel.com>,
kvm@vger.kernel.org, x86@kernel.org, linux-coco@lists.linux.dev,
linux-kernel@vger.kernel.org,
James Houghton <jthoughton@google.com>,
Yan Zhao <yan.y.zhao@intel.com>,
Binbin Wu <binbin.wu@linux.intel.com>,
Ackerley Tng <ackerleytng@google.com>,
Vishal Annapurve <vannapurve@google.com>
Subject: Re: [PATCH] KVM: TDX: Synthesize SHUTDOWN instead of returning -EIO on unhandled EPT violation
Date: Thu, 24 Sep 2026 09:03:15 -0700 [thread overview]
Message-ID: <arVJwzMXGSXeFryO@google.com> (raw)
In-Reply-To: <5949c545-2104-4824-b007-5345fe0e5d7f@intel.com>
On Thu, Sep 24, 2026, Xiaoyao Li wrote:
> On 9/24/2026 10:13 PM, Sean Christopherson wrote:
> > On Thu, Sep 24, 2026, Xiaoyao Li wrote:
> >> On 9/24/2026 12:33 AM, Sean Christopherson wrote:
> >>> Synthesize a triple fault, i.e. exit to userspace with KVM_EXIT_SHUTDOWN,
> >>> instead of returning -EIO from KVM_RUN if KVM encounters an EPT Violation
> >>> due to a guest access to a pending page. Returning -EIO implies KVM is
> >>> buggy, and most VMMs will respond by completely terminating the VM, versus
> >>> rebooting the VM in response to KVM_EXIT_SHUTDOWN. I.e. give the VMM the
> >>> option of trying to keep the VM (from the end user's perspective) alive.
> >>
> >> But reboot isn't good, neither.
> >>
> >> I still think a new specific exit reason[1] would be better, as I suggested before.
> >>
> >> [1] https://lore.kernel.org/kvm/1b0ea352-c645-461b-9e19-5202791f8e2d@intel.com
> >
> > Doh, I completely forgot about that patch. *sigh*
> >
> > I actually thought KVM_EXIT_MEMORY_FAULT this time around, but I was worried that
> > it would confuse a VMM. And practically speaking, the VMM can't do anything other
> > than print some diagnostic details and try to reboot the VM, because the guest has
> > very deliberately opted out of #VEs.
> >
> > An alternative to KVM_EXIT_SHUTDOWN would be
> >
> > vcpu->run->exit_reason = KVM_EXIT_SYSTEM_EVENT;
> > vcpu->run->system_event.type = KVM_SYSTEM_EVENT_TDX_FATAL;
> > vcpu->run->system_event.ndata = 1;
> > vcpu->run->system_event.data[0] = gpa;
> >
> > So that the VMM could log the guilty GPA. Though I'm not sure I like overloading
> > an explicit guest event.
> >
> > As for KVM_EXIT_GUEST_ERROR, I don't see the point. As above, the VMM can't do
> > anything other than reboot the VM. I doubt Linux-as-a-guest will ever support an
> > interface that allows recovering from this situation, because again, the entire
> > point is treat unaccepted accesses as fatal conditions.
> >
> > All in all, I think my vote is still for SHUTDOWN.
>
> My concern is that userspace cannot differentiate between triple fault and
> accessing a pending page if we return KVM_EXIT_SHUTDOWN. It's not friendly for
> debugging.
Hmm, I disagree. It's not friendly for *triage* given a bug report from a third
party, but for actual debug, I doubt it will matter since the exact exit reason
is available with trace_kvm_exit().
And for triage, IMO this scenario isn't interesting enough to warrant special
treatment. There are myriad ways to end up in triple fault, i.e. why the guest
ended up in a shutdown scenario is never going to be something that can fully
debugged given only run->exit_reason. E.g. if the guest did not opt out of #VEs
for this scenario, then it's not at all difficult to imagine scenarios where
accessing unaccepted memory leads to a triple fault.
prev parent reply other threads:[~2026-09-24 16:03 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-23 16:33 [PATCH] KVM: TDX: Synthesize SHUTDOWN instead of returning -EIO on unhandled EPT violation Sean Christopherson
2026-09-23 16:43 ` sashiko-bot
2026-09-23 17:13 ` Sean Christopherson
2026-09-23 23:29 ` Edgecombe, Rick P
2026-09-23 23:51 ` Sean Christopherson
2026-09-24 0:31 ` Edgecombe, Rick P
2026-09-24 1:39 ` Xiaoyao Li
2026-09-24 14:13 ` Sean Christopherson
2026-09-24 14:40 ` Xiaoyao Li
2026-09-24 16:03 ` Sean Christopherson [this message]
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=arVJwzMXGSXeFryO@google.com \
--to=seanjc@google.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=vannapurve@google.com \
--cc=x86@kernel.org \
--cc=xiaoyao.li@intel.com \
--cc=yan.y.zhao@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.