All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jan Beulich <jbeulich@suse.com>
To: "Jürgen Groß" <jgross@suse.com>
Cc: "Kevin Tian" <kevin.tian@intel.com>,
	"Stefano Stabellini" <sstabellini@kernel.org>,
	"Julien Grall" <julien@xen.org>, "Wei Liu" <wl@xen.org>,
	"Konrad Rzeszutek Wilk" <konrad.wilk@oracle.com>,
	"Andrew Cooper" <andrew.cooper3@citrix.com>,
	"Ian Jackson" <ian.jackson@eu.citrix.com>,
	"George Dunlap" <george.dunlap@citrix.com>,
	"Jun Nakajima" <jun.nakajima@intel.com>,
	xen-devel@lists.xenproject.org,
	"Volodymyr Babchuk" <Volodymyr_Babchuk@epam.com>,
	"Roger Pau Monné" <roger.pau@citrix.com>
Subject: Re: [Xen-devel] [PATCH v6 09/12] xen: add runtime parameter access support to hypfs
Date: Fri, 6 Mar 2020 09:20:33 +0100	[thread overview]
Message-ID: <a593f09f-1e79-8b87-7399-0c03161a5ad6@suse.com> (raw)
In-Reply-To: <9d239e78-49bd-43be-1096-8cdfa7a29e5a@suse.com>

