[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v1 07/13] x86: implement set value flow for MBA
> + if ( feat->mba_info.linear ) > + { > + unsigned int mod; > + > + if ( feat->mba_info.thrtl_max >= 100 ) > + return false; Can we do this check earlier, e.g. when it gets enumerated from CPUID? > + > + mod = *thrtl % (100 - feat->mba_info.thrtl_max); > + *thrtl -= mod; > + } > + else > + { > + /* Not power of 2. */ > + if ( *thrtl & (*thrtl - 1) ) > + *thrtl = *thrtl & (1 << (flsl(*thrtl) - 1)); > + } > + Is it possible for *thrtl to be zero? Otherwise we need check that at the beginning. > > +/* > + * Because multiple features may co-exist, we need handle all > features to write > + * values of them into a COS register with new COS ID. E.g: > + * 1. L3 CAT and MBA co-exist. > + * 2. Dom1 and Dom2 share a same COS ID (2). The L3 CAT CBM of Dom1 > is 0x1ff, > + * the MBA Thrtle of Dom1 is 0xa. > + * 3. User wants to change MBA Thrtl of Dom1 to be 0x14. Because COS > ID 2 is > + * used by Dom2 too, we have to pick a new COS ID 3. The original > values of > + * Dom1 on COS ID 3 may be below: > + * --------- > + * | COS 3 | > + * --------- > + * L3 CAT | 0x7ff | > + * --------- > + * MBA | 0x0 | > + * --------- > + * 4. After setting, the L3 CAT CBM value of Dom1 should be kept and > the new MBA > + * Thrtl is set. So, the values on COS ID 3 should be below. > + * --------- > + * | COS 3 | > + * --------- > + * L3 CAT | 0x1ff | > + * --------- > + * MBA | 0x14 | > + * --------- > + * > + * So, we should write all features values into their MSRs. That > requires the > + * feature array, feature properties array and value array are input. > + */ Although I understand them, I still have a feeling of the necessity to reword these comments. Chao _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |