|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v6 1/3] x86: Support enable CDP by boot parameter and add get CDP status
> + if ( (ecx & PSR_CAT_CDP_CAPABILITY) && (opt_psr & PSR_CDP) &&
> + cdp_socket_enable && !test_bit(socket, cdp_socket_enable) )
> + {
> + rdmsrl(MSR_IA32_PSR_L3_QOS_CFG, val);
> + wrmsrl(MSR_IA32_PSR_L3_QOS_CFG, val | (1 <<
> PSR_L3_QOS_CDP_ENABLE_BIT));
> +
> + info->cos_to_cbm[0].code = (1ull << info->cbm_len) - 1;
> + info->cos_to_cbm[0].data = (1ull << info->cbm_len) - 1;
> +
> + /* We only write mask1 since mask0 is always all ones by
> default. */
> + wrmsrl(MSR_IA32_PSR_L3_MASK(1), (1ull << info->cbm_len) - 1);
Although I think it maybe not a big deal here, I'd suggest doing this
before you actually turning CDP on (writing MSR_IA32_PSR_L3_QOS_CFG above)
as strictly speaking before we enabling CDP the data mask(mask1) for cos0
should already be initialised.
> +
> + /* Cut half of cos_max when CDP is enabled. */
> + info->cos_max >>= 1;
> +
> + set_bit(socket, cdp_socket_enable);
> + }
> + printk(XENLOG_INFO "CAT: enabled on socket %u, cos_max:%u,
> cbm_len:%u, CDP:%s\n",
> + socket, info->cos_max, info->cbm_len,
> + cdp_is_enabled(socket) ? "on" : "off");
> }
> }
>
> @@ -513,6 +551,7 @@ static void cat_cpu_fini(unsigned int cpu)
> xfree(info->cos_to_cbm);
> info->cos_to_cbm = NULL;
> }
> + clear_bit(socket, cdp_socket_enable);
Is it possible for cdp_socket_enable to be NULL? e.g. in the case when
CDP failed to initilize. You can check if it works for cat-only mode.
Chao
> clear_bit(socket, cat_socket_enable);
> }
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |