[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v4 04/12] x86: maintain COS to CBM mapping for each socket
For each socket, a COS to CBM mapping structure is maintained for each COS. The mapping is indexed by COS and the value is the corresponding CBM. Different VMs may use the same CBM, a reference count is used to indicate if the CBM is available. Signed-off-by: Chao Peng <chao.p.peng@xxxxxxxxxxxxxxx> --- xen/arch/x86/psr.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/xen/arch/x86/psr.c b/xen/arch/x86/psr.c index 16c37dd..4aff5f6 100644 --- a/xen/arch/x86/psr.c +++ b/xen/arch/x86/psr.c @@ -21,11 +21,17 @@ #define PSR_CMT (1<<0) #define PSR_CAT (1<<1) +struct psr_cat_cbm { + unsigned int ref; + uint64_t cbm; +}; + struct psr_cat_socket_info { bool_t initialized; bool_t enabled; unsigned int cbm_len; unsigned int cos_max; + struct psr_cat_cbm *cos_cbm_map; }; struct psr_assoc { @@ -240,6 +246,14 @@ static void cat_cpu_init(unsigned int cpu) info->cbm_len = (eax & 0x1f) + 1; info->cos_max = (edx & 0xffff); + info->cos_cbm_map = xzalloc_array(struct psr_cat_cbm, + info->cos_max + 1UL); + if ( !info->cos_cbm_map ) + return; + + /* cos=0 is reserved as default cbm(all ones). */ + info->cos_cbm_map[0].cbm = (1ull << info->cbm_len) - 1; + info->enabled = 1; printk(XENLOG_INFO "CAT: enabled on socket %u, cos_max:%u, cbm_len:%u\n", socket, info->cos_max, info->cbm_len); -- 1.9.1 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |