From: Wei Liu <wei.liu2@citrix.com>
To: Yi Sun <yi.y.sun@linux.intel.com>
Cc: kevin.tian@intel.com, wei.liu2@citrix.com,
andrew.cooper3@citrix.com, dario.faggioli@citrix.com,
ian.jackson@eu.citrix.com, julien.grall@arm.com,
mengxu@cis.upenn.edu, jbeulich@suse.com,
chao.p.peng@linux.intel.com, xen-devel@lists.xenproject.org,
roger.pau@citrix.com
Subject: Re: [PATCH v1 04/13] x86: implement data structure and CPU init flow for MBA
Date: Tue, 15 Aug 2017 11:50:15 +0100 [thread overview]
Message-ID: <20170815105015.tdm5gox32msykzzb@citrix.com> (raw)
In-Reply-To: <1502264512-4648-5-git-send-email-yi.y.sun@linux.intel.com>
On Wed, Aug 09, 2017 at 03:41:43PM +0800, Yi Sun wrote:
> This patch implements main data structures of MBA.
>
> Like CAT features, MBA HW info has cos_max which means the max cos
> registers 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.
>
> One COS register of MBA stores a throttle value for one or more
> domains. The throttle value means the transaction time between L2
> cache and next level memory to be delayed.
>
> This patch also implements init flow for MBA and register stub
> callback functions.
>
> Signed-off-by: Yi Sun <yi.y.sun@linux.intel.com>
> ---
> v1:
> - rebase codes onto L2 CAT v15.
> - use '(1u << X)'.
> (suggested by Wei Liu)
> - move comment to appropriate place.
> (suggested by Chao Peng)
> - implement 'mba_init_feature' and keep 'cat_init_feature'.
> (suggested by Chao Peng)
> - keep 'regs.b' into a local variable to avoid reading CPUID every time.
> (suggested by Chao Peng)
> ---
> xen/arch/x86/psr.c | 144 ++++++++++++++++++++++++++++++++++------
> xen/include/asm-x86/msr-index.h | 1 +
> xen/include/asm-x86/psr.h | 2 +
> 3 files changed, 126 insertions(+), 21 deletions(-)
>
> diff --git a/xen/arch/x86/psr.c b/xen/arch/x86/psr.c
> index 5ec00a9..d94a5b1 100644
> --- a/xen/arch/x86/psr.c
> +++ b/xen/arch/x86/psr.c
> @@ -27,13 +27,16 @@
> * - CMT Cache Monitoring Technology
> * - COS/CLOS Class of Service. Also mean COS registers.
> * - COS_MAX Max number of COS for the feature (minus 1)
> + * - MBA Memory Bandwidth Allocation
> * - MSRs Machine Specific Registers
> * - PSR Intel Platform Shared Resource
> + * - THRTL_MAX Max throttle value (delay value) of MBA
> */
>
> -#define PSR_CMT (1<<0)
> -#define PSR_CAT (1<<1)
> -#define PSR_CDP (1<<2)
> +#define PSR_CMT (1u << 0)
> +#define PSR_CAT (1u << 1)
> +#define PSR_CDP (1u << 2)
> +#define PSR_MBA (1u << 3)
I would split this part out to a separate patch so that it can be
applied immediately.
>
> #define CAT_CBM_LEN_MASK 0x1f
> #define CAT_COS_MAX_MASK 0xffff
> @@ -60,10 +63,14 @@
> */
> #define MAX_COS_NUM 2
>
> +#define MBA_LINEAR (1u << 2)
> +#define MBA_THRTL_MAX_MASK 0xfff
> +
> enum psr_feat_type {
> FEAT_TYPE_L3_CAT,
> FEAT_TYPE_L3_CDP,
> FEAT_TYPE_L2_CAT,
> + FEAT_TYPE_MBA,
> FEAT_TYPE_NUM,
> FEAT_TYPE_UNKNOWN,
> };
> @@ -71,7 +78,6 @@ enum psr_feat_type {
> /*
> * This structure represents one feature.
> * cos_max - The max COS registers number got through CPUID.
> - * cbm_len - The length of CBM got through CPUID.
> * cos_reg_val - Array to store the values of COS registers. One entry stores
> * the value of one COS register.
> * For L3 CAT and L2 CAT, one entry corresponds to one COS_ID.
> @@ -80,9 +86,23 @@ enum psr_feat_type {
> * cos_reg_val[1] (Code).
> */
> struct feat_node {
> - /* cos_max and cbm_len are common values for all features so far. */
> + /* cos_max is common values for all features so far. */
> unsigned int cos_max;
> - unsigned int cbm_len;
> +
> + /* Feature specific HW info. */
> + union {
> + struct {
> + /* The length of CBM got through CPUID. */
> + unsigned int cbm_len;
> + } cat_info;
> +
> + struct {
> + /* The max throttling value got through CPUID. */
> + unsigned int thrtl_max;
> + unsigned int linear;
> + } mba_info;
> + };
> +
I suggest you add a tag to specify which struct is in effect in the
union and ASSERT accordingly in their respective type specific
functions.
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel
next prev parent reply other threads:[~2017-08-15 10:50 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-08-09 7:41 [PATCH v1 00/13] Enable Memory Bandwidth Allocation in Xen Yi Sun
2017-08-09 7:41 ` [PATCH v1 01/13] docs: create Memory Bandwidth Allocation (MBA) feature document Yi Sun
2017-08-14 7:35 ` Chao Peng
2017-08-14 8:23 ` Yi Sun
2017-08-14 9:36 ` Chao Peng
2017-08-15 10:08 ` Wei Liu
2017-08-16 2:51 ` Yi Sun
2017-08-09 7:41 ` [PATCH v1 02/13] Rename PSR sysctl/domctl interfaces and xsm policy to make them be general Yi Sun
2017-08-15 10:12 ` Wei Liu
2017-08-16 2:48 ` Yi Sun
2017-08-15 14:03 ` Daniel De Graaf
2017-08-09 7:41 ` [PATCH v1 03/13] x86: rename 'cbm_type' to 'psr_val_type' to make it general Yi Sun
2017-08-15 10:13 ` Wei Liu
2017-08-16 2:17 ` Chao Peng
2017-08-09 7:41 ` [PATCH v1 04/13] x86: implement data structure and CPU init flow for MBA Yi Sun
2017-08-15 10:50 ` Wei Liu [this message]
2017-08-16 7:18 ` Yi Sun
2017-08-17 9:49 ` Wei Liu
2017-08-16 3:14 ` Chao Peng
2017-08-09 7:41 ` [PATCH v1 05/13] x86: implement get hw info " Yi Sun
2017-08-16 3:23 ` Chao Peng
2017-08-09 7:41 ` [PATCH v1 06/13] x86: implement get value interface " Yi Sun
2017-08-16 6:38 ` Chao Peng
2017-08-16 6:43 ` Yi Sun
2017-08-17 7:51 ` Chao Peng
2017-08-09 7:41 ` [PATCH v1 07/13] x86: implement set value flow " Yi Sun
2017-08-18 3:32 ` Chao Peng
2017-08-18 9:25 ` Yi Sun
2017-08-21 7:54 ` Chao Peng
2017-08-09 7:41 ` [PATCH v1 08/13] tools: create general interfaces to support psr allocation features Yi Sun
2017-08-21 10:12 ` Chao Peng
2017-08-22 2:38 ` Yi Sun
2017-08-22 6:42 ` Chao Peng
2017-08-09 7:41 ` [PATCH v1 09/13] tools: implement the new get hw info interface suitable to all " Yi Sun
2017-08-15 11:14 ` Wei Liu
2017-08-21 10:13 ` Chao Peng
2017-08-22 2:38 ` Yi Sun
2017-08-09 7:41 ` [PATCH v1 10/13] tools: rename 'xc_psr_cat_type' to 'xc_psr_val_type' Yi Sun
2017-08-15 11:15 ` Wei Liu
2017-08-21 10:13 ` Chao Peng
2017-08-09 7:41 ` [PATCH v1 11/13] tools: implemet new get value interface suitable for all psr allocation features Yi Sun
2017-08-15 11:24 ` Wei Liu
2017-08-21 10:14 ` Chao Peng
2017-08-22 2:24 ` Yi Sun
2017-08-22 6:44 ` Chao Peng
2017-08-09 7:41 ` [PATCH v1 12/13] tools: implemet new set " Yi Sun
2017-08-15 11:25 ` Wei Liu
2017-08-21 10:15 ` Chao Peng
2017-08-09 7:41 ` [PATCH v1 13/13] docs: add MBA description in docs Yi Sun
2017-08-15 11:26 ` Wei Liu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170815105015.tdm5gox32msykzzb@citrix.com \
--to=wei.liu2@citrix.com \
--cc=andrew.cooper3@citrix.com \
--cc=chao.p.peng@linux.intel.com \
--cc=dario.faggioli@citrix.com \
--cc=ian.jackson@eu.citrix.com \
--cc=jbeulich@suse.com \
--cc=julien.grall@arm.com \
--cc=kevin.tian@intel.com \
--cc=mengxu@cis.upenn.edu \
--cc=roger.pau@citrix.com \
--cc=xen-devel@lists.xenproject.org \
--cc=yi.y.sun@linux.intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).