All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jan Beulich <jbeulich@suse.com>
To: "Roger Pau Monné" <roger.pau@citrix.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	Ian Jackson <iwj@xenproject.org>, Wei Liu <wl@xen.org>,
	Anthony PERARD <anthony.perard@citrix.com>,
	xen-devel@lists.xenproject.org
Subject: Re: [PATCH v2 15/21] libs/guest: obtain a compatible cpu policy from two input ones
Date: Thu, 22 Apr 2021 12:48:36 +0200	[thread overview]
Message-ID: <d877502d-9c18-6ff3-6e01-ee997c9f196a@suse.com> (raw)
In-Reply-To: <YIFRQu/CLEId2uMi@Air-de-Roger>

On 22.04.2021 12:34, Roger Pau Monné wrote:
> On Thu, Apr 22, 2021 at 11:58:45AM +0200, Jan Beulich wrote:
>> On 22.04.2021 11:42, Roger Pau Monné wrote:
>>> On Wed, Apr 14, 2021 at 03:49:02PM +0200, Jan Beulich wrote:
>>>> On 13.04.2021 16:01, Roger Pau Monne wrote:
>>>>> @@ -944,3 +945,130 @@ bool xc_cpu_policy_is_compatible(xc_interface *xch, const xc_cpu_policy_t host,
>>>>>  
>>>>>      return false;
>>>>>  }
>>>>> +
>>>>> +static uint64_t level_msr(unsigned int index, uint64_t val1, uint64_t val2)
>>>>> +{
>>>>> +    uint64_t val = val1 & val2;;
>>>>
>>>> For arbitrary MSRs this isn't going to do any good. If only very
>>>> specific MSRs are assumed to make it here, I think this wants
>>>> commenting on.
>>>
>>> I've added: "MSRs passed to level_msr are expected to be bitmaps of
>>> features"
>>
>> How does such a comment help? I.e. how does the caller tell which MSRs
>> to pass here and which to deal with anyother way?
> 
> All MSRs should be passed to level_msr, but it's handling logic would
> need to be expanded to support MSRs that are not feature bitmaps.
> 
> It might be best to restore the previous switch and handle each MSR
> specifically?

I think so, yes. We need to be very careful with what a possible
default case does there, though.

>>>>> +                       xen_cpuid_leaf_t *out)
>>>>> +{
>>>>> +    *out = (xen_cpuid_leaf_t){ };
>>>>> +
>>>>> +    switch ( l1->leaf )
>>>>> +    {
>>>>> +    case 0x1:
>>>>> +    case 0x80000001:
>>>>> +        out->c = l1->c & l2->c;
>>>>> +        out->d = l1->d & l2->d;
>>>>> +        return true;
>>>>> +
>>>>> +    case 0xd:
>>>>> +        if ( l1->subleaf != 1 )
>>>>> +            break;
>>>>> +        out->a = l1->a & l2->a;
>>>>> +        return true;
>>>>
>>>> Could you explain your thinking behind this (a code comment would
>>>> likely help)? You effectively discard everything except subleaf 1
>>>> by returning false in that case, don't you?
>>>
>>> Yes, the intent is to only level the features bitfield found in
>>> subleaf 1.
>>>
>>> I was planning for level_leaf so far in this series to deal with the
>>> feature leaves part of the featureset only. I guess you would also
>>> like to leverage other parts of the xstate leaf, like the max_size or
>>> the supported bits in xss_{low,high}?
>>
>> The latter is clearly one of the things to consider, yes (alongside
>> the respective bits in sub-leaf 0 for XCR0). Sub-leaves > 1 may also
>> need dealing with ECX. Yet then again some or all of this may need
>> handling elsewhere, not the least because of the unusual handling of
>> leaf 0xd in the hypervisor. What gets checked and/or adjusted where
>> needs to be settled upon, and then the different parts of code would
>> imo better cross-reference each other.
> 
> There's a comment in recalculate_xstate that mentions that Da1 leaf is
> the only piece of information preserved, and that everything else is
> derived from feature state. I don't think it makes sense to try to
> level anything apart from Da1 if it's going to be discarded by
> recalculate_xstate anyway?
> 
> I can add a comment here regarding why only Da1 is taken into account
> for leveling so far.

Yes, this would help. Thanks.

Jan


  reply	other threads:[~2021-04-22 10:48 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-04-13 14:01 [PATCH v2 00/21] libs/guest: new CPUID/MSR interface Roger Pau Monne
2021-04-13 14:01 ` [PATCH v2 01/21] libxl: don't ignore the return value from xc_cpuid_apply_policy Roger Pau Monne
2021-04-28 15:13   ` Anthony PERARD
2021-04-13 14:01 ` [PATCH v2 02/21] libs/guest: rename xc_get_cpu_policy_size to xc_cpu_policy_get_size Roger Pau Monne
2021-04-13 14:01 ` [PATCH v2 03/21] libs/guest: introduce xc_cpu_policy_t Roger Pau Monne
2021-04-13 14:01 ` [PATCH v2 04/21] libs/guest: introduce helper to fetch a system cpu policy Roger Pau Monne
2021-04-14 13:28   ` Jan Beulich
2021-04-13 14:01 ` [PATCH v2 05/21] libs/guest: introduce helper to fetch a domain " Roger Pau Monne
2021-04-13 14:01 ` [PATCH v2 06/21] libs/guest: introduce helper to serialize a " Roger Pau Monne
2021-04-13 14:01 ` [PATCH v2 07/21] tools: switch existing users of xc_get_{system,domain}_cpu_policy Roger Pau Monne
2021-04-13 14:01 ` [PATCH v2 08/21] libs/guest: introduce a helper to apply a cpu policy to a domain Roger Pau Monne
2021-04-13 14:01 ` [PATCH v2 09/21] libs/guest: allow fetching a specific CPUID leaf from a cpu policy Roger Pau Monne
2021-04-13 14:01 ` [PATCH v2 10/21] tests/cpu-policy: add sorted MSR test Roger Pau Monne
2021-04-13 14:01 ` [PATCH v2 11/21] libs/guest: allow fetching a specific MSR entry from a cpu policy Roger Pau Monne
2021-04-13 14:01 ` [PATCH v2 12/21] libs/guest: allow updating a cpu policy CPUID data Roger Pau Monne
2021-04-13 14:01 ` [PATCH v2 13/21] libs/guest: allow updating a cpu policy MSR data Roger Pau Monne
2021-04-13 14:01 ` [PATCH v2 14/21] libs/guest: introduce helper to check cpu policy compatibility Roger Pau Monne
2021-04-14 13:36   ` Jan Beulich
2021-04-22  8:22     ` Roger Pau Monné
2021-04-22  8:31       ` Jan Beulich
2021-04-13 14:01 ` [PATCH v2 15/21] libs/guest: obtain a compatible cpu policy from two input ones Roger Pau Monne
2021-04-14 13:49   ` Jan Beulich
2021-04-22  9:42     ` Roger Pau Monné
2021-04-22  9:58       ` Jan Beulich
2021-04-22 10:34         ` Roger Pau Monné
2021-04-22 10:48           ` Jan Beulich [this message]
2021-04-22 10:56             ` Roger Pau Monné
2021-04-22 11:05               ` Jan Beulich
2021-04-22 11:37                 ` Roger Pau Monné
2021-04-22 11:42                   ` Jan Beulich
2021-04-22 12:07                     ` Roger Pau Monné
2021-04-22 12:08                       ` Jan Beulich
2021-04-21 10:22   ` Wei Liu
2021-04-21 11:26     ` Roger Pau Monné
2021-04-21 16:42       ` Wei Liu
2021-04-13 14:01 ` [PATCH v2 16/21] libs/guest: make a cpu policy compatible with older Xen versions Roger Pau Monne
2021-04-13 14:01 ` [PATCH v2 17/21] libs/guest: introduce helper set cpu topology in cpu policy Roger Pau Monne
2021-04-13 14:01 ` [PATCH v2 18/21] libs/guest: rework xc_cpuid_xend_policy Roger Pau Monne
2021-04-13 14:01 ` [PATCH v2 19/21] libs/guest: apply a featureset into a cpu policy Roger Pau Monne
2021-04-13 14:01 ` [PATCH v2 20/21] libs/{light,guest}: implement xc_cpuid_apply_policy in libxl Roger Pau Monne
2021-04-28 16:19   ` Anthony PERARD
2021-04-13 14:01 ` [PATCH v2 21/21] libs/guest: (re)move xc_cpu_policy_apply_cpuid Roger Pau Monne
2021-04-28 16:45   ` Anthony PERARD

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=d877502d-9c18-6ff3-6e01-ee997c9f196a@suse.com \
    --to=jbeulich@suse.com \
    --cc=andrew.cooper3@citrix.com \
    --cc=anthony.perard@citrix.com \
    --cc=iwj@xenproject.org \
    --cc=roger.pau@citrix.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.