Re: [RFC] CPUID usage for interaction between Hypervisors and Linux.

2008-10-07 Thread H. Peter Anvin
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

Re: [RFC] CPUID usage for interaction between Hypervisors and Linux.

2008-10-07 Thread Jeremy Fitzhardinge
H. Peter Anvin wrote: > Jeremy Fitzhardinge wrote: >>> >>> The big difference here is that you could create a VM at runtime (by >>> combining the existing interfaces) that did not exist before (or was >>> not tested before). For example, a hypervisor could show hyper-v, >>> osx-v (if any), linux

Re: [RFC] CPUID usage for interaction between Hypervisors and Linux.

2008-10-07 Thread H. Peter Anvin
Jeremy Fitzhardinge wrote: >> >> The big difference here is that you could create a VM at runtime (by >> combining the existing interfaces) that did not exist before (or was >> not tested before). For example, a hypervisor could show hyper-v, >> osx-v (if any), linux-v, etc., and a guest could c

Re: [RFC] CPUID usage for interaction between Hypervisors and Linux.

2008-10-07 Thread Jeremy Fitzhardinge
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 hyperviso

Re: [RFC] CPUID usage for interaction between Hypervisors and Linux.

2008-10-07 Thread Jeremy Fitzhardinge
Nakajima, Jun wrote: > On 10/3/2008 5:35:39 PM, H. Peter Anvin wrote: > >> Nakajima, Jun wrote: >> >>> What's the significance of supporting multiple interfaces to the >>> same guest simultaneously, i.e. _runtime_? We don't want the guests >>> to run on such a literarily Frankenstein machin

Re: [RFC] CPUID usage for interaction between Hypervisors and Linux.

2008-10-07 Thread H. Peter Anvin
Nakajima, Jun wrote: > On 10/3/2008 5:35:39 PM, H. Peter Anvin wrote: >> Nakajima, Jun wrote: >>> What's the significance of supporting multiple interfaces to the >>> same guest simultaneously, i.e. _runtime_? We don't want the guests >>> to run on such a literarily Frankenstein machine. And practi

RE: [RFC] CPUID usage for interaction between Hypervisors and Linux.

2008-10-07 Thread Nakajima, Jun
On 10/3/2008 5:35:39 PM, H. Peter Anvin wrote: > Nakajima, Jun wrote: > > > > What's the significance of supporting multiple interfaces to the > > same guest simultaneously, i.e. _runtime_? We don't want the guests > > to run on such a literarily Frankenstein machine. And practically, > > such test

Re: [RFC] CPUID usage for interaction between Hypervisors and Linux.

2008-10-04 Thread Avi Kivity
Nakajima, Jun wrote: > What's the significance of supporting multiple interfaces to the same guest > simultaneously, i.e. _runtime_? We don't want the guests to run on such a > literarily Frankenstein machine. And practically, such testing/debugging > would be good only for Halloween :-). > >

Re: [RFC] CPUID usage for interaction between Hypervisors and Linux.

2008-10-03 Thread H. Peter Anvin
Nakajima, Jun wrote: > > What I mean is that a hypervisor (with a single vender id) can support > multiple interfaces, exposing a single interface to each guest that would > expect a specific interface at runtime. > Yes, and for the reasons outlined in a previous post in this thread, this is

RE: [RFC] CPUID usage for interaction between Hypervisors and Linux.

2008-10-03 Thread Nakajima, Jun
On 10/3/2008 4:30:29 PM, H. Peter Anvin wrote: > Nakajima, Jun wrote: > > What it means their hypervisor returns the interface signature (i.e. > > "Hv#1"), and that defines the interface. If we use "Lv_1", for > > example, we can define the interface 0x4002 through 0x40FF for > > Linux. >

Re: [RFC] CPUID usage for interaction between Hypervisors and Linux.

2008-10-03 Thread H. Peter Anvin
Nakajima, Jun wrote: > What it means their hypervisor returns the interface signature (i.e. "Hv#1"), > and that defines the interface. If we use "Lv_1", for example, we can define > the interface 0x4002 through 0x40FF for Linux. Since leaf 0x4000 > and 0x4001 are separate, we can

