All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Luis R. Rodriguez" <mcgrof@suse.com>
To: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Cc: "Andy Lutomirski" <luto@amacapital.net>,
	"Juergen Gross" <jgross@suse.com>,
	"Jeremy Fitzhardinge" <jeremy@goop.org>,
	"Rusty Russell" <rusty@rustcorp.com.au>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"David Vrabel" <david.vrabel@citrix.com>,
	"H. Peter Anvin" <hpa@zytor.com>,
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	"Borislav Petkov" <bp@suse.de>,
	"Roger Pau Monné" <roger.pau@citrix.com>,
	"X86 ML" <x86@kernel.org>, "Jörg Rödel" <jroedel@suse.de>
Subject: Re: [Xen-devel] [PATCH v1 04/12] xen/hvmlite: Bootstrap HVMlite guest
Date: Tue, 26 Jan 2016 11:14:39 -0800	[thread overview]
Message-ID: <CAB=NE6WZeP2EfFyE64ya14LYFuCQt+a-YS9CsDQwM5WDj_TfAQ@mail.gmail.com> (raw)
In-Reply-To: <56A7C239.4060107@oracle.com>

On Tue, Jan 26, 2016 at 11:00 AM, Boris Ostrovsky
<boris.ostrovsky@oracle.com> wrote:
> On 01/26/2016 01:46 PM, Andy Lutomirski wrote:
>>
>> On Tue, Jan 26, 2016 at 10:34 AM, Luis R. Rodriguez <mcgrof@suse.com>
>> wrote:
>>>
>>> On Mon, Jan 25, 2016 at 05:28:08PM -0500, Boris Ostrovsky wrote:
>>>>
>>>> On 01/25/2016 04:21 PM, H. Peter Anvin wrote:
>>>>>
>>>>> On 01/25/16 13:12, Luis R. Rodriguez wrote:
>>>>>>>
>>>>>>> Perhaps, but someone would still have to set hardware_subarch. And
>>>>>>> it's hvmlite_bootparams() that does it.
>>>>>>
>>>>>> No, Xen would do it as well, essentially all of hvmlite_bootparams()
>>>>>> could be
>>>>>> done in Xen.
>>>>>>
>>>>> Or a stub code.
>>>>
>>>> This patch in fact is the stub for Xen HVMlite guests, after we are
>>>> done with it we jump to bare-metal startup code (i.e startup_32|64)
>>>
>>> Right the point is the stub need not be in Linux, I'll explain in the
>>> other
>>> thread where I provided more details on the different known approaches.
>>>
>> ISTM if the Xen ABI-specified entry point has a different convention
>> than the Linux native entry, then the stub should live in Linux.  It
>> would be just a couple if lines of code, right?
>
>
> It's not exactly a couple of lines but it's not large neither. It mainly
> sets up boot_params (similar to what make_boot_params() does for EFI). Plus,
> for 64-bit, it loads identity page tables and switches to long mode. And
> then jumps to bare-meta startup code.

This terse summary provides an example of the issue I'm highlighting.
Even though the stub is small we undermine its impact!

Although the stub is small the different entry point also enables
subtle additions which are required, although they are minimal they
are important and if not considered for new x86 features causes
regressions. I don't care what people tell me about "this should have
been caught by code review, and no one CC'd me -- whaa!" -- this is a
silly expectation and I think we should do better.

Case in point:

xen_start_kernel() has seen regressions now on both cr4_init_shadow()
which you forgot to add to Xen Andy -- and later Boris fixed. Another
example: the latest one is a kasan init -- which to this day remains
fucked up -- a Kasan enabled PV guest crashes, and fixing is no where
in sight. I flagged this a while ago, and I think we should put a
proactive measure in place for that.

The linker table stuff I'm doing was not for kicks -- its a means to
an end here, and although I can't yet read subarch at early init, if
we had it, then things link xen_start_kernel() could just be an x86
init stub, it'd be the first stub Xen runs. You can keep whatever
boot_params setup stub it does today, even though I think its cleaner
done in Xen, but at the very least it could at least instead just
*read* the Xen custom generic structure to parse and set boot_params
by using subarch_data pointer.

I also have been reading the history of code changes on the other
entry points in Linux and even though the code is small I see tons of
commits in there for minor but critical fixes all over, likewise
comments and recommendations and visions to unify / share code. I
refuse to accept that we should undermine the issues of a new entry
point or leaving the situation as-is with dual entry points for x86_64
 / xen if we can instead just cleanly unify even asm entry points.

>> The issue that caused headaches in the past isn't that there's code
>> that's executed only on native, it's that there are whole big
>> functions that are executed only on native for no good reason and that
>> aren't clearly marked.

Its more than that, as I noted.

> This won't happen with HVMlite.

And that's fine, its just I think we can avoid yet-another entry --
even if we still are coming into a common C entry later.

