|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v3 01/14] x86/cpu: Create Hygon Dhyana architecture support file
On 2019/3/26 23:49, Jan Beulich wrote:
> On 25.03.19 at 14:29, <puwen@xxxxxxxx> wrote:
>> -static unsigned int __initdata opt_cpuid_mask_l7s0_eax = ~0u;
>> -integer_param("cpuid_mask_l7s0_eax", opt_cpuid_mask_l7s0_eax);
>> -static unsigned int __initdata opt_cpuid_mask_l7s0_ebx = ~0u;
>> -integer_param("cpuid_mask_l7s0_ebx", opt_cpuid_mask_l7s0_ebx);
>
> This is no longer needed - all references are now local to amd.c.
Okay, will put them back to amd.c.
>> @@ -116,6 +121,9 @@ bool __init probe_cpuid_faulting(void)
>> uint64_t val;
>> int rc;
>>
>> + if(boot_cpu_data.x86_vendor == X86_VENDOR_HYGON)
>> + return false;
>> +
>> if ((rc = rdmsr_safe(MSR_INTEL_PLATFORM_INFO, val)) == 0)
>
> Isn't this similarly true for AMD, in which case adding both at the
There is no MSR_INTEL_PLATFORM_INFO for AMD family 17h and Hygon family
18h. Reading this MSR will stall on Hygon system. I don't know if it
would successfully returned when reading it on AMD system.
> same time in a separate patch would seem better? Yet then again -
In a separate patch is fine.
> did you look at the description of the commit moving the function
> here (6e2fdc0f89 ["x86: Common cpuid faulting support"])? Hence
> if anything this would need qualifying by !cpu_has_hypervisor.
Then it would be like this:
if (boot_cpu_data.x86_vendor == X86_VENDOR_HYGON &&
!cpu_has_hypervisor)
return false;
> Also the contextual if() tells you that there's a blank missing in the
> one you add. However, there's a wider style question to raise:
> This file is not a Linux clone, so generally I'd expect it to be
> written in plain Xen style.
I'm sorry for the missing blank. Okay, will use the right style.
>> +static void early_init_hygon(struct cpuinfo_x86 *c)
>> +{
>> + early_init_amd(c);
>> +}
>
> Why the wrapper function? It can be introduced once you actually
To keep the functions uniform Hygon ones in hygon_cpu_dev.
> need to do more than just the call.
Okay, will remove the wrapper and directly call early_init_amd().
>> +static void init_hygon(struct cpuinfo_x86 *c)
>> +{
>> + u32 l, h;
>
> As mentioned before, please prefer uint32_t et al over u32 and
> friends. While that's applicable to the entire series (and then
> also to use basic types in preference to the fixed width ones,
Okay.
> where possible), in this particular case it would be even better if
> you dropped the variables altogether, using ...
>> + unsigned long long value;
...
>> + if (cpu_has(c, X86_FEATURE_EFRO)) {
>> + rdmsr(MSR_K7_HWCR, l, h);
>> + l |= (1 << 27); /* Enable read-only APERF/MPERF bit */
>> + wrmsr(MSR_K7_HWCR, l, h);
>> + }
>
> ... "value" and rdmsrl() / wrmsrl() here instead.
Will use rdmsrl()/wrmsrl() instead.
--
Regards,
Pu Wen
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |