[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [RFC 6/8] i386/cpu: Update cache topology with machine's configurati
From: |
Zhao Liu |
Subject: |
Re: [RFC 6/8] i386/cpu: Update cache topology with machine's configuration |
Date: |
Thu, 29 Feb 2024 15:19:40 +0800 |
Hi JeeHeng,
> > diff --git a/target/i386/cpu.c b/target/i386/cpu.c
> > index d7cb0f1e49b4..4b5c551fe7f0 100644
> > --- a/target/i386/cpu.c
> > +++ b/target/i386/cpu.c
> > @@ -7582,6 +7582,27 @@ static void x86_cpu_realizefn(DeviceState *dev,
> > Error **errp)
> >
> > #ifndef CONFIG_USER_ONLY
> > MachineState *ms = MACHINE(qdev_get_machine());
> > +
> > + if (ms->smp_cache.l1d != CPU_TOPO_LEVEL_INVALID) {
> > + env->cache_info_cpuid4.l1d_cache->share_level = ms->smp_cache.l1d;
> > + env->cache_info_amd.l1d_cache->share_level = ms->smp_cache.l1d;
> > + }
> > +
> > + if (ms->smp_cache.l1i != CPU_TOPO_LEVEL_INVALID) {
> > + env->cache_info_cpuid4.l1i_cache->share_level = ms->smp_cache.l1i;
> > + env->cache_info_amd.l1i_cache->share_level = ms->smp_cache.l1i;
> > + }
> > +
> > + if (ms->smp_cache.l2 != CPU_TOPO_LEVEL_INVALID) {
> > + env->cache_info_cpuid4.l2_cache->share_level = ms->smp_cache.l2;
> > + env->cache_info_amd.l2_cache->share_level = ms->smp_cache.l2;
> > + }
> > +
> > + if (ms->smp_cache.l3 != CPU_TOPO_LEVEL_INVALID) {
> > + env->cache_info_cpuid4.l3_cache->share_level = ms->smp_cache.l3;
> > + env->cache_info_amd.l3_cache->share_level = ms->smp_cache.l3;
> > + }
> > +
>
> I think this block of code can be further optimized. Maybe we can create
> a function called updateCacheShareLevel() that takes a cache pointer and
> a share level as arguments. This function encapsulates the common
> pattern of updating cache share levels for different caches. You can define
> it like this:
> void updateCacheShareLevel(XxxCacheInfo *cache, int shareLevel) {
> if (shareLevel != CPU_TOPO_LEVEL_INVALID) {
> cache->share_level = shareLevel;
> }
> }
>
Good idea! Will try this way.
Thanks,
Zhao
RE: [RFC 4/8] hw/core: Add cache topology options in -smp, JeeHeng Sia, 2024/02/28
[RFC 5/8] i386/cpu: Support thread and module level cache topology, Zhao Liu, 2024/02/20
[RFC 6/8] i386/cpu: Update cache topology with machine's configuration, Zhao Liu, 2024/02/20
[RFC 7/8] i386/pc: Support cache topology in -smp for PC machine, Zhao Liu, 2024/02/20
[RFC 8/8] qemu-options: Add the cache topology description of -smp, Zhao Liu, 2024/02/20
Re: [RFC 0/8] Introduce SMP Cache Topology, Philippe Mathieu-Daudé, 2024/02/20