From: Paolo Bonzini <pbonzini@redhat.com>
To: Doug Covelli <doug.covelli@broadcom.com>
Cc: Zack Rusin <zack.rusin@broadcom.com>,
Sean Christopherson <seanjc@google.com>,
kvm@vger.kernel.org, Jonathan Corbet <corbet@lwn.net>,
Thomas Gleixner <tglx@linutronix.de>,
Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>,
Dave Hansen <dave.hansen@linux.intel.com>,
x86@kernel.org, "H. Peter Anvin" <hpa@zytor.com>,
Shuah Khan <shuah@kernel.org>, Namhyung Kim <namhyung@kernel.org>,
Arnaldo Carvalho de Melo <acme@redhat.com>,
Isaku Yamahata <isaku.yamahata@intel.com>,
Joel Stanley <joel@jms.id.au>,
linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-kselftest@vger.kernel.org
Subject: Re: [PATCH 2/3] KVM: x86: Add support for VMware guest specific hypercalls
Date: Mon, 11 Nov 2024 19:49:26 +0100 [thread overview]
Message-ID: <c3026876-8061-4ab2-9321-97cc05bad510@redhat.com> (raw)
In-Reply-To: <CADH9ctD1uf_yBA3NXNQu7TJa_TPhLRN=0YZ3j2gGhgmaFRdCFg@mail.gmail.com>
On 11/9/24 22:11, Doug Covelli wrote:
> On Sat, Nov 9, 2024 at 1:20 PM Paolo Bonzini <pbonzini@redhat.com> wrote:
>> On 11/8/24 06:03, Zack Rusin wrote:
>>>>> There's no spec but we have open headers listing the hypercalls.
>>>>> There's about a 100 of them (a few were deprecated), the full
>>>>> list starts here:
>>>>> https://github.com/vmware/open-vm-tools/blob/739c5a2f4bfd4cdda491e6a6f6869d88c0bd6972/open-vm-tools/lib/include/backdoor_def.h#L97
>>>>> They're not well documented, but the names are pretty self-explenatory.
>>>>
>>>> At a quick glance, this one needs to be handled in KVM:
>>>>
>>>> BDOOR_CMD_VCPU_MMIO_HONORS_PAT
>>>>
>>>> and these probably should be in KVM:
>>>>
>>>> BDOOR_CMD_GETTIME
>>>> BDOOR_CMD_SIDT
>>>> BDOOR_CMD_SGDT
>>>> BDOOR_CMD_SLDT_STR
>>>> BDOOR_CMD_GETTIMEFULL
>>>> BDOOR_CMD_VCPU_LEGACY_X2APIC_OK
>>>> BDOOR_CMD_STEALCLOCK
>>>
>>> I'm not sure if there's any value in implementing a few of them.
>>
>> The value is that some of these depend on what the hypervisor does, not
>> on what userspace does. For Hypervisor.framework you have a lot of
>> leeway, for KVM and Hyper-V less so. [..] From the KVM maintainers'
>> point of view, the feature you're adding might be used by others and
>> not just VMware Workstation. Microsoft and Apple might see things
>> differently (Apple in particular has a much thinner wrapper around
>> the processor's virtualization capbilities).
>
> [...]
>
> the SGDT/SLDT/STR/SIDT backdoor calls these were added > 20
> years ago for SW that used these instructions from CPL3 which did not
> work well before VT/SVM were introduced. These are really of no use
> on modern CPUs and will be blocked if the guest OS has enabled UMIP.
> [...]
>
> For stolen time the backdoor call is [...] currently
> really only supported by ESX (and only currently used by Photon OS) so
> I don't think adding that support to KVM is critical.
Sounds good. All I want is ensuring that someone with access to the
spec did the exercise.
Still guessing, but for MMIO_HONORS_PAT we probably want to add a
separate KVM_CHECK_EXTENSION capability.
Is BDOOR_CMD_VCPU_LEGACY_X2APIC_OK something where you can just return a
constant?
This leaves just GETTIME and GETTIMEFULL. If four hypercalls require
some care in the hypervisor (which may or may not be an in-kernel
implementation), that's not bad. Can you share a bit more about these four?
>> Anyway, one question apart from this: is the API the same for the I/O
>> port and hypercall backdoors?
>
> Yeah the calls and arguments are the same. The hypercall based
> interface is an attempt to modernize the backdoor since as you pointed
> out the I/O based interface is kind of hacky as it bypasses the normal
> checks for an I/O port access at CPL3. It would be nice to get rid of
> it but unfortunately I don't think that will happen in the foreseeable
> future as there are a lot of existing VMs out there with older SW that
> still uses this interface.
Yeah, but I think it still justifies that the KVM_ENABLE_CAP API can
enable the hypercall but not the I/O port.
Paolo
next prev parent reply other threads:[~2024-11-11 18:49 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-30 3:34 [PATCH 0/3] KVM: x86: Small changes to support VMware guests Zack Rusin
2024-10-30 3:34 ` [PATCH 1/3] KVM: x86: Allow enabling of the vmware backdoor via a cap Zack Rusin
2024-10-30 3:34 ` [PATCH 2/3] KVM: x86: Add support for VMware guest specific hypercalls Zack Rusin
2024-11-04 22:13 ` Paolo Bonzini
2024-11-05 4:59 ` Zack Rusin
2024-11-07 22:32 ` Sean Christopherson
2024-11-08 5:03 ` Zack Rusin
2024-11-09 18:20 ` Paolo Bonzini
2024-11-09 21:11 ` Doug Covelli
2024-11-11 18:49 ` Paolo Bonzini [this message]
2024-11-11 20:55 ` Doug Covelli
2024-11-12 17:44 ` Paolo Bonzini
2024-11-12 20:44 ` Doug Covelli
[not found] ` <CABgObfZrTyft-3vqMz5w0ZiAhp-v6c32brgftynZGJO8OafrdA@mail.gmail.com>
2024-11-13 16:04 ` Sean Christopherson
2024-11-13 16:24 ` Doug Covelli
2024-11-13 17:59 ` Paolo Bonzini
2024-11-14 15:45 ` Doug Covelli
2024-12-12 12:19 ` Doug Covelli
2024-12-18 3:43 ` Sean Christopherson
2025-01-07 17:09 ` Paolo Bonzini
2025-02-03 16:35 ` Doug Covelli
2025-02-03 18:21 ` Paolo Bonzini
2025-02-03 18:35 ` Doug Covelli
2025-02-03 19:41 ` Sean Christopherson
2025-02-03 19:46 ` Paolo Bonzini
2025-02-03 19:53 ` Sean Christopherson
2025-02-03 20:35 ` Doug Covelli
2024-11-09 16:44 ` Paolo Bonzini
2024-10-30 3:34 ` [PATCH 3/3] KVM: selftests: x86: Add a test for KVM_CAP_X86_VMWARE_HYPERCALL Zack Rusin
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=c3026876-8061-4ab2-9321-97cc05bad510@redhat.com \
--to=pbonzini@redhat.com \
--cc=acme@redhat.com \
--cc=bp@alien8.de \
--cc=corbet@lwn.net \
--cc=dave.hansen@linux.intel.com \
--cc=doug.covelli@broadcom.com \
--cc=hpa@zytor.com \
--cc=isaku.yamahata@intel.com \
--cc=joel@jms.id.au \
--cc=kvm@vger.kernel.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=namhyung@kernel.org \
--cc=seanjc@google.com \
--cc=shuah@kernel.org \
--cc=tglx@linutronix.de \
--cc=x86@kernel.org \
--cc=zack.rusin@broadcom.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®