[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v8 02/13] x86: detect and initialize Intel CAT feature
On Thu, May 28, 2015 at 01:54:39PM +0100, Jan Beulich wrote: > >>> On 21.05.15 at 10:41, <chao.p.peng@xxxxxxxxxxxxxxx> wrote: > > + > > + if ( !cpu_has(c, X86_FEATURE_CAT) ) > > + return; > > + > > + socket = cpu_to_socket(cpu); > > + if ( test_bit(socket, cat_socket_enable) ) > > + return; > > + > > + cpuid_count(PSR_CPUID_LEVEL_CAT, 0, &eax, &ebx, &ecx, &edx); > > While one would hope that X86_FEATURE_CAT implies the respective > CPUID leaf being available, I think explicitly checking this should still > be done just like is the case elsewhere. Against cpuid_level? > > > + if ( ebx & PSR_RESOURCE_TYPE_L3 ) > > + { > > + cpuid_count(PSR_CPUID_LEVEL_CAT, 1, &eax, &ebx, &ecx, &edx); > > + info = cat_socket_info + socket; > > + info->cbm_len = (eax & 0x1f) + 1; > > + info->cos_max = min(opt_cos_max, edx & 0xffff); > > + > > + set_bit(socket, cat_socket_enable); > > + printk(XENLOG_INFO "CAT: enabled on socket %u, cos_max:%u, > > cbm_len:%u\n", > > + socket, info->cos_max, info->cbm_len); > > + } > > +} > > + > > +static void cat_cpu_fini(unsigned int cpu) > > +{ > > + unsigned int socket = cpu_to_socket(cpu); > > + > > + if ( !socket_cpumask[socket] || cpumask_empty(socket_cpumask[socket]) ) > > + clear_bit(socket, cat_socket_enable); > > +} > > This being called from the CPU_DEAD notification, you now depend > on cpu_smpboot_free) to run ahead of you. Which isn't the case > afaict, and even if it happened to be that way you shouldn't rely > on it without explicitly enforcing ordering between the two by > setting the priority of on of them to a non-default value. Yes, seems changing the priority of psr_cpu_callback to 1 is enough. > > > +static void __init init_psr_cat(void) > > +{ > > + if ( opt_cos_max < 1 ) > > + { > > + printk(XENLOG_INFO "CAT: disabled, cos_max is too small\n"); > > + return; > > + } > > Is opt_cos_max == 1 really useful for anything? That means two COSes are available. cos=0 is reserved and cos=1 can still be used anyway. Chao _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |