|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v4 01/15] x86/cpu: Create Hygon Dhyana architecture support file
>>> On 03.04.19 at 12:05, <puwen@xxxxxxxx> wrote:
> On 2019/4/3 16:43, Jan Beulich wrote:
>> On 30.03.19 at 11:42, <puwen@xxxxxxxx> wrote:
>>> +static void init_hygon(struct cpuinfo_x86 *c)
>>> +{
>>> + unsigned long long value;
>>> +
>>> + /* Attempt to set LFENCE to be Dispatch Serialising. */
>>> + if (rdmsr_safe(MSR_AMD64_DE_CFG, value))
>>> + /* Unable to read. Assume the safer default. */
>>> + __clear_bit(X86_FEATURE_LFENCE_DISPATCH, c->x86_capability);
>>> + if (value & AMD64_DE_CFG_LFENCE_SERIALISE)
>>> + /* Dispatch Serialising. */
>>> + __set_bit(X86_FEATURE_LFENCE_DISPATCH, c->x86_capability);
>>
>> This still isn't in line with the AMD code it was derived from. In
>> particular code and comment do not match up: You don't make any
>> attempt to actually _set_ the intended mode, you only record the
>> setting found in the feature flags.
>
> The code is derived but not fully copied. I tested the conditionals and
> found that the other branches are not reached on Hygon platforms, so I
> removed them.
>
> Our firmware will make sure that the bit AMD64_DE_CFG_LFENCE_SERIALISE
> will be set. So I just check here instead of setting. If you think
> retaining all the original conditionals is better, I'll do that. :)
I'm not convinced you need to retain everything, but you surely
shouldn't limit code to work just on your specific variant of
firmware.
>>> + /*
>>> + * If the user has explicitly chosen to disable Memory Disambiguation
>>> + * to mitigiate Speculative Store Bypass, poke the appropriate MSR.
>>> + */
>>> + if (opt_ssbd && !rdmsr_safe(MSR_AMD64_LS_CFG, value))
>>> + {
>>
>> Since you've decided to inherit style from amd.c, the opening brace
>> belongs on the previous line (more instances further down).
>
> I'm a little confused about which style to follow? In v3 series I
> followed the style of the derived code. But in other patch you told me
> to follow the Xen coding style, so in v4 series I changed the style to
> match the bracing section of CODING_STYLE.
Well, taking just the brace placement part doesn't make this
the file Xen style. In my earlier response to that style
question I did suggest you switch to Xen style for the new
file. I'd still view this as the preferred option, but then all
aspects should be taken care of. But I won't insist, yet in that
case clean Linux style is the only other alternative.
>>> + value |= 1ull << 10;
>>> + wrmsr_safe(MSR_AMD64_LS_CFG, value);
>>> + }
>>> +
>>> + display_cacheinfo(c);
>>
>> Above from here amd.c sets MFENCE_RDTSC as well. Why would
>> this not be needed for Hygon?
>
> Because Hygon has feature LFENCE_DISPATCH, so the feature MFENCE_RDTSC
> will not be set here.
>
> But if you think the conditional should be retained here for some reason
> (even though the conditional may not be touched), I'll add it.
See above - yes, I think it should be retained.
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |