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