RE: [RFC] CPUID usage for interaction between Hypervisors and Linux.

2008-10-03 Thread Nakajima, Jun
On 10/1/2008 6:24:26 PM, H. Peter Anvin wrote: > Nakajima, Jun wrote: > > > > > > All I have seen out of Microsoft only covers CPUID levels > > > 0x4000 as an vendor identification leaf and 0x4001 as a > > > "hypervisor identification leaf", but you might have access to other > > > informa

Re: [RFC] CPUID usage for interaction between Hypervisors and Linux.

2008-10-02 Thread H. Peter Anvin
H. Peter Anvin wrote: > > Ah, if it was only that simple. Transmeta actually did this, but it's > not as useful as you think. > For what it's worth, Transmeta's implementation used CPUID leaf 0x80860001.ECX to give the TSC frequency rounded to the nearest MHz. The caveat of spread-spectrum m

Re: [RFC] CPUID usage for interaction between Hypervisors and Linux.

2008-10-02 Thread Avi Kivity
Chris Wright wrote: > * Anthony Liguori ([EMAIL PROTECTED]) wrote: > >> And arguably, storing TSC frequency in CPUID is a terrible interface >> because the TSC frequency can change any time a guest is entered. It >> > > True for older hardware, newer hardware should fix this. I guess

Re: [RFC] CPUID usage for interaction between Hypervisors and Linux.

2008-10-01 Thread H. Peter Anvin
Nakajima, Jun wrote: >> >> All I have seen out of Microsoft only covers CPUID levels 0x4000 >> as an vendor identification leaf and 0x4001 as a "hypervisor >> identification leaf", but you might have access to other information. > > No, it says "Leaf 0x4001 as hypervisor vendor-neutral

Re: [RFC] CPUID usage for interaction between Hypervisors and Linux.

2008-10-01 Thread H. Peter Anvin
Zachary Amsden wrote: > > I'm not suggesting using the nominal value. I'm suggesting the > measurement be done in the one and only place where there is perfect > control of the system, the processor boot-strapping in the BIOS. > > Only the platform designers themselves know the speed of the osci

Re: [RFC] CPUID usage for interaction between Hypervisors and Linux.

2008-10-01 Thread Zachary Amsden
On Wed, 2008-10-01 at 17:39 -0700, H. Peter Anvin wrote: > third, which is subject to spread-spectrum modulation due to RFI > concerns. Therefore, relying on the *nominal* frequency of this clock I'm not suggesting using the nominal value. I'm suggesting the measurement be done in the one and on

RE: [RFC] CPUID usage for interaction between Hypervisors and Linux.

2008-10-01 Thread Nakajima, Jun
On 10/1/2008 3:46:45 PM, H. Peter Anvin wrote: > Alok Kataria wrote: > > > No, that's always a terrible idea. Sure, its necessary to deal > > > with some backward-compatibility issues, but we should even > > > consider a new interface which assumes this kind of thing. We > > > want properly enume

Re: [RFC] CPUID usage for interaction between Hypervisors and Linux.

2008-10-01 Thread H. Peter Anvin
Zachary Amsden wrote: > > Jun, you work at Intel. Can you ask for a new architecturally defined > MSR that returns the TSC frequency? Not a virtualization specific MSR. > A real MSR that would exist on physical processors. The TSC started as > an MSR anyway. There should be another MSR that te

Re: [RFC] CPUID usage for interaction between Hypervisors and Linux.

2008-10-01 Thread Anthony Liguori
Zachary Amsden wrote: > On Wed, 2008-10-01 at 14:34 -0700, Anthony Liguori wrote: > >> Jeremy Fitzhardinge wrote: >> >>> Alok Kataria wrote: >>> >>> I guess, but the bulk of the uses of this stuff are going to be >>> hypervisor-specific. You're hard-pressed to come up with any other >>> ge

Re: [RFC] CPUID usage for interaction between Hypervisors and Linux.

2008-10-01 Thread Zachary Amsden
On Wed, 2008-10-01 at 14:34 -0700, Anthony Liguori wrote: > Jeremy Fitzhardinge wrote: > > Alok Kataria wrote: > > > > I guess, but the bulk of the uses of this stuff are going to be > > hypervisor-specific. You're hard-pressed to come up with any other > > generic uses beyond tsc. > > And arguab

Re: [RFC] CPUID usage for interaction between Hypervisors and Linux.

2008-10-01 Thread H. Peter Anvin
Alok Kataria wrote: >> No, that's always a terrible idea. Sure, its necessary to deal with >> some backward-compatibility issues, but we should even consider a new >> interface which assumes this kind of thing. We want properly enumerable >> interfaces. > > The reason we still have to do this is

Re: [RFC] CPUID usage for interaction between Hypervisors and Linux.

2008-10-01 Thread H. Peter Anvin
Chris Wright wrote: > * Jeremy Fitzhardinge ([EMAIL PROTECTED]) wrote: >> "What hypervisor is this?" isn't a very interesting question; if you're >> even asking it then it suggests that something has gone wrong. > > It's essentially already happening. Everyone wants to be a better > hyperv than

Re: [RFC] CPUID usage for interaction between Hypervisors and Linux.

2008-10-01 Thread Chris Wright
* Anthony Liguori ([EMAIL PROTECTED]) wrote: > And arguably, storing TSC frequency in CPUID is a terrible interface > because the TSC frequency can change any time a guest is entered. It True for older hardware, newer hardware should fix this. I guess the point is, the are numbers that are e

Re: [RFC] CPUID usage for interaction between Hypervisors and Linux.

2008-10-01 Thread Anthony Liguori
Jeremy Fitzhardinge wrote: > Alok Kataria wrote: > > I guess, but the bulk of the uses of this stuff are going to be > hypervisor-specific. You're hard-pressed to come up with any other > generic uses beyond tsc. And arguably, storing TSC frequency in CPUID is a terrible interface because the

Re: [RFC] CPUID usage for interaction between Hypervisors and Linux.

2008-10-01 Thread Anthony Liguori
Chris Wright wrote: > * Anthony Liguori ([EMAIL PROTECTED]) wrote: > >> We've already gone down the road of trying to make standard paravirtual >> interfaces (via virtio). No one was sufficiently interested in >> collaborating. I don't see why other paravirtualizations are going to >> be

Re: [RFC] CPUID usage for interaction between Hypervisors and Linux.

2008-10-01 Thread Anthony Liguori
Alok Kataria wrote: > Your explanation below answers the question you raised, the problem > being we need to have support for each of these different hypercall > mechanisms in the kernel. > I understand that this was the correct thing to do at that moment. > But do we want to go the same way agai

Re: [RFC] CPUID usage for interaction between Hypervisors and Linux.

2008-10-01 Thread Jeremy Fitzhardinge
Alok Kataria wrote: > 1. Kernel complexity : Just thinking about the complexity that this will > put in the kernel to handle these multiple ABI signatures and scanning > all of these leaf block's is difficult to digest. > The scanning for the signatures is trivial; it's not a significant amoun

Re: [RFC] CPUID usage for interaction between Hypervisors and Linux.

2008-10-01 Thread Alok Kataria
On Wed, 2008-10-01 at 14:08 -0700, Anthony Liguori wrote: > Alok Kataria wrote: > > On Wed, 2008-10-01 at 11:04 -0700, Jeremy Fitzhardinge wrote: > > > > 2. Divergence in the interface provided by the hypervisors : > > The reason we brought up a flat hierarchy is because we think we > > sho

Re: [RFC] CPUID usage for interaction between Hypervisors and Linux.

2008-10-01 Thread Chris Wright
* Anthony Liguori ([EMAIL PROTECTED]) wrote: > We've already gone down the road of trying to make standard paravirtual > interfaces (via virtio). No one was sufficiently interested in > collaborating. I don't see why other paravirtualizations are going to > be much different. The point is

Re: [RFC] CPUID usage for interaction between Hypervisors and Linux.

