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

Re: [Xen-devel] RFC: making the PVH 64bit ABI as stableo





On 06/06/2015 10:41 AM, Andrew Cooper wrote:
On 06/06/15 10:57, Roger Pau Monné wrote:
El 05/06/15 a les 23.52, Tim Deegan ha escrit:
At 18:21 +0100 on 05 Jun (1433528517), Andrew Cooper wrote:
On 05/06/15 18:16, Stefano Stabellini wrote:
On Fri, 5 Jun 2015, Andrew Cooper wrote:
On 05/06/15 17:43, Boris Ostrovsky wrote:
On 06/05/2015 12:16 PM, Roger Pau Monné wrote:
El 03/06/15 a les 14.08, Jan Beulich ha escrit:
On 03.06.15 at 12:02, <stefano.stabellini@xxxxxxxxxxxxx> wrote:
On Tue, 2 Jun 2015, Andrew Cooper wrote:
With my x86 maintainer hat on, the following is an absolute
minimum set
of prerequisite for PVH.

* 32bit support
Could you please explain why 32bit is important to get PVH out of tech
preview? I don't see 32 bit OSes as an important use case. Maybe there
is more behind it that I cannot see.
The primary reason was named before: 32-bit support will likely
end up changing the way 64-bit guests get launched.
I can work on the new boot ABI, even if it's just a design document now,
but the actual implementation needs to be done on top of the 32-bit
support series.

Boris, do you think you could send an early RFC of your 32-bit support
series in a couple of weeks at most?
That's highly unlikely. For one, I am still unable to boot MP guests.
In addition, it is all held together by rubber bands and matchsticks
so calling it an RFC would be an insult to RFCs. (for example, I
apparently broke HVM somewhere along the way).
How about working it the other way around.

Start with an HVM guest and start with a sane method of booting.  I
highly suggest multiboot1 as it is very easy and we have most of the
code already.  Whomever actually gets around to doing this gets leeway,
subject to it being sane (which the current method very certainly is not).
I agree that using a boot ABI similar to multiboot1 is going to solve
some of the issues that we currently have, while probably simplifying
the code to build a domain. There are also several multiboot1
implementations around which can be used as a basis for this for guest
OSes that don't have native multiboot support.

Start the domain without qemu, and expose some of the PV hypercalls to
HVM guests, and see how far it gets.  One will find suddenly that all
32bit and AMD problems have already been solved.  All the PV(h) kernel
needs to know is that there is no real hardware, and not to touch it.
This seems like a clean and nice way forward, but rather than PVH is
actually something else.  Am I the only one to think that making this
drastic change in the design at this stange (3 years in) is too late?
I don't think the ABI is going to change much, most of this plumbing is
going to be in Xen internals, so I wouldn't call it a drastic change.
To my mind, the ABI covers the boot method, but I would agree that the
runtime environment is unlikely to need changing.  Most of what is
involved along these lines is to lift the current restrictions.

There was no design in the slightest, which is why we have got 3 years
in and are in this position.
Please try to keep things friendly and contructive on this list.  Yes,
there was design; it was discussed on this list and at the Xen summit.
With hindsight, it turned out that "PV guest that uses a lightweight
HVM container" took a lot more work/code than was originally expected.

I suspect that an implementation of "HVM without qemu and some
hypercalls" will also turn out more complex than it sounds.  I believe
I've made my opinion clear that that's where PVH ought to end up, but
I'm unconvinced that starting from scratch will be the fastest way.
I believe the right way to move forward is to start implementing this
new boot ABI on top of HVM, without axing out the PVH code. I think most
of the current PVH code would still be needed for the HVM-without-dm
kind of guest, and that at some point both will meet.


This is a good thing to do in the medium-to-long term but it seems to me that we still should get current PVH implementation to work first (i.e. AMD/32-bit). If past experience is any indication, this rework will take a while while we have something working right now (warts and all).

For example, the diffstat of what I have now for 32-bit (i.e. UP only) is
    20 files changed, 503 insertions(+), 95 deletions(-)
and that is probably 75% debugging/crud.

Linux is even less:
    17 files changed, 221 insertions(+), 28 deletions(-)
(although I did some fairly awful things there).

So adding that part appears to be doable without major disruption on the Xen side. And I don't think AMD support will be any worse.


-boris


+1.  I agree, and think this is a very sensible way forwards.

I will send a design document for this boot ABI next week, but the plan
is as follows:

  - Start the guest in protected mode without paging.
A step in the middle here is finding finding the Xen cpuid leaves.

An elfnote signifying that the kernel is PVH-capable and a cpuid leaf
indicating that the environment is PVH seems like a good combination.

~Andrew

  - Fill the hypercall page using wrmsr (HVM).
  - Map the shared info page using XENMEM_add_to_physmap (HVM).

That means we can get rid of some of the ELFNOTES, the ones that come to
mind right now are:

  - XEN_ELFNOTE_VIRT_BASE
  - XEN_ELFNOTE_HYPERCALL_PAGE
  - XEN_ELFNOTE_HV_START_LOW
  - XEN_ELFNOTE_PAE_MODE
  - XEN_ELFNOTE_L1_MFN_VALID

And probably some more.


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.