On 27/01/2026 10:37 am, Jan Beulich wrote:
> On 26.01.2026 18:53, Andrew Cooper wrote:
>> --- a/xen/arch/x86/cpu/common.c
>> +++ b/xen/arch/x86/cpu/common.c
>> @@ -319,8 +319,6 @@ void __init early_cpu_init(bool verbose)
>>      uint64_t val;
>>      u32 eax, ebx, ecx, edx;
>>  
>> -    c->x86_cache_alignment = 32;
>> -
>>      /* Get vendor name */
>>      cpuid(0x00000000, &c->cpuid_level, &ebx, &ecx, &edx);
>>      *(u32 *)&c->x86_vendor_id[0] = ebx;
>> @@ -352,6 +350,7 @@ void __init early_cpu_init(bool verbose)
>>      if (edx & cpufeat_mask(X86_FEATURE_CLFLUSH)) {
>>              unsigned int size = ((ebx >> 8) & 0xff) * 8;
>>  
>> +            c->x86_clflush_size = size;
>>              c->x86_cache_alignment = size;
> With this change, can't the writing of the field in generic_identify()
> go away? CPU_DATA_INIT() in particular doesn't invalidate it.

No, it can't.  The value needs setting up on every AP, right now at least.

>  Perferably
> with that dropped (unless of course there is a reason not to):
> Reviewed-by: Jan Beulich <[email protected]>

Hopefully this is a good enough reason.  I know we agreed to make it a
single global, but that's future work.

>
> Tangentially, "cpuid=no-clflush" didn't have any effect on any of this so
> far, and also isn't going to have with the changes you make.

The line immediately out of context above will applies the clear cap
mask, so will cause cpuid=no-clflush to take effect.

~Andrew

Reply via email to