[RFC] First (incomplete) cut of Xen paravirt binding

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Zachary Amsden <zach at vmware.com> writes:

> Eric W. Biederman wrote:
>> I was half wondering if there was a BIOS call we might make in setup.S
>> to see if we were running under vmware.
>>
>> Certainly there are some rough edges to work out here.
>>
>
> We could add one - but I don't want to touch the BIOS code with a ten foot pole.
> And it still has the problem of having potential future architectural
> incompatibility.  Not that anyone is actively extending the BIOS services, but
> it is still theoretically a problem.  The chicken / egg problem here boils down
> to - we can't do anything outside the native hardware spec until we are in
> paravirtualized mode.  And we can't detect and enter paravirtualized mode
> without doing something vendor specific - potentially outside of the native
> spec.  The PCI device solves all this nicely for us, but that approach doesn't
> work for a true paravirt start-of-day, such as Xen.

Agreed.  But that case fundamentally needs a different bootloader so
the bootloader can poke a value in the linux parameter block.  So it
is not a problem.

> There are a number of other approaches we could take - a config file setting to
> deliberately misvirtualize the head.S code, thus magically inserting our
> hypervisor specific constant in EBX at the right moment, or a boot-shim that
> sets this up for us.  But these approaches are more fragile, error prone, and
> even more work.
>
> Any objections to having a "clean" interface for doing hypervisor probing in
> addition to magical awakening?  The PCI thing is nice, but requires a registered
> PCI ID for truly safe disambiguation, which not everyone has (Bochs / qemu /
> L4).  Anyone have a better idea?  Perhaps PCI spec reserved a vendor range for
> experimental / software use that we can define for Linux purposes?

Well there is always the command line option.

I really don't see this as being a fundamental problem.

In a emulator that can be accelerated we can use the hardware parvirt
opts until we detect where we are.  In a pure paravirtualized environment 
we have to know early or we can't boot.

Alternatives to a pci device include a dmi table entry, a BIOS table
we can scan for, or a standard hypervisor call that gave the
hypervisor vendor and revision would be ideal. 

But that's not a linux problem, except for accepting/rejecting the
patch to detect a hypervisor that way.

Eric


[Index of Archives]     [KVM Development]     [Libvirt Development]     [Libvirt Users]     [CentOS Virtualization]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux