xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
From: "Luis R. Rodriguez" <mcgrof@kernel.org>
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: "Pere Monclus" <pmonclus@plumgrid.com>,
	"Matt Fleming" <matt@codeblueprint.co.uk>,
	"Brenden Blanco" <bblanco@plumgrid.com>,
	"X86 ML" <x86@kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"Andy Lutomirski" <luto@amacapital.net>,
	"Luis R. Rodriguez" <mcgrof@kernel.org>,
	"Gary Lin" <GLin@suse.com>,
	"David Vrabel" <david.vrabel@citrix.com>,
	"H. Peter Anvin" <hpa@zytor.com>,
	xen-devel <xen-devel@lists.xenproject.org>,
	"Boris Ostrovsky" <boris.ostrovsky@oracle.com>,
	"Borislav Petkov" <bp@suse.de>,
	"Linus Torvalds" <torvalds@linux-foundation.org>,
	"Roger Pau Monné" <roger.pau@citrix.com>
Subject: Re: [PATCH v2 02/11] xen/hvmlite: Bootstrap HVMlite guest
Date: Tue, 5 Apr 2016 15:02:49 -0700	[thread overview]
Message-ID: <CAB=NE6W7ZRdEvLwmTSax8WWhMeUsNTZr4xMeYHc1p6krJJJRmA__19458.2910546616$1459893886$gmane$org@mail.gmail.com> (raw)
In-Reply-To: <20160204231031.GM12481@wotan.suse.de>

On Thu, Feb 4, 2016 at 3:10 PM, Luis R. Rodriguez <mcgrof@suse.com> wrote:
> On Thu, Feb 04, 2016 at 12:51:38AM +0000, Andrew Cooper wrote:
>> On 03/02/2016 23:59, Luis R. Rodriguez wrote:
>> > On Wed, Feb 03, 2016 at 08:52:50PM +0000, Andrew Cooper wrote:
>> >> On 03/02/16 18:55, Luis R. Rodriguez wrote:
>> >>> We add new hypervisor type to close the semantic gap for hypervisor types, and
>> >>> much like subarch enable also a subarch_data to let you pass and use your
>> >>> hvmlite_start_info. This would not only help with the semantics but also help
>> >>> avoid yet-another-entry point and force us to provide a well define structure
>> >>> for considering code that should not run by pegging it as required or supported
>> >>> for different early x86 code stubs.
>> >> Was I unclear last time?  Xen *will not* be introducing Linux-specifics
>> >> into the HVMLite starting ABI.
>> > This does not have to be "Linux specifics" but rather a light way to enable
>> > a hypervisor to clue in *any* OS of its hypervisor type, guest type, and
>> > custom hypervisor data that can be used to populate needed OS specifics
>> > about the guest. Perhaps Xen's own loader mechanism could be extended just
>> > slightly to become *that* standard, its just right now it doesn't seem to
>> > enable for generalizing this in a very useful way for OSes. Its all
>> > custom stubs.
>>
>> There are already standard x86 ways of doing this, via the hypervisor
>> cpuid bits.  Xen presents itself normally in this regard, as do all the
>> other hypervisors.
>
> I don't think this is availably early in asm boot? Its why I think the
> zero page is convenient. The boot loader should in theory know these
> things, as well as if its in 32-bit, 64-bit, etc.
>
>> It is completely backwards to expect a hypervisor (or toolstack in our
>> case) to deliberately prod what it suspects might be a Linux binary in a
>> way which it things a Linux binary might like to be prodded.
>
> Perhaps prodding tons of info seems ludicrous, however prodding at least a
> loader type and custom data pointer to interpret that so that then your stub
> can interpret seems sensible for many reasons and I don't think prodding two
> things is much to ask for, given the possible gains on clean architecture.
> Its why I am suggesting perhaps this should just be standardized.
>
> We need flexibility on both sides.

And... it seems EFI boot already does this!

A few of us have been discussing now the EFI boot prospect as a
complete alternative to this and avoiding adding
yet-another-boot-entry (TM) to x86. That deserves a full discussion on
its own so will send notes on that next on a separate new thread.

