linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "H. Peter Anvin" <hpa@zytor.com>
To: Jeremy Fitzhardinge <jeremy@goop.org>
Cc: "Nakajima, Jun" <jun.nakajima@intel.com>,
	"akataria@vmware.com" <akataria@vmware.com>,
	"avi@redhat.com" <avi@redhat.com>,
	Rusty Russell <rusty@rustcorp.com.au>,
	Gerd Hoffmann <kraxel@redhat.com>, Ingo Molnar <mingo@elte.hu>,
	the arch/x86 maintainers <x86@kernel.org>,
	LKML <linux-kernel@vger.kernel.org>,
	Daniel Hecht <dhecht@vmware.com>, Zach Amsden <zach@vmware.com>,
	"virtualization@lists.linux-foundation.org" 
	<virtualization@lists.linux-foundation.org>,
	"kvm@vger.kernel.org" <kvm@vger.kernel.org>
Subject: Re: [RFC] CPUID usage for interaction between Hypervisors	and	Linux.
Date: Tue, 07 Oct 2008 18:09:57 -0700	[thread overview]
Message-ID: <48EC0865.7050400@zytor.com> (raw)
In-Reply-To: <48EBF4A7.3080704@goop.org>

Jeremy Fitzhardinge wrote:
> H. Peter Anvin wrote:
>> And you're absolutely right that the guest may end up picking and 
>> choosing different parts of the interfaces.  That's how it is supposed 
>> to work. 
> 
> No, that would be a horrible, horrible mistake.  There's no sane way to 
> implement that; it would mean that the hypervisor would have to have 
> some kind of state model that incorporates all the ABIs in a consistent 
> way.  Any guest using multiple ABIs would effectively end up being 
> dependent on a particular hypervisor via a frankensteinian interface 
> that no other hypervisor would implement in the same way, even if they 
> claim to implement the same set of interfaces.
> 
> If the hypervisor just needs to deal with one at a time then it can have 
> relatively simple ABI<->internal state translation.
> 
> However, if you have the notion of hypervisor-agnostic or common 
> interfaces, then you can include those as part of the rest of the ABI 
> and make it sane (so Xen+common, hyperv+common, etc).
> 

It depends on what classes of interfaces you're talking about.  I think 
you and Jun have a bit narrow definition of "ABI" in this context.  This 
is functionally equivalent to hardware interfaces (after all, that is 
what the hypervisor ABI *is* as far as the kernel is concerned) -- noone 
expects, say, a SATA controller that can run in legacy IDE mode to also 
take AHCI commands at the same time, but the kernel *does* expect that a 
chipset which exports LAPIC, HPET, PMTMR and TSC clock sources can use 
all four at the same time.  In the latter case the interfaces are 
inherently independent and refer to different chunks of hardware which 
just happen to be related in that they all are related to timing.  In 
the former case, we're dealing with *one* piece of hardware which can 
operate in one of two modes.

For hypervisors, you will end up with cases where you have both types -- 
for example, KVM will happily use VMware's video interface, but that 
doesn't mean KVM wants to use VMware's interfaces for storage.  This is 
exactly how it should be: the extent this kind of mix and match that is 
possible is a matter of the definition of the individual interfaces 
themselves, not of the overall architecture.

	-hpa

  reply	other threads:[~2008-10-08  1:14 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-10-01 17:14 [RFC] CPUID usage for interaction between Hypervisors and Linux Alok Kataria
2008-10-01 17:21 ` H. Peter Anvin
2008-10-01 17:33   ` Alok Kataria
2008-10-01 17:45     ` H. Peter Anvin
2008-10-01 18:06     ` Jeremy Fitzhardinge
2008-10-01 21:05       ` Alok Kataria
2008-10-01 22:46         ` H. Peter Anvin
2008-10-02  1:11           ` Nakajima, Jun
2008-10-02  1:24             ` H. Peter Anvin
2008-10-03 22:33               ` Nakajima, Jun
2008-10-03 23:30                 ` H. Peter Anvin
2008-10-04  0:27                   ` Nakajima, Jun
2008-10-04  0:35                     ` H. Peter Anvin
2008-10-07 22:30                       ` Nakajima, Jun
2008-10-07 22:37                         ` H. Peter Anvin
2008-10-07 23:45                           ` Jeremy Fitzhardinge
2008-10-08  1:09                             ` H. Peter Anvin [this message]
2008-10-07 23:41                         ` Jeremy Fitzhardinge
2008-10-07 23:45                           ` H. Peter Anvin
2008-10-08  0:40                             ` Jeremy Fitzhardinge
2008-10-04  8:53                     ` Avi Kivity
2008-10-01 17:47 ` H. Peter Anvin
2008-10-01 18:04 ` Jeremy Fitzhardinge
2008-10-01 18:07   ` H. Peter Anvin
2008-10-01 18:12     ` Jeremy Fitzhardinge
2008-10-01 18:16       ` H. Peter Anvin
2008-10-01 18:36         ` Jeremy Fitzhardinge
2008-10-01 18:43           ` H. Peter Anvin
2008-10-01 19:56             ` Jeremy Fitzhardinge
2008-10-01 20:38           ` Chris Wright
2008-10-01 22:38             ` H. Peter Anvin
2008-10-01 21:01   ` Alok Kataria
2008-10-01 21:08     ` Anthony Liguori
2008-10-01 21:15       ` Chris Wright
2008-10-01 21:31         ` Anthony Liguori
2008-10-01 21:23       ` Alok Kataria
2008-10-01 21:29         ` Anthony Liguori
2008-10-01 21:17     ` Jeremy Fitzhardinge
2008-10-01 21:34       ` Anthony Liguori
2008-10-01 21:43         ` Chris Wright
2008-10-02 11:29           ` Avi Kivity
2008-10-01 23:47         ` Zachary Amsden
2008-10-02  0:39           ` H. Peter Anvin
2008-10-02  0:57             ` H. Peter Anvin
2008-10-02  1:11             ` Zachary Amsden
2008-10-02  1:21               ` H. Peter Anvin
2008-10-02  0:41           ` Anthony Liguori
     [not found] ` <48E3BBC1.2050607__35819.6151479662$1222884502$gmane$org@goop.org>
2008-10-01 20:03   ` Anthony Liguori
2008-10-01 20:08     ` Jeremy Fitzhardinge
     [not found]     ` <48E3D8A8.604__13396.6479487301$1222891831$gmane$org@goop.org>
2008-10-01 21:03       ` Anthony Liguori

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=48EC0865.7050400@zytor.com \
    --to=hpa@zytor.com \
    --cc=akataria@vmware.com \
    --cc=avi@redhat.com \
    --cc=dhecht@vmware.com \
    --cc=jeremy@goop.org \
    --cc=jun.nakajima@intel.com \
    --cc=kraxel@redhat.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=rusty@rustcorp.com.au \
    --cc=virtualization@lists.linux-foundation.org \
    --cc=x86@kernel.org \
    --cc=zach@vmware.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;
as well as URLs for NNTP newsgroup(s).