>> If we had native_start_kernel and xen_start_kernel, and they both
>> called very quickly in to common_start_kernel, it would be very clear
>> what's going on.
>
> What is now xen_start_kernel() is no longer the entry point for HVMlite. It
> is called as x86_init.oem.arch_setup() (or I may even move it to
> x86_hyper_xen.init_platform() or something like that).

And that's a huge win! Yet I invite us to consider other prospects to
even merge more and simplify more.

 Luis

  reply	other threads:[~2016-01-26 19:15 UTC|newest]

Thread overview: 121+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-01-22 21:35 [PATCH v1 00/12] HVMlite domU support Boris Ostrovsky
2016-01-22 21:35 ` Boris Ostrovsky
2016-01-22 21:35 ` [PATCH v1 01/12] x86/smp: Make start_secondary() and initial_pg_pmd visible globally Boris Ostrovsky
2016-01-22 21:35 ` Boris Ostrovsky
2016-01-25 10:53   ` David Vrabel
2016-01-25 10:53   ` David Vrabel
2016-01-25 15:30     ` Boris Ostrovsky
2016-01-25 15:30       ` Boris Ostrovsky
2016-01-26 21:58       ` Borislav Petkov
2016-01-26 21:58       ` Borislav Petkov
2016-01-22 21:35 ` [PATCH v1 02/12] xen/hvmlite: Factor out common kernel init code Boris Ostrovsky
2016-01-22 21:35   ` Boris Ostrovsky
2016-01-22 23:01   ` Luis R. Rodriguez
2016-01-22 23:01   ` Luis R. Rodriguez
2016-01-22 23:12     ` Boris Ostrovsky
2016-01-22 23:27       ` Boris Ostrovsky
2016-01-22 23:27       ` Boris Ostrovsky
2016-01-22 23:41       ` Luis R. Rodriguez
2016-01-22 23:41       ` Luis R. Rodriguez
2016-01-22 23:12     ` Boris Ostrovsky
2016-01-25 11:04   ` David Vrabel
2016-01-25 11:04   ` [Xen-devel] " David Vrabel
2016-01-25 15:42     ` Boris Ostrovsky
2016-01-25 15:42       ` Boris Ostrovsky
2016-01-22 21:35 ` [PATCH v1 03/12] xen/hvmlite: Import hvmlite-related Xen public interfaces Boris Ostrovsky
2016-01-22 21:35   ` Boris Ostrovsky
2016-01-22 21:35 ` [PATCH v1 04/12] xen/hvmlite: Bootstrap HVMlite guest Boris Ostrovsky
2016-01-22 21:35   ` Boris Ostrovsky
2016-01-22 23:32   ` Luis R. Rodriguez
2016-01-22 23:32     ` Luis R. Rodriguez
2016-01-23  0:30     ` [Xen-devel] " Andrew Cooper
2016-01-23  0:30       ` Andrew Cooper
2016-01-23  0:45       ` [Xen-devel] " Luis R. Rodriguez
2016-01-23  0:45       ` Luis R. Rodriguez
2016-01-23  0:55       ` Luis R. Rodriguez
2016-01-23  0:55       ` [Xen-devel] " Luis R. Rodriguez
2016-01-23 14:49         ` Andrew Cooper
2016-01-23 14:49         ` [Xen-devel] " Andrew Cooper
2016-01-23 15:34           ` Konrad Rzeszutek Wilk
2016-01-23 15:34             ` Konrad Rzeszutek Wilk
2016-01-23 16:01             ` [Xen-devel] " H. Peter Anvin
2016-01-23 16:12               ` Konrad Rzeszutek Wilk
2016-01-23 16:12                 ` Konrad Rzeszutek Wilk
2016-01-23 18:28                 ` H. Peter Anvin
2016-01-23 18:28                 ` [Xen-devel] " H. Peter Anvin
2016-01-25 10:30                 ` Roger Pau Monné
2016-01-25 10:30                 ` [Xen-devel] " Roger Pau Monné
2016-01-23 16:01             ` H. Peter Anvin
2016-01-25 22:19           ` Luis R. Rodriguez
2016-01-25 22:19           ` [Xen-devel] " Luis R. Rodriguez
2016-01-25 22:55             ` Boris Ostrovsky
2016-01-26 20:30               ` Luis R. Rodriguez
2016-01-26 20:30               ` [Xen-devel] " Luis R. Rodriguez
2016-01-26 21:51                 ` Boris Ostrovsky
2016-01-26 21:51                 ` [Xen-devel] " Boris Ostrovsky
2016-01-27  0:04                   ` Luis R. Rodriguez
2016-01-27  0:04                   ` [Xen-devel] " Luis R. Rodriguez
2016-01-27  2:16                     ` Luis R. Rodriguez
2016-01-27  4:54                       ` Luis R. Rodriguez
2016-01-27 14:42                         ` Konrad Rzeszutek Wilk
2016-01-27 14:50                           ` [Xen-devel] " David Vrabel
2016-01-27 15:06                             ` Boris Ostrovsky
2016-01-27 15:09                               ` David Vrabel
2016-01-27 15:09                               ` [Xen-devel] " David Vrabel
2016-01-27 15:17                                 ` Boris Ostrovsky
2016-01-27 15:29                                   ` Konrad Rzeszutek Wilk
2016-01-27 16:15                                     ` Boris Ostrovsky
2016-01-27 16:15                                     ` [Xen-devel] " Boris Ostrovsky
2016-01-27 18:48                                       ` Luis R. Rodriguez
2016-01-27 18:48                                       ` [Xen-devel] " Luis R. Rodriguez
2016-01-27 19:00                                         ` Luis R. Rodriguez
2016-01-27 19:00                                         ` [Xen-devel] " Luis R. Rodriguez
2016-01-27 23:58                                           ` Boris Ostrovsky
2016-01-27 23:58                                           ` Boris Ostrovsky
2016-01-27 15:17                                 ` Boris Ostrovsky
2016-01-27 15:06                             ` Boris Ostrovsky
2016-01-27 16:14                             ` [Xen-devel] " Borislav Petkov
2016-01-27 16:14                             ` Borislav Petkov
2016-01-27 14:50                           ` David Vrabel
2016-01-27  2:16                     ` Luis R. Rodriguez
2016-01-25 22:55             ` Boris Ostrovsky
2016-01-25 15:08       ` [Xen-devel] " Boris Ostrovsky
2016-01-25 15:08       ` Boris Ostrovsky
2016-01-25 16:08     ` Boris Ostrovsky
2016-01-25 21:12       ` Luis R. Rodriguez
2016-01-25 21:12       ` Luis R. Rodriguez
2016-01-25 21:21         ` H. Peter Anvin
2016-01-25 21:21         ` H. Peter Anvin
2016-01-25 22:28           ` Boris Ostrovsky
2016-01-26 18:34             ` Luis R. Rodriguez
2016-01-26 18:46               ` Andy Lutomirski
2016-01-26 19:00                 ` Boris Ostrovsky
2016-01-26 19:00                 ` Boris Ostrovsky
2016-01-26 19:14                   ` Luis R. Rodriguez [this message]
2016-01-26 19:14                   ` Luis R. Rodriguez
2016-01-26 18:46               ` Andy Lutomirski
2016-01-26 18:34             ` Luis R. Rodriguez
2016-01-25 22:28           ` Boris Ostrovsky
2016-01-25 16:08     ` Boris Ostrovsky
2016-01-22 21:35 ` [PATCH v1 05/12] xen/hvmlite: Allow HVMlite guests delay initializing grant table Boris Ostrovsky
2016-01-22 21:35   ` Boris Ostrovsky
2016-01-22 21:35 ` [PATCH v1 06/12] xen/hvmlite: Initialize PCI Boris Ostrovsky
2016-01-22 21:35   ` Boris Ostrovsky
2016-01-25 10:21   ` Roger Pau Monné
2016-01-25 10:21   ` Roger Pau Monné
2016-01-22 21:35 ` [PATCH v1 07/12] xen/hvmlite: Prepare cpu_initialize_context() routine for HVMlite SMP Boris Ostrovsky
2016-01-22 21:35   ` Boris Ostrovsky
2016-01-22 21:35 ` [PATCH v1 08/12] xen/hvmlite: Initialize context for secondary VCPUs Boris Ostrovsky
2016-01-22 21:35 ` Boris Ostrovsky
2016-01-22 21:35 ` [PATCH v1 09/12] xen/hvmlite: Extend APIC operations for HVMlite guests Boris Ostrovsky
2016-01-22 21:35   ` Boris Ostrovsky
2016-01-22 21:35 ` [PATCH v1 10/12] xen/hvmlite: Use x86's default timer init " Boris Ostrovsky
2016-01-22 21:35 ` Boris Ostrovsky
2016-01-22 21:35 ` [PATCH v1 11/12] xen/hvmlite: Boot secondary CPUs Boris Ostrovsky
2016-01-22 21:35 ` Boris Ostrovsky
2016-01-22 21:35 ` [PATCH v1 12/12] xen/hvmlite: Enable CPU on-/offlining Boris Ostrovsky
2016-01-22 21:35   ` Boris Ostrovsky
2016-01-25 10:51 ` [PATCH v1 00/12] HVMlite domU support David Vrabel
2016-01-25 15:25   ` Boris Ostrovsky
2016-01-25 15:25   ` Boris Ostrovsky
2016-01-25 10:51 ` David Vrabel

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=NE6WZeP2EfFyE64ya14LYFuCQt+a-YS9CsDQwM5WDj_TfAQ@mail.gmail.com' \
    --to=mcgrof@suse.com \
    --cc=boris.ostrovsky@oracle.com \
    --cc=bp@suse.de \
    --cc=david.vrabel@citrix.com \
    --cc=hpa@zytor.com \
    --cc=jeremy@goop.org \
    --cc=jgross@suse.com \
    --cc=jroedel@suse.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=luto@amacapital.net \
    --cc=roger.pau@citrix.com \
    --cc=rusty@rustcorp.com.au \
    --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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.