[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v4 04/15] x86: implement data structure and CPU init flow for MBA
On 17-09-28 05:00:09, Jan Beulich wrote: > >>> On 23.09.17 at 11:48, <yi.y.sun@xxxxxxxxxxxxxxx> wrote: > > This patch implements main data structures of MBA. > > > > Like CAT features, MBA HW info has cos_max which means the max thrtl > > register number, and thrtl_max which means the max throttle value > > (delay value). It also has a flag to represent if the throttle > > value is linear or not. > > Could you replace "or not" with what the alternative actually is, > as "non-linear" can mean all sorts of things? > Sure. > > One thrtl register of MBA stores a throttle value for one or more > > domains. The throttle value means the delay between L2 cache and next > > cache level. > > What is a delay between two cache levels? > There is a "programmable rate controller" between them to indirectly control the bandwidth. > > @@ -272,8 +293,8 @@ static bool psr_check_cbm(unsigned int cbm_len, > > unsigned long cbm) > > return true; > > } > > > > -/* CAT common functions implementation. */ > > -static int cat_init_feature(const struct cpuid_leaf *regs, > > +/* Implementation of allocation features' functions. */ > > +static bool cat_init_feature(const struct cpuid_leaf *regs, > > Such a type change should happen in a separate patch, as this > isn't specific to MBA. That way you can also make clear why you > want this to change - the current description doesn't mention > this at all. > Sure. > > +static bool mba_init_feature(const struct cpuid_leaf *regs, > > + struct feat_node *feat, > > + struct psr_socket_info *info, > > + enum psr_feat_type type) > > +{ > > + /* No valid value so do not enable feature. */ > > + if ( !regs->a || !regs->d || type != FEAT_TYPE_MBA ) > > + return false; > > + > > + feat->cos_max = min(opt_cos_max, regs->d & CAT_COS_MAX_MASK); > > + if ( feat->cos_max < 1 ) > > + return false; > > + > > + feat->mba.thrtl_max = (regs->a & MBA_THRTL_MAX_MASK) + 1; > > + > > + if ( regs->c & MBA_LINEAR_MASK ) > > + { > > + feat->mba.linear = true; > > + > > + if ( feat->mba.thrtl_max >= 100 ) > > + return false; > > + } > > + > > + wrmsrl(MSR_IA32_PSR_MBA_MASK(0), 0); > > + > > + /* Add this feature into array. */ > > + info->features[type] = feat; > > + > > + if ( !opt_cpu_info ) > > + return true; > > + > > + printk(XENLOG_INFO "MBA: enabled on socket %u, cos_max:%u, > > thrtl_max:%u, linear:%u.\n", > > The last one wants to be %d. > Ok, thanks! > > @@ -1410,6 +1496,7 @@ static void psr_cpu_init(void) > > unsigned int socket, cpu = smp_processor_id(); > > struct feat_node *feat; > > struct cpuid_leaf regs; > > + uint32_t ebx; > > Is this local variable really a big help? To me it looks like it only > makes the patch larger without actually improving anything, > and without being related to the subject of the patch. > IMHO, it can avoid the 'cpuid_count_leaf()' being repeatedly called. Without it, we have to call 'cpuid_count_leaf()' for 2 more times. I can move it to another patch to make it clear if you like it. > Jan > > > _______________________________________________ > Xen-devel mailing list > Xen-devel@xxxxxxxxxxxxx > https://lists.xen.org/xen-devel _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |