[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v19 04/10] x86: detect and initialize Cache Monitoring Technology feature
>>> On 02.10.14 at 13:35, <chao.p.peng@xxxxxxxxxxxxxxx> wrote: Again only cosmetic comments (which can be taken care of while committing): > +static void __init parse_psr_param(char *s) > +{ > + char *ss, *val_str; > + int val_int; > + > + do { > + ss = strchr(s, ','); > + if ( ss ) > + *ss = '\0'; > + > + val_str = strchr(s, ':'); > + if ( val_str ) > + *val_str++ = '\0'; > + > + if ( !strcmp(s, "cmt") ) > + { > + if ( !val_str ) > + opt_psr |= PSR_CMT; > + else > + { > + val_int = parse_bool(val_str); This could be the declaration (with initializer). > + if ( val_int == 1 ) > + opt_psr |= PSR_CMT; > + else if ( val_int == -1 ) val_int != 0 (for forward compatibility). > + printk("PSR: unknown cmt value: %s - CMT disabled!\n", > + val_str); > + } > + } > + else if ( val_str && !strcmp(s, "rmid_max") ) > + opt_rmid_max = simple_strtoul(val_str, NULL, 0); > + > + s = ss + 1; > + } while ( ss ); > +} > +custom_param("psr", parse_psr_param); > + > +static void __init init_psr_cmt(unsigned int rmid_max) > +{ > + unsigned int eax, ebx, ecx, edx; > + unsigned int rmid; > + > + if ( !boot_cpu_has(X86_FEATURE_CMT) ) > + return; > + > + cpuid_count(0xf, 0, &eax, &ebx, &ecx, &edx); > + if ( !edx ) > + return; > + > + psr_cmt = xzalloc(struct psr_cmt); > + if ( !psr_cmt ) > + return; > + > + psr_cmt->features = edx; > + psr_cmt->rmid_max = min(rmid_max, ebx); > + rmid_mask = ~(~0ull << get_count_order(ebx)); > + > + if ( psr_cmt->features & PSR_RESOURCE_TYPE_L3 ) > + { > + cpuid_count(0xf, 1, &eax, &ebx, &ecx, &edx); > + psr_cmt->l3.upscaling_factor = ebx; > + psr_cmt->l3.rmid_max = ecx; > + psr_cmt->l3.features = edx; > + } > + > + psr_cmt->rmid_max = min(psr_cmt->rmid_max, psr_cmt->l3.rmid_max); > + > + BUG_ON(psr_cmt->rmid_max == 0xffffffff); This would stop working as intended if rmid_max's type got changed. All you want to avoid the array size expression in the allocation to degenerate to zero, i.e. checking exactly that condition would be better: BUG_ON(!(psr_cmt->rmid_max + 1)); > + psr_cmt->rmid_to_dom = xmalloc_array(domid_t, psr_cmt->rmid_max + 1); But anyway, using 1UL here still would seem the preferred way of dealing with this over using BUG_ON(). Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |