On Thu, 8 Sep 2016, Fenghua Yu wrote: > Add support to manage CLOSid(CLass Of Service id) and capacity > bitmask(cbm) for code data prioritization(CDP).
I manage to understand that. > Closid management includes changes to allocating, freeing closid and > closid_get and closid_put and changes to closid availability map during > CDP set up. But this is just a random sequence of word, function names and a reference to the availability map which is not touched at all in this patch. > CDP has a separate cbm for code and data. > +/* > + * When cdp mode is enabled, refcnt is maintained in the dcache_cbm entry. Sorry. I really cannot figure out what that means. > + */ > static inline void closid_get(u32 closid) > { > - struct clos_cbm_table *cct = &cctable[closid]; > + struct clos_cbm_table *cct = &cctable[DCBM_TABLE_INDEX(closid)]; > > lockdep_assert_held(&rdtgroup_mutex); > > @@ -139,7 +155,7 @@ static int closid_alloc(u32 *closid) > static inline void closid_free(u32 closid) > { > clear_bit(closid, cconfig.closmap); > - cctable[closid].cbm = 0; > + cctable[DCBM_TABLE_INDEX(closid)].cbm = 0; > > if (WARN_ON(!cconfig.closids_used)) > return; > @@ -149,7 +165,7 @@ static inline void closid_free(u32 closid) > > static void closid_put(u32 closid) > { > - struct clos_cbm_table *cct = &cctable[closid]; > + struct clos_cbm_table *cct = &cctable[DCBM_TABLE_INDEX(closid)]; So if CDP is disabled we look at table[closid] and if it's enabled we look at table[closid << 1]. What is managing the interleaved entries in the table? Thanks, tglx