i386/cpu: add has_caches flag to check smp_cache configuration
Add has_caches flag to SMPCompatProps, which helps in avoiding extra checks for every single layer of caches in x86 (and ARM in future). Signed-off-by: Alireza Sanaee <alireza.sanaee@huawei.com> Signed-off-by: Zhao Liu <zhao1.liu@intel.com> Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Link: https://lore.kernel.org/r/20250110145115.1574345-6-zhao1.liu@intel.com Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
90df2cac37
commit
47fc56f36d
@ -332,6 +332,8 @@ bool machine_parse_smp_cache(MachineState *ms,
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
mc->smp_props.has_caches = true;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -156,6 +156,8 @@ typedef struct {
|
||||
* @modules_supported - whether modules are supported by the machine
|
||||
* @cache_supported - whether cache (l1d, l1i, l2 and l3) configuration are
|
||||
* supported by the machine
|
||||
* @has_caches - whether cache properties are explicitly specified in the
|
||||
* user provided smp-cache configuration
|
||||
*/
|
||||
typedef struct {
|
||||
bool prefer_sockets;
|
||||
@ -166,6 +168,7 @@ typedef struct {
|
||||
bool drawers_supported;
|
||||
bool modules_supported;
|
||||
bool cache_supported[CACHE_LEVEL_AND_TYPE__MAX];
|
||||
bool has_caches;
|
||||
} SMPCompatProps;
|
||||
|
||||
/**
|
||||
|
@ -8203,13 +8203,12 @@ static void x86_cpu_realizefn(DeviceState *dev, Error **errp)
|
||||
|
||||
#ifndef CONFIG_USER_ONLY
|
||||
MachineState *ms = MACHINE(qdev_get_machine());
|
||||
MachineClass *mc = MACHINE_GET_CLASS(ms);
|
||||
|
||||
/*
|
||||
* TODO: Add a SMPCompatProps.has_caches flag to avoid useless updates
|
||||
* if user didn't set smp_cache.
|
||||
*/
|
||||
if (!x86_cpu_update_smp_cache_topo(ms, cpu, errp)) {
|
||||
return;
|
||||
if (mc->smp_props.has_caches) {
|
||||
if (!x86_cpu_update_smp_cache_topo(ms, cpu, errp)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
qemu_register_reset(x86_cpu_machine_reset_cb, cpu);
|
||||
|
Loading…
x
Reference in New Issue
Block a user