>> >> Your perceived problem with multiple entry points is not a problem with
>> >> multiple entry points; It is a problem with multiple different paths
>> >> performing the same initialisation.
>> > Its actually more of an issue with the lack of strong general semantics
>> > available for different hypervisors and guest types and requirements for x86's
>> > init path. What you end up with as collateral is multiple entry points, and
>> > these can be sloppy and as you note can perform the same initialisation.
>> > Another issue is the inability to proactively ensure new x86 init code
>> > addresses different x86 requirements (cr4 shadow regression and Kasan still
>> > being broken on Xen are two examples) and it just so happens that the lack of
>> > semantics for the different guest types required to be evaluated is one issue
>> > for x86.
>> >
>> > We can do better.
>>
>> Even with a perfect startup() routine which caters for all runtime
>> usecases, you cannot avoid having multiple entry stubs to cater for the
>> different ways the binary might be started.
>>
>> Unless you are volunteering to write a single stub which can first
>> evaluate whether it is in 16/32/64bit mode, then create a safe stack to
>> use, then evaluate how it was started (multiboot, legacy BIOS, EFI,
>> etc.) and turn all this information into a zeropage.
>>
>> I don't know that would be possible, but the point is moot as it
>> definitely wouldn't be maintainable if it were possible.
>
> I think some folks have hope at least some of it might be. I can't do this,
> otherwise I would have done it already. Given my review of the commit logs on
> different entry points, and code I do think its sensible to desire this to help
> with semantics on startup and this should in turn help duplication, bugs, but I
> obviously do not doubt its difficulty.

It would seem streamlining off of an EFI boot entry could boot strap
this effort. To this end I'll be sending out a new thread in which we
review that a bit more.

> Its at least sensible in my mind to strive towards the best possible semantics
> and code sharing from x86-64 bit onwards and if I can help with that I'll do
> what I can.

Me and Andy Lutomirski have been recently fending off some ill
conceived virtualization semantics in the kernel, that work seems to
have proven that the lack of appropriate semantics has only incurred
hacks on the kernel which can be replaced by properly thought out
solutions -- which ultimately should help with other guest types, and
avoid further virtualization hackery in the kernel. If we need to
extend semantics for another guest type I'd like for us to identify
that now and address it.

  Luis

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

  parent reply	other threads:[~2016-04-05 22:03 UTC|newest]

Thread overview: 54+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-02-01 15:38 [PATCH v2 00/11] HVMlite domU support Boris Ostrovsky
2016-02-01 15:38 ` [PATCH v2 01/11] xen/hvmlite: Import hvmlite-related Xen public interfaces Boris Ostrovsky
2016-02-02 16:06   ` David Vrabel
2016-02-01 15:38 ` [PATCH v2 02/11] xen/hvmlite: Bootstrap HVMlite guest Boris Ostrovsky
2016-02-02 16:39   ` David Vrabel
     [not found]   ` <56B0DBD6.3060205@citrix.com>
2016-02-02 17:19     ` Boris Ostrovsky
2016-02-03 18:55   ` Luis R. Rodriguez
     [not found]   ` <20160203185525.GV20964@wotan.suse.de>
2016-02-03 20:11     ` Boris Ostrovsky
2016-02-03 20:52     ` Andrew Cooper
     [not found]     ` <56B25F0C.2050808@oracle.com>
2016-02-03 23:40       ` Luis R. Rodriguez
     [not found]       ` <20160203234026.GS20964@wotan.suse.de>
2016-02-04 19:54         ` Boris Ostrovsky
     [not found]         ` <56B3AC67.7080704@oracle.com>
2016-02-04 20:57           ` Luis R. Rodriguez
     [not found]           ` <20160204205721.GJ12481@wotan.suse.de>
2016-02-04 22:28             ` Boris Ostrovsky
     [not found]     ` <56B268A2.5000704@citrix.com>
2016-02-03 23:59       ` Luis R. Rodriguez
     [not found]       ` <20160203235908.GT20964@wotan.suse.de>
2016-02-04  0:08         ` Luis R. Rodriguez
2016-02-04  0:51         ` Andrew Cooper
     [not found]         ` <56B2A09A.70404@citrix.com>
2016-02-04 23:10           ` Luis R. Rodriguez
     [not found]           ` <20160204231031.GM12481@wotan.suse.de>