2008-10-01 Thread Anthony Liguori
Alok Kataria wrote: > On Wed, 2008-10-01 at 11:04 -0700, Jeremy Fitzhardinge wrote: > > 2. Divergence in the interface provided by the hypervisors : > The reason we brought up a flat hierarchy is because we think we should > be moving towards a approach where the guest code doesn't diver

Re: [RFC] CPUID usage for interaction between Hypervisors and Linux.

2008-10-01 Thread Alok Kataria
On Wed, 2008-10-01 at 11:06 -0700, Jeremy Fitzhardinge wrote: > Alok Kataria wrote: > > Its not a user who has to do anything special here. > > There are *intelligent* VM developers out there who can export a > > different CPUid interface depending on the guest OS type. And this is > > what most of

Re: [RFC] CPUID usage for interaction between Hypervisors and Linux.

2008-10-01 Thread Alok Kataria
On Wed, 2008-10-01 at 11:04 -0700, Jeremy Fitzhardinge wrote: > No, we're not getting anywhere. This is an outright broken idea. The > space is too small to be able to chop up in this way, and the number of > vendors too large to be able to do it without having a central oversight. > > The only

Re: [RFC] CPUID usage for interaction between Hypervisors and Linux.

2008-10-01 Thread Anthony Liguori
Jeremy Fitzhardinge wrote: > Anthony Liguori wrote: >> Mmm, cpuid bikeshedding :-) > > My shade of blue is better. > >>> The space 0x4000-0x40ff is reserved for hypervisor usage. >>> >>> This region is divided into 16 16-leaf blocks. Each block has the >>> structure: >>> >>> 0x40x0:

Re: [RFC] CPUID usage for interaction between Hypervisors and Linux.

2008-10-01 Thread Chris Wright
* Jeremy Fitzhardinge ([EMAIL PROTECTED]) wrote: > "What hypervisor is this?" isn't a very interesting question; if you're > even asking it then it suggests that something has gone wrong. It's essentially already happening. Everyone wants to be a better hyperv than hyperv ;-) __

Re: [RFC] CPUID usage for interaction between Hypervisors and Linux.

2008-10-01 Thread Jeremy Fitzhardinge
Anthony Liguori wrote: > Mmm, cpuid bikeshedding :-) My shade of blue is better. >> The space 0x4000-0x40ff is reserved for hypervisor usage. >> >> This region is divided into 16 16-leaf blocks. Each block has the >> structure: >> >> 0x40x0: >> eax: max used leaf within the leaf

Re: [RFC] CPUID usage for interaction between Hypervisors and Linux.

2008-10-01 Thread Anthony Liguori
Jeremy Fitzhardinge wrote: > Alok Kataria wrote: > > No, we're not getting anywhere. This is an outright broken idea. The > space is too small to be able to chop up in this way, and the number of > vendors too large to be able to do it without having a central oversight. > > The only way this

Re: [RFC] CPUID usage for interaction between Hypervisors and Linux.

2008-10-01 Thread Jeremy Fitzhardinge
H. Peter Anvin wrote: > What you'd want, at least, is a standard CPUID identification and > range leaf at the top. 256 leaves is a *lot*, though; I'm not saying > one couldn't run out, but it'd be hard. Keep in mind that for large > objects there are "counting" CPUID levels, as much as I perso

Re: [RFC] CPUID usage for interaction between Hypervisors and Linux.

2008-10-01 Thread H. Peter Anvin
Jeremy Fitzhardinge wrote: > H. Peter Anvin wrote: >> With a sufficiently large block, we could use fixed points, e.g. by >> having each vendor create interfaces in the 0x40XX range, where >> is the PCI ID they use for PCI devices. > > Sure, you could do that, but you'd still want to ha

Re: [RFC] CPUID usage for interaction between Hypervisors and Linux.

2008-10-01 Thread Jeremy Fitzhardinge
H. Peter Anvin wrote: > With a sufficiently large block, we could use fixed points, e.g. by > having each vendor create interfaces in the 0x40XX range, where > is the PCI ID they use for PCI devices. Sure, you could do that, but you'd still want to have a signature in 0x4000 to pos

