[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH v2] x86: do not enable global pages when virtualized on AMD hardware



On 04.12.2019 14:17, Roger Pau Monné  wrote:
> On Wed, Dec 04, 2019 at 02:15:58PM +0100, Jan Beulich wrote:
>> On 04.12.2019 12:52, Roger Pau Monné wrote:
>>> On Wed, Dec 04, 2019 at 12:05:35PM +0100, Jan Beulich wrote:
>>>> On 04.12.2019 11:44, Roger Pau Monne wrote:
>>>>> --- a/xen/arch/x86/pv/domain.c
>>>>> +++ b/xen/arch/x86/pv/domain.c
>>>>> @@ -118,11 +118,18 @@ unsigned long pv_fixup_guest_cr4(const struct vcpu 
>>>>> *v, unsigned long cr4)
>>>>>              (mmu_cr4_features & PV_CR4_GUEST_VISIBLE_MASK));
>>>>>  }
>>>>>  
>>>>> +static int opt_global_pages = -1;
>>>>
>>>> int8_t __read_mostly
>>>>
>>>>> +boolean_runtime_param("global-pages", opt_global_pages);
>>>>> +
>>>>>  unsigned long pv_make_cr4(const struct vcpu *v)
>>>>>  {
>>>>>      const struct domain *d = v->domain;
>>>>>      unsigned long cr4 = mmu_cr4_features &
>>>>>          ~(X86_CR4_PCIDE | X86_CR4_PGE | X86_CR4_TSD);
>>>>> +    bool pge = opt_global_pages == -1 ? (!cpu_has_hypervisor ||
>>>>> +                                         boot_cpu_data.x86_vendor !=
>>>>> +                                         X86_VENDOR_AMD)
>>>>> +                                      : !!opt_global_pages;
>>>>
>>>> Let's avoid re-doing this evaluation each time we come here.
>>>> Post boot the value can only change to 0 or 1. Hence in some
>>>> __init function you can apply the default calculation done
>>>> here.
>>>
>>> I've assumed that boolean_runtime_param can be changed during runtime
>>> by the user, and hence the value calculated at boot time would become
>>> stale if the user changes it after boot, which should be fine for this
>>> option.
>>
>> I'm afraid I can't decide whether you agree or disagree with my
>> comment.
> 
> Oh sorry fro not being clear. I was meant to disagree, calculating a
> value at init time would be wrong, since opt_global_pages can change
> during runtime.

But that's what I've explained in my earlier reply: At run time,
the value can only change to 0 or 1, but not to -1. Hence once a
runtime update occurred, the default calculation won't be used
anymore (as much as it wouldn't be used if there was a respective
command line option).

Jan

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

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.