[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH v12 04/23] x86: refactor psr: L3 CAT: implement main data structures, CPU init and free flows.



On 17-06-28 01:12:23, Jan Beulich wrote:
> >>> Yi Sun <yi.y.sun@xxxxxxxxxxxxxxx> 06/14/17 3:25 AM >>>
> > --- a/xen/arch/x86/psr.c
> > +++ b/xen/arch/x86/psr.c
> > @@ -13,16 +13,112 @@
> >   * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License 
> > for
> >   * more details.
> >   */
> > -#include <xen/init.h>
> >  #include <xen/cpu.h>
> >  #include <xen/err.h>
> > +#include <xen/init.h>
> >  #include <xen/sched.h>
> >  #include <asm/psr.h>
> >  
> > +/*
> > + * Terminology:
> > + * - CAT         Cache Allocation Technology
> > + * - CBM         Capacity BitMasks
> > + * - CDP         Code and Data Prioritization
> > + * - CMT         Cache Monitoring Technology
> > + * - COS/CLOS    Class of Service. Also mean COS registers.
> > + * - COS_MAX     Max number of COS for the feature (minus 1)
> > + * - MSRs        Machine Specific Registers
> > + * - PSR         Intel Platform Shared Resource
> > + */
> > +
> >  #define PSR_CMT        (1<<0)
> >  #define PSR_CAT        (1<<1)
> >  #define PSR_CDP        (1<<2)
> >  
> > +#define CAT_CBM_LEN_MASK 0x1f
> > +#define CAT_COS_MAX_MASK 0xffff
> > +
> > +/*
> > + * Per SDM chapter 'Cache Allocation Technology: Cache Mask Configuration',
> > + * the MSRs ranging from 0C90H through 0D0FH (inclusive), enables support 
> > for
> > + * up to 128 L3 CAT Classes of Service. The COS_ID=[0,127].
> > + *
> > + * The MSRs ranging from 0D10H through 0D4FH (inclusive), enables support 
> > for
> > + * up to 64 L2 CAT COS. The COS_ID=[0,63].
> > + *
> > + * So, the maximum COS register count of one feature is 128.
> > + */
> > +#define MAX_COS_REG_CNT  128
> > +
> > +/*
> > + * Every PSR feature uses some COS registers for each COS ID, e.g. CDP 
> > uses 2
> > + * COS registers (DATA and CODE) for one COS ID, but CAT uses 1 COS 
> > register.
> > + * We use below macro as the max number of COS registers used by all 
> > features.
> > + * So far, it is 2 which means CDP's COS registers number.
> > + */
> > +#define PSR_MAX_COS_NUM 2
> > +
> > +enum psr_feat_type {
> > +    PSR_SOCKET_L3_CAT,
> > +    PSR_SOCKET_FEAT_NUM,
> > +};
> 
> For identifiers going into a header, PSR_ and psr_ disambiguation prefixes
> are certainly necessary. For everything being declared / defined for just this
> one file this isn't really necessary imo (the SOCKET_ part above I'd then also
> be uncertain about). The main thing, however, is the inconsistency here: Above
> you have MAX_COS_REG_CNT and PSR_MAX_COS_NUM. I would really prefer if both
> prefix and suffix wise these were consistent.
> 
> > +static void cat_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 )
> > +        return;
> > +
> > +    feat->cbm_len = (regs->a & CAT_CBM_LEN_MASK) + 1;
> > +    feat->cos_max = min(opt_cos_max, regs->d & CAT_COS_MAX_MASK);
> > +
> > +    switch ( type )
> > +    {
> > +    case PSR_SOCKET_L3_CAT:
> > +        /* cos=0 is reserved as default cbm(all bits within cbm_len are 
> > 1). */
> > +        feat->cos_reg_val[0] = cat_default_val(feat->cbm_len);
> 
> The word "reserved" in the comment is a little unfortunate - if there was
> anything reserved in a register, I'd expect the respective parts to either
> not be writable, or to fault upon write attempts. However, I think you mean
> that you reserve it for the described purpose. So perhaps "We reserve ..."?
> Also please have a blank before the opeing paren.
> 
> With all of the suggestion taken care of
> Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx>
> 
Thank you! I will modify macros, enum identifiers added since this patch to
make them be consistent.

> With at least the comment adjusted (and considering how late I am with the
> other suggestions)
> Acked-by: Jan Beulich <jbeulich@xxxxxxxx>
> 
> Jan

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.