Re: [RFC] CPUID usage for interaction between Hypervisors and Linux.

2008-10-01 Thread H. Peter Anvin
Jeremy Fitzhardinge wrote: > > No, we're not getting anywhere. This is an outright broken idea. The > space is too small to be able to chop up in this way, and the number of > vendors too large to be able to do it without having a central oversight. > I suspect we can get a larger number spa

Re: [RFC] CPUID usage for interaction between Hypervisors and Linux.

2008-10-01 Thread H. Peter Anvin
Jeremy Fitzhardinge wrote: >> >> I suspect we can get a larger number space if we ask Intel & AMD. In >> fact, I think we should request that the entire 0x40xx numberspace >> is assigned to virtualization *anyway*. > > Yes, that would be good. In that case I'd revise my proposal to back >

Re: [RFC] CPUID usage for interaction between Hypervisors and Linux.

2008-10-01 Thread Jeremy Fitzhardinge
Alok Kataria wrote: > Its not a user who has to do anything special here. > There are *intelligent* VM developers out there who can export a > different CPUid interface depending on the guest OS type. And this is > what most of the hypervisors do (not necessarily for CPUID, but for > other things r

Re: [RFC] CPUID usage for interaction between Hypervisors and Linux.

2008-10-01 Thread Jeremy Fitzhardinge
H. Peter Anvin wrote: > Jeremy Fitzhardinge wrote: >> >> No, we're not getting anywhere. This is an outright broken idea. >> The space is too small to be able to chop up in this way, and the >> number of vendors too large to be able to do it without having a >> central oversight. >> > > I susp

Re: [RFC] CPUID usage for interaction between Hypervisors and Linux.

2008-10-01 Thread Jeremy Fitzhardinge
Alok Kataria wrote: > Hi, > > Please find below the proposal for the generic use of cpuid space > allotted for hypervisors. Apart from this cpuid space another thing > worth noting would be that, Intel & AMD reserve the MSRs from 0x4000 > - 0x40FF for software use. Though the proposal doesn

Re: [RFC] CPUID usage for interaction between Hypervisors and Linux.

2008-10-01 Thread H. Peter Anvin
Alok Kataria wrote: > > Hypervisor CPUID Interface Proposal > --- > > Intel & AMD have reserved cpuid levels 0x4000 - 0x40FF for > software use. Hypervisors can use these levels to provide an interface > to pass information from the hypervisor to the guest

Re: [RFC] CPUID usage for interaction between Hypervisors and Linux.

2008-10-01 Thread H. Peter Anvin
Alok Kataria wrote: > > Hi Peter, > > Its not a user who has to do anything special here. > There are *intelligent* VM developers out there who can export a > different CPUid interface depending on the guest OS type. And this is > what most of the hypervisors do (not necessarily for CPUID, but f

Re: [RFC] CPUID usage for interaction between Hypervisors and Linux.

2008-10-01 Thread Alok Kataria
On Wed, 2008-10-01 at 10:21 -0700, H. Peter Anvin wrote: > Alok Kataria wrote: > > > > (This proposal may be adopted by other guest OSes. However, that is not > > a requirement because a hypervisor can expose a different CPUID > > interface depending on the guest OS type that is specified by the V

Re: [RFC] CPUID usage for interaction between Hypervisors and Linux.

2008-10-01 Thread H. Peter Anvin
Alok Kataria wrote: > > (This proposal may be adopted by other guest OSes. However, that is not > a requirement because a hypervisor can expose a different CPUID > interface depending on the guest OS type that is specified by the VM > configuration.) > Excuse me, but that is blatantly idiotic.

[RFC] CPUID usage for interaction between Hypervisors and Linux.

2008-10-01 Thread Alok Kataria
Hi, Please find below the proposal for the generic use of cpuid space allotted for hypervisors. Apart from this cpuid space another thing worth noting would be that, Intel & AMD reserve the MSRs from 0x4000 - 0x40FF for software use. Though the proposal doesn't talk about MSR's right now,