All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Roger Pau Monné" <roger.pau@citrix.com>
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: xen-devel@lists.xenproject.org, Wei Liu <wl@xen.org>,
	Jan Beulich <jbeulich@suse.com>
Subject: Re: [Xen-devel] [PATCH] x86/hvm: always expose x2APIC feature in max HVM cpuid policy
Date: Tue, 24 Dec 2019 19:17:52 +0100	[thread overview]
Message-ID: <20191224181752.GE11756@Air-de-Roger> (raw)
In-Reply-To: <950e6538-40f4-c698-75d9-f532bccfae52@citrix.com>

On Tue, Dec 24, 2019 at 04:00:27PM +0000, Andrew Cooper wrote:
> On 24/12/2019 12:42, Roger Pau Monné wrote:
> > On Tue, Dec 24, 2019 at 12:23:12PM +0000, Andrew Cooper wrote:
> >> On 24/12/2019 10:18, Roger Pau Monne wrote:
> >>> On hardware without x2APIC support Xen emulated local APIC will
> >>> provide such mode, and hence the feature should be set in the maximum
> >>> HVM cpuid policy.
> >>>
> >>> Not exposing it in the maximum policy results in HVM domains not
> >>> getting such feature exposed unless it's also supported by the
> >>> underlying hardware.
> >>>
> >>> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
> >> x2apic has never been exposed via this mechanism, due to its effects on
> >> topology calculations.
> > Well, it's exposed in hvm_max_cpuid_policy if it's present in the
> > hardware. IMO it's kind of weird that the presence of the x2APIC feature
> > on the max policy depends on the underlying hardware, when it's always
> > supported by the emulated vlapic.
> >
> > I think x2APIC must either always be part of the max policy, or never,
> > or else it's very easy to cause regressions because it's not so easy
> > to find a box without x2APIC.
> 
> Hmm - this does highlight the inconsistency in the existing logic.  I'm
> not overly surprised - this is a remnant of the old model which hasn't
> been rewritten yet.

I could do something like:

diff --git a/tools/libxc/xc_cpuid_x86.c b/tools/libxc/xc_cpuid_x86.c
index 519d6d8bd0..a7adc41854 100644
--- a/tools/libxc/xc_cpuid_x86.c
+++ b/tools/libxc/xc_cpuid_x86.c
@@ -641,6 +641,7 @@ int xc_cpuid_apply_policy(xc_interface *xch, uint32_t domid,
         p->extd.itsc = true;
         p->basic.vmx = true;
         p->extd.svm = true;
+        p->basic.x2apic = true;
     }
 
     rc = x86_cpuid_copy_to_buffer(p, leaves, &nr_leaves);

But it seems kind of bogus to me that such feature is not part of the
hvm_max_cpuid_policy, at the end of day the toolstack has no knowledge
of whether the hypervisor provides a x2APIC interface or not (apart
from us hardcoding it in the tools like the above patch).

> >
> >> It has however always been down to the toolstack to opt in, and Xen
> >> permits this via recalculate_cpuid_policy(), on the expectation that the
> >> toolstack knew what it was doing WRT topology (all evidence actually to
> >> the contrary).
> > Hm, I can try to force the setting in libxc.
> >
> >> If we're seeing a recent change in behaviour, then it will be from libxc.
> > IIRC x2APIC was always exposed to HVM guests regardless of the
> > underlying hardware support.
> 
> I have a suspicion that this may have been broken by c/s 3e0c8272f in
> 2015...

I could swear Xen was exposing the x2APIC CPUID feature on the box I'm
currently testing during the 4.13 development cycle, or else I did
hack it myself for development purposes and completely forgot to send
a patch afterwards.

Thanks, Roger.

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

  reply	other threads:[~2019-12-24 18:18 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-12-24 10:18 [Xen-devel] [PATCH] x86/hvm: always expose x2APIC feature in max HVM cpuid policy Roger Pau Monne
2019-12-24 12:23 ` Andrew Cooper
2019-12-24 12:42   ` Roger Pau Monné
2019-12-24 16:00     ` Andrew Cooper
2019-12-24 18:17       ` Roger Pau Monné [this message]
2020-01-09 10:48         ` Roger Pau Monné

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=20191224181752.GE11756@Air-de-Roger \
    --to=roger.pau@citrix.com \
    --cc=andrew.cooper3@citrix.com \
    --cc=jbeulich@suse.com \
    --cc=wl@xen.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.