2016-04-05 22:02             ` Luis R. Rodriguez [this message]
2016-04-24 20:23   ` Borislav Petkov
     [not found]   ` <20160424202314.GA3973@pd.tnic>
2016-04-25 13:21     ` Boris Ostrovsky
     [not found]     ` <571E19D7.1080301@oracle.com>
2016-04-25 13:47       ` Borislav Petkov
     [not found]       ` <20160425134749.GB28454@pd.tnic>
2016-04-25 13:54         ` Boris Ostrovsky
     [not found]         ` <571E219D.2090308@oracle.com>
2016-04-25 14:11           ` Borislav Petkov
     [not found]           ` <20160425141145.GE28454@pd.tnic>
2016-04-25 14:42             ` Boris Ostrovsky
     [not found]             ` <571E2CC7.7080907@oracle.com>
2016-04-25 15:22               ` Borislav Petkov
     [not found]               ` <20160425152209.GH28454@pd.tnic>
2016-04-25 15:48                 ` Boris Ostrovsky
2016-04-26 10:53                   ` Borislav Petkov
2016-04-25 17:24     ` David Vrabel
2016-02-01 15:38 ` [PATCH v2 03/11] xen/hvmlite: Initialize HVMlite kernel Boris Ostrovsky
2016-02-17 20:08   ` Luis R. Rodriguez
2016-02-01 15:38 ` [PATCH v2 04/11] xen/hvmlite: Allow HVMlite guests delay initializing grant table Boris Ostrovsky
2016-02-01 15:38 ` [PATCH v2 05/11] xen/hvmlite: HVMlite guests always have PV devices Boris Ostrovsky
2016-02-01 15:38 ` [PATCH v2 06/11] xen/hvmlite: Prepare cpu_initialize_context() routine for HVMlite SMP Boris Ostrovsky
2016-02-02 16:16   ` David Vrabel
2016-02-01 15:38 ` [PATCH v2 07/11] xen/hvmlite: Initialize context for secondary VCPUs Boris Ostrovsky
2016-02-02 16:21   ` David Vrabel
     [not found]   ` <56B0D786.7000002@citrix.com>
2016-02-02 16:58     ` Boris Ostrovsky
     [not found]     ` <56B0E046.6050900@oracle.com>
2016-02-04 10:07       ` David Vrabel
2016-02-04 12:58       ` Doug Goldstein
     [not found]       ` <56B34B01.50000@cardoe.com>
2016-02-04 19:08         ` Boris Ostrovsky
2016-02-01 15:38 ` [PATCH v2 08/11] xen/hvmlite: Extend APIC operations for HVMlite guests Boris Ostrovsky
2016-02-04 10:04   ` David Vrabel
     [not found]   ` <56B32220.4040505@citrix.com>
2016-02-04 12:14     ` Roger Pau Monné
     [not found]     ` <56B340B4.3050406@citrix.com>
2016-02-04 14:01       ` Boris Ostrovsky
2016-02-01 15:38 ` [PATCH v2 09/11] xen/hvmlite: Use x86's default timer init " Boris Ostrovsky
2016-02-02 16:27   ` David Vrabel
     [not found]   ` <56B0D8DD.5010206@citrix.com>
2016-02-02 17:01     ` Boris Ostrovsky
2016-02-01 15:38 ` [PATCH v2 10/11] xen/hvmlite: Boot secondary CPUs Boris Ostrovsky
2016-02-04 10:38   ` David Vrabel
     [not found]   ` <56B32A29.6050406@citrix.com>
2016-02-04 13:51     ` Boris Ostrovsky
2016-02-01 15:38 ` [PATCH v2 11/11] xen/hvmlite: Enable CPU on-/offlining Boris Ostrovsky
     [not found] ` <1454341137-14110-5-git-send-email-boris.ostrovsky@oracle.com>
2016-02-02 16:13   ` [PATCH v2 04/11] xen/hvmlite: Allow HVMlite guests delay initializing grant table David Vrabel
     [not found]   ` <56B0D596.4050301@citrix.com>
2016-02-02 16:49     ` Boris Ostrovsky
2016-02-03 18:59   ` Luis R. Rodriguez

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='CAB=NE6W7ZRdEvLwmTSax8WWhMeUsNTZr4xMeYHc1p6krJJJRmA__19458.2910546616$1459893886$gmane$org@mail.gmail.com' \
    --to=mcgrof@kernel.org \
    --cc=GLin@suse.com \
    --cc=andrew.cooper3@citrix.com \
    --cc=bblanco@plumgrid.com \
    --cc=boris.ostrovsky@oracle.com \
    --cc=bp@suse.de \
    --cc=david.vrabel@citrix.com \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=luto@amacapital.net \
    --cc=matt@codeblueprint.co.uk \
    --cc=pmonclus@plumgrid.com \
    --cc=roger.pau@citrix.com \
    --cc=torvalds@linux-foundation.org \
    --cc=x86@kernel.org \
    --cc=xen-devel@lists.xenproject.org \
    /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).