On 06.03.2020 07:42, Jürgen Groß wrote:
> On 05.03.20 09:26, Jan Beulich wrote:
>> On 05.03.2020 07:01, Jürgen Groß wrote:
>>> On 04.03.20 17:56, Jan Beulich wrote:
>>>> On 04.03.2020 17:31, Jürgen Groß wrote:
>>>>> On 04.03.20 16:19, Jan Beulich wrote:
>>>>>> On 04.03.2020 16:07, Jürgen Groß wrote:
>>>>>>> On 04.03.20 12:32, Jan Beulich wrote:
>>>>>>>> On 26.02.2020 13:47, Juergen Gross wrote:
>>>>>>>>> +static void update_ept_param_append(const char *str, int val)
>>>>>>>>> +{
>>>>>>>>> +    char *pos = opt_ept_setting + strlen(opt_ept_setting);
>>>>>>>>> +
>>>>>>>>> +    snprintf(pos, sizeof(opt_ept_setting) - (pos - opt_ept_setting),
>>>>>>>>> +             ",%s=%d", str, val);
>>>>>>>>> +}
>>>>>>>>> +
>>>>>>>>> +static void update_ept_param(void)
>>>>>>>>> +{
>>>>>>>>> +    snprintf(opt_ept_setting, sizeof(opt_ept_setting), "pml=%d", opt_ept_pml);
>>>>>>>>> +    if ( opt_ept_ad >= 0 )
>>>>>>>>> +        update_ept_param_append("ad", opt_ept_ad);
>>>>>>>>
>>>>>>>> This won't correctly reflect reality: If you look at
>>>>>>>> vmx_init_vmcs_config(), even a negative value means "true" here,
>>>>>>>> unless on a specific Atom model. I think init_ept_param() wants
>>>>>>>> to have that erratum workaround logic moved there, such that
>>>>>>>> you can then assme the value to be non-negative here.
>>>>>>>
>>>>>>> But isn't not mentioning it in the -1 case correct? -1 means: do the
>>>>>>> correct thing on the current hardware.
>>>>>>
>>>>>> Well, I think the output here should represent effective settings,
>>>>>
>>>>> The minimum requirement is to reflect the effective parameters, like
>>>>> cmdline is doing for boot-time only parameters. With runtime parameters
>>>>> we had no way of telling what was set, and this is now possible.
>>>>>
>>>>>> and a sub-item should be suppressed only if a setting has no effect
>>>>>> at all in the current setup, like ...
>>>>>>
>>>>>>>>> +    if ( opt_ept_exec_sp >= 0 )
>>>>>>>>> +        update_ept_param_append("exec-sp", opt_ept_exec_sp);
>>>>>>>>
>>>>>>>> I agree for this one - if the value is still -1, it has neither
>>>>>>>> been set nor is its value of any interest.
>>>>>>
>>>>>> ... here.
>>>>>
>>>>> I think we should not mix up specified parameters and effective
>>>>> settings. In case an effective setting is of common interest it should
>>>>> be reported via a specific node (like e.g. specific mitigation settings
>>>>> where the cmdline is not providing enough details).
>>>>
>>>> But then a boolean option that wasn't specified on the command line
>>>> should produce no output at all. And hence we'd need a way to tell
>>>> whether an option was set from command line for _all_ of them. I
>>>> don't think this would be very helpful.
>>>
>>> I disagree here.
>>>
>>> This is important only for cases where the hypervisor treats the
>>> parameter as a tristate: true/false/unspecified. In all cases where
>>> the bool value is really true or false it can be reported as such.
>>
>> The problem I'm having with this is the resulting inconsistency:
>> When we write the variable with 0 or 1 in case we find it to be
>> -1 after command line parsing, the externally visible effect will
>> be different from the case where we leave it to be -1 yet still
>> treat it as (pseudo-)boolean. This, however, is an implementation
>> detail, while imo the hypfs presentation should not depend on
>> such implementation details.
>>
>>> Reporting 0/1 for e.g. "ad" if opt_ept_ad==-1 would add a latent problem
>>> if any other action would be derived from the parameter variable being
>>> -1.
>>>
>>> So either opt_ept_ad should be modified to change it to 0/1 instead of
>>> only setting the VCMS flag,
>>
>> That's what I did suggest.
>>
>>> or the logic should be kept as is in this
>>> patch. IMO changing the setting of opt_ept_ad should be done in another
>>> patch if this is really wanted.
>>
>> And of course I don't mind at all doing so in a prereq patch.
>> It's just that the patch here provides a good place _where_ to
>> actually do such an adjustment.
> 
> I was thinking of something like this:
> 
> --- a/xen/arch/x86/hvm/vmx/vmcs.c
> +++ b/xen/arch/x86/hvm/vmx/vmcs.c
> @@ -313,12 +313,12 @@ static int vmx_init_vmcs_config(void)
>       {
>           rdmsrl(MSR_IA32_VMX_EPT_VPID_CAP, _vmx_ept_vpid_cap);
> 
> +        if ( /* Work around Erratum AVR41 on Avoton processors. */
> +             boot_cpu_data.x86 == 6 && boot_cpu_data.x86_model == 0x4d &&
> +             opt_ept_ad < 0 )
> +            opt_ept_ad = 0;
>           if ( !opt_ept_ad )
>               _vmx_ept_vpid_cap &= ~VMX_EPT_AD_BIT;
> -        else if ( /* Work around Erratum AVR41 on Avoton processors. */
> -                  boot_cpu_data.x86 == 6 && boot_cpu_data.x86_model == 0x4d &&
> -                  opt_ept_ad < 0 )
> -            _vmx_ept_vpid_cap &= ~VMX_EPT_AD_BIT;
> 
>           /*
>            * Additional sanity checking before using EPT:

And I was specifically hoping to avoid doing this in a non-__init
function.

Jan

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

  reply	other threads:[~2020-03-06  8:20 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-02-26 12:46 [Xen-devel] [PATCH v6 00/12] Add hypervisor sysfs-like support Juergen Gross
2020-02-26 12:46 ` [Xen-devel] [PATCH v6 01/12] xen: allow only sizeof(bool) variables for boolean_param() Juergen Gross
2020-03-03 16:40   ` Jan Beulich
2020-03-09 11:43   ` Julien Grall
2020-03-09 11:55     ` Jan Beulich
2020-03-09 13:01       ` Jürgen Groß
2020-03-09 13:06         ` Jan Beulich
2020-03-09 14:06           ` Jürgen Groß
2020-02-26 12:46 ` [Xen-devel] [PATCH v6 02/12] xen: add a generic way to include binary files as variables Juergen Gross
2020-02-26 12:46 ` [Xen-devel] [PATCH v6 03/12] docs: add feature document for Xen hypervisor sysfs-like support Juergen Gross
2020-03-09 11:48   ` Julien Grall
2020-03-25 14:05     ` Jürgen Groß
2020-02-26 12:46 ` [Xen-devel] [PATCH v6 04/12] xen: add basic hypervisor filesystem support Juergen Gross
2020-03-03 16:59   ` Jan Beulich
2020-03-04 12:00     ` Jürgen Groß
2020-03-04 13:03       ` Jan Beulich
2020-03-04 14:39         ` Jürgen Groß
2020-03-04 15:07           ` Jan Beulich
2020-03-04 15:14             ` Jürgen Groß
2020-03-04 15:21               ` Jan Beulich
2020-03-06  6:06                 ` Jürgen Groß
2020-03-06  8:19                   ` Jan Beulich
2020-02-26 12:46 ` [Xen-devel] [PATCH v6 05/12] libs: add libxenhypfs Juergen Gross
2020-02-26 12:46 ` [Xen-devel] [PATCH v6 06/12] tools: add xenfs tool Juergen Gross
2020-02-26 12:47 ` [Xen-devel] [PATCH v6 07/12] xen: provide version information in hypfs Juergen Gross
2020-02-26 12:47 ` [Xen-devel] [PATCH v6 08/12] xen: add /buildinfo/config entry to hypervisor filesystem Juergen Gross
2020-03-04 10:49   ` Jan Beulich
2020-03-04 12:06     ` Jürgen Groß
2020-03-04 13:04       ` Jan Beulich
2020-02-26 12:47 ` [Xen-devel] [PATCH v6 09/12] xen: add runtime parameter access support to hypfs Juergen Gross
2020-03-04 11:32   ` Jan Beulich
2020-03-04 15:07     ` Jürgen Groß
2020-03-04 15:19       ` Jan Beulich
2020-03-04 16:31         ` Jürgen Groß
2020-03-04 16:56           ` Jan Beulich
2020-03-05  6:01             ` Jürgen Groß
2020-03-05  8:26               ` Jan Beulich
2020-03-06  6:42                 ` Jürgen Groß
2020-03-06  8:20                   ` Jan Beulich [this message]
2020-03-06  8:47                     ` Jürgen Groß
2020-03-06  9:04                       ` Jan Beulich
2020-03-06  9:20                         ` Jürgen Groß
2020-03-06  9:22                           ` Jan Beulich
2020-03-06  9:27                             ` Jürgen Groß
2020-03-23 10:38   ` Julien Grall
2020-02-26 12:47 ` [Xen-devel] [PATCH v6 10/12] tools/libxl: use libxenhypfs for setting xen runtime parameters Juergen Gross
2020-02-26 12:47 ` [Xen-devel] [PATCH v6 11/12] tools/libxc: remove xc_set_parameters() Juergen Gross
2020-02-26 12:47 ` [Xen-devel] [PATCH v6 12/12] xen: remove XEN_SYSCTL_set_parameter support Juergen Gross
2020-03-04 11:45   ` Jan Beulich
2020-03-04 14:40     ` Jürgen Groß

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=a593f09f-1e79-8b87-7399-0c03161a5ad6@suse.com \
    --to=jbeulich@suse.com \
    --cc=Volodymyr_Babchuk@epam.com \
    --cc=andrew.cooper3@citrix.com \
    --cc=george.dunlap@citrix.com \
    --cc=ian.jackson@eu.citrix.com \
    --cc=jgross@suse.com \
    --cc=julien@xen.org \
    --cc=jun.nakajima@intel.com \
    --cc=kevin.tian@intel.com \
    --cc=konrad.wilk@oracle.com \
    --cc=roger.pau@citrix.com \
    --cc=sstabellini@kernel.org \
    --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.