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: pmonclus@plumgrid.com, GLin@suse.coma, bblanco@plumgrid.com,
	x86@kernel.org, linux-kernel@vger.kernel.org,
	"Luis R. Rodriguez" <mcgrof@kernel.org>,
	David Vrabel <david.vrabel@citrix.com>,
	hpa@zytor.com, xen-devel@lists.xenproject.org, bp@suse.de,
	roger.pau@citrix.com
Subject: Re: [PATCH v2 02/11] xen/hvmlite: Bootstrap HVMlite guest
Date: Thu, 4 Feb 2016 21:57:21 +0100	[thread overview]
Message-ID: <20160204205721.GJ12481__27594.526371877$1454619531$gmane$org@wotan.suse.de> (raw)
In-Reply-To: <56B3AC67.7080704@oracle.com>

On Thu, Feb 04, 2016 at 02:54:15PM -0500, Boris Ostrovsky wrote:
> On 02/03/2016 06:40 PM, Luis R. Rodriguez wrote:
> >On Wed, Feb 03, 2016 at 03:11:56PM -0500, Boris Ostrovsky wrote:
> >>On 02/03/2016 01:55 PM, Luis R. Rodriguez wrote:
> >>>I saw no considerations for the recommendations I had made last on your v1:
> >>>
> >>>https://lkml.kernel.org/r/CAB=NE6XPA0YzbnM8=rspkKai6d3GkXXO00Gr0VZUYoyzNy6thw@mail.gmail.com
> >>>
> >>>Of importance:
> >>>
> >>>1) Using pv_info.paravirt_enabled = 1 is wrong unless you mean to say this
> >>>    is for legacy x86:
> >>>
> >>>Your patch #3 keeps on setting pv_info.paravirt_enabled = 1 and as discussed
> >>>this is wrong. It will be renamed to x86_legacy_free() to align with what folks
> >>>are pushing for a BIOS flag to annotate if a system requires legacy x86 stuff.
> >>>This also means re-thinking all use cases and ensuring subarch is used then
> >>>instead when the goal was to avoid Xen from entering that code. Today Xen does
> >>>not use this but with my work it does and it helps clean and brush up a lot of
> >>>these checks with future prospects to even help unify entry points.
> >>As I said earlier, I am not sure I understand what subarch buys us
> >>for HVMlite guests.
> >I accepted subarch may not be the right thing, so proposed a hypervisor type.
> 
> I don't see much difference between having an HV-specific subarch
> and a hypervisor type.

Ah, well here lies the issue. As per hpa subarch was not designed for defining
a hypervisor, but rather at least subarch PC (0) [should be used if the
hardware is] "enumerable using standard PC mechanisms (PCI, ACPI) and doesn't
need a special boot flow". Does that follow the definition of HVMlite?

I was pointing out to hpa how paravirt_enabled() has limitations in that it is
set late and as such only logically be available for all users after
setup_arch(), so I figured we could repurpose subarch for a hypervisor type.
He noted:

  "If you have a genuine need for a "hypervisor type" then that is a
   separate thing and should be treated separately from subarch.  However,
   you need to consider that some hypervisors can emulate other hypervisors
   and you may have more than one hypervisor API available."

> >What it buys you is a strong semantics association between code designed
> >for a purpose.
> >
> >>As for using paravirt_enabled -- this is really only used to
> >>differentiate HVM from HVMlite and I think (although I'd need to
> >>check) is only needed by Xen-specific code in a couple of places.
> >That sounds like a Xen specific use case as such an interface that is
> >pointed out as going to renamed to reflect its actual use case should not
> >be abused for that purpose.
> >
> >>So if/when it is removed we will switch to something else. Since your work is
> >>WIP I decided to keep using it until it's clear what other options may be
> >>available.
> >And your work is not WIP? I'll be splitting my patches up and the rename
> >will be atomic, it likely can go in first than yours, so not sure why you
> >are simply brushing this off.
> 
> I didn't mean to imply anything by saying that your patches are a
> WIP. It's just that I can only write and test my patches against
> existing code, not the future one.
> 
> I am sorry if you felt I was trying to say something else, it
> certainly was not my intent.

I don't really care about that, my point was that we both are working on
similar areas right now and both efforts are helping us clean up the init
path and give us better semantics, we should take both patch series into
consideration as they *both* are being reviewed now. The definition and use
of subarch at least of importance here for HVMLite in consideration for
future cleanup.

> >>>2) We should avoid more hypervisor type hacks, and just consider a new
> >>>    hypervisor type to close the gap:
> >>>
> >>>Using x86_legacy_free() and friends in a unified way for all systems means it
> >>>should only be used after init_hypervisor_platform() which is called during
> >>>setup_arch().  This means we have a semantic gap for checks on "are we on
> >>>hypervisor type and which one?".
> >>In this particular case we don't need any information about
> >>hypervisor until init_hypervisor_platform().
> >I pointed out in your v1 patchset how microcode loading was not blocked, you
> >then asked how KVM does it, and that was explained as well, and that they
> >don't enable it as well. You need a solution for this.
> 
> Not really. Xen will ignore writes to microcode-specific MSRs, just
> like KVM.
>
> This is exact same behavior we have now with regular HVM guests.

OK great. That still means the code will run, and if we can avoid that
why not. I am fine with annotating this as future work to help. Let me
then ask as well, how about the rest of the code during and after
startup_32() and startup_64() -- are we sure that's all safe ?

> >As-is the x86 boot protocol would not allow an easy way for this,
> >I'm suggesting we consider extending the boot protocol to add a
> >hypervisor type and data pointer much as with subarch and
> >subarch_data for the
> 
> Who will set hypervisor type and where? It won't be Xen as Andrew
> mentioned in another email.

Andrew seems to think I'm after some senseless prodding, there are
good reasons to consider setting at least a type and custom data
pointer, and in fact I think there are gains for this not only for
Linux but other OSes; so I'll keep working on my arguments there.

> >particular purpose of both enabling entry into the same startup_32()
> >but also a clean way for modifications of stubs both at the beginning
> >and at the end of startup_32().
> >
> >Pseudo code:
> >
> >startup_32()                         startup_64()
> >        |                                  |
> >        |                                  |
> >        V                                  V
> >pre_hypervisor_stub_32()	pre_hypervisor_stub_64()
> >        |                                  |
> >        |                                  |
> >        V                                  V
> >  [existing startup_32()]       [existing startup_64()]
> >        |                                  |
> >        |                                  |
> >        V                                  V
> >post_hypervisor_stub_32()	post_hypervisor_stub_64()
> >
> >The pre_hypervisor_stub_32() would have much of the code in
> >hvmlite_start_xen() but for 32-bit, pre_hypervisor_stub_64()
> >would have the 64-bits.
> 
> 
> Sure. When the protocol is agreed upon and this code is written we
> will just move hvmlite_start_xen() to pre_hypervisor_stub_32().

OK fair enough.

> >+int xen_hvmlite __attribute__((section(".data"))) = 0;
> >+struct hvm_start_info hvmlite_start_info __attribute__((section(".data")));
> >+uint hvmlite_start_info_sz = sizeof(hvmlite_start_info);
> >+struct boot_params xen_hvmlite_boot_params __attribute__((section(".data")));
> >+#endif
> >+
> >>>The section annotations seems very special use case but likely worth documenting
> >>>and defining a new macro for in include/linux/compiler.h. This would make it
> >>>easier to change should we want to change the section used here later and
> >>>enable others to easily look for the reason for these annotations in a
> >>>single place.
> >>I wonder whether __initdata would be a good attribute. We only need
> >>this early in the boot.
> >I could not find other users of .data other than some specific driver.
> >Using anything with *init* alludes you can free the data later but if we
> >want to keep it I suggest a different prefix, up to you.
> 
> That's why I said that we only need this info early in the boot.

Still -- better just document and add a shared macro for it.

  Luis

  parent reply	other threads:[~2016-02-04 20:57 UTC|newest]

Thread overview: 108+ 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 ` Boris Ostrovsky
2016-02-01 15:38 ` [PATCH v2 01/11] xen/hvmlite: Import hvmlite-related Xen public interfaces Boris Ostrovsky
2016-02-01 15:38   ` Boris Ostrovsky
2016-02-02 16:06   ` David Vrabel
2016-02-02 16:06   ` [Xen-devel] " David Vrabel
2016-02-01 15:38 ` [PATCH v2 02/11] xen/hvmlite: Bootstrap HVMlite guest Boris Ostrovsky
2016-02-01 15:38   ` Boris Ostrovsky
2016-02-02 16:39   ` David Vrabel
2016-02-02 16:39   ` [Xen-devel] " David Vrabel
2016-02-02 17:19     ` Boris Ostrovsky
2016-02-02 17:19     ` Boris Ostrovsky
2016-02-03 18:55   ` Luis R. Rodriguez
2016-02-03 18:55   ` Luis R. Rodriguez
2016-02-03 20:11     ` Boris Ostrovsky
2016-02-03 23:40       ` Luis R. Rodriguez
2016-02-03 23:40       ` Luis R. Rodriguez
2016-02-04 19:54         ` Boris Ostrovsky
2016-02-04 20:57           ` Luis R. Rodriguez
2016-02-04 22:28             ` Boris Ostrovsky
2016-02-04 22:28             ` Boris Ostrovsky
2016-02-04 20:57           ` Luis R. Rodriguez [this message]
2016-02-04 19:54         ` Boris Ostrovsky
2016-02-03 20:11     ` Boris Ostrovsky
2016-02-03 20:52     ` Andrew Cooper
2016-02-03 20:52     ` [Xen-devel] " Andrew Cooper
2016-02-03 23:59       ` Luis R. Rodriguez
2016-02-04  0:08         ` Luis R. Rodriguez
2016-02-04  0:08         ` [Xen-devel] " Luis R. Rodriguez
2016-02-04  0:51         ` Andrew Cooper
2016-02-04  0:51         ` [Xen-devel] " Andrew Cooper
2016-02-04 23:10           ` Luis R. Rodriguez
2016-04-05 22:02             ` Luis R. Rodriguez
2016-04-05 22:02             ` [Xen-devel] " Luis R. Rodriguez
2016-02-04 23:10           ` Luis R. Rodriguez
2016-02-03 23:59       ` Luis R. Rodriguez
2016-04-24 20:23   ` Borislav Petkov
2016-04-24 20:23   ` Borislav Petkov
2016-04-25 13:21     ` Boris Ostrovsky
2016-04-25 13:21     ` Boris Ostrovsky
2016-04-25 13:47       ` Borislav Petkov
2016-04-25 13:47       ` Borislav Petkov
2016-04-25 13:54         ` Boris Ostrovsky
2016-04-25 13:54         ` Boris Ostrovsky
2016-04-25 14:11           ` Borislav Petkov
2016-04-25 14:11           ` Borislav Petkov
2016-04-25 14:42             ` Boris Ostrovsky
2016-04-25 14:42             ` Boris Ostrovsky
2016-04-25 15:22               ` Borislav Petkov
2016-04-25 15:22               ` Borislav Petkov
2016-04-25 15:48                 ` Boris Ostrovsky
2016-04-25 15:48                   ` Boris Ostrovsky
2016-04-26 10:53                   ` Borislav Petkov
2016-04-26 10:53                   ` Borislav Petkov
2016-04-25 17:24     ` David Vrabel
2016-04-25 17:24     ` [Xen-devel] " David Vrabel
2016-02-01 15:38 ` [PATCH v2 03/11] xen/hvmlite: Initialize HVMlite kernel Boris Ostrovsky
2016-02-01 15:38   ` Boris Ostrovsky
2016-02-17 20:08   ` [Xen-devel] " Luis R. Rodriguez
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-02 16:13   ` David Vrabel
2016-02-02 16:13   ` [Xen-devel] " David Vrabel
2016-02-02 16:49     ` Boris Ostrovsky
2016-02-02 16:49     ` Boris Ostrovsky
2016-02-03 18:59   ` Luis R. Rodriguez
2016-02-03 18:59   ` Luis R. Rodriguez
2016-02-01 15:38 ` 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   ` 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-01 15:38   ` Boris Ostrovsky
2016-02-02 16:16   ` David Vrabel
2016-02-02 16:16   ` [Xen-devel] " David Vrabel
2016-02-01 15:38 ` [PATCH v2 07/11] xen/hvmlite: Initialize context for secondary VCPUs Boris Ostrovsky
2016-02-01 15:38   ` Boris Ostrovsky
2016-02-02 16:21   ` David Vrabel
2016-02-02 16:21   ` [Xen-devel] " David Vrabel
2016-02-02 16:58     ` Boris Ostrovsky
2016-02-02 16:58     ` [Xen-devel] " Boris Ostrovsky
2016-02-04 10:07       ` David Vrabel
2016-02-04 10:07       ` David Vrabel
2016-02-04 12:58       ` Doug Goldstein
2016-02-04 12:58       ` [Xen-devel] " Doug Goldstein
2016-02-04 19:08         ` Boris Ostrovsky
2016-02-04 19:08         ` [Xen-devel] " Boris Ostrovsky
2016-02-01 15:38 ` [PATCH v2 08/11] xen/hvmlite: Extend APIC operations for HVMlite guests Boris Ostrovsky
2016-02-01 15:38   ` Boris Ostrovsky
2016-02-04 10:04   ` [Xen-devel] " David Vrabel
2016-02-04 12:14     ` Roger Pau Monné
2016-02-04 12:14     ` [Xen-devel] " Roger Pau Monné
2016-02-04 14:01       ` Boris Ostrovsky
2016-02-04 14:01       ` [Xen-devel] " Boris Ostrovsky
2016-02-04 10:04   ` David Vrabel
2016-02-01 15:38 ` [PATCH v2 09/11] xen/hvmlite: Use x86's default timer init " Boris Ostrovsky
2016-02-01 15:38   ` Boris Ostrovsky
2016-02-02 16:27   ` [Xen-devel] " David Vrabel
2016-02-02 17:01     ` Boris Ostrovsky
2016-02-02 17:01     ` [Xen-devel] " Boris Ostrovsky
2016-02-02 16:27   ` David Vrabel
2016-02-01 15:38 ` [PATCH v2 10/11] xen/hvmlite: Boot secondary CPUs Boris Ostrovsky
2016-02-01 15:38   ` Boris Ostrovsky
2016-02-04 10:38   ` David Vrabel
2016-02-04 10:38   ` [Xen-devel] " David Vrabel
2016-02-04 13:51     ` Boris Ostrovsky
2016-02-04 13:51     ` [Xen-devel] " Boris Ostrovsky
2016-02-01 15:38 ` [PATCH v2 11/11] xen/hvmlite: Enable CPU on-/offlining Boris Ostrovsky
2016-02-01 15:38   ` Boris Ostrovsky

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='20160204205721.GJ12481__27594.526371877$1454619531$gmane$org@wotan.suse.de' \
    --to=mcgrof@suse.com \
    --cc=GLin@suse.coma \
    --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=mcgrof@kernel.org \
    --cc=pmonclus@plumgrid.com \
    --cc=roger.pau@citrix.com \
    --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.