Messages in this thread | | | Date | Wed, 9 Aug 2023 15:33:24 -0700 | Subject | Re: [PATCH v5 05/24] x86/resctrl: Allow RMID allocation to be scoped by CLOSID | From | Reinette Chatre <> |
| |
Hi James,
On 7/28/2023 9:42 AM, James Morse wrote: > -int alloc_rmid(void) > +static struct rmid_entry *resctrl_find_free_rmid(u32 closid) > { > - struct rmid_entry *entry; > - > - lockdep_assert_held(&rdtgroup_mutex); > + struct rmid_entry *itr; > + u32 itr_idx, cmp_idx; > > if (list_empty(&rmid_free_lru)) > - return rmid_limbo_count ? -EBUSY : -ENOSPC; > + return rmid_limbo_count ? ERR_PTR(-EBUSY) : ERR_PTR(-ENOSPC); > + > + list_for_each_entry(itr, &rmid_free_lru, list) { > + /* > + * Get the index of this free RMID, and the index it would need > + * to be if it were used with this CLOSID. > + * If the CLOSID is irrelevant on this architecture, these will > + * always be the same meaning the compiler can reduce this loop > + * to a single list_entry_first() call. > + */ > + itr_idx = resctrl_arch_rmid_idx_encode(itr->closid, itr->rmid); > + cmp_idx = resctrl_arch_rmid_idx_encode(closid, itr->rmid); > + > + if (itr_idx == cmp_idx) > + return itr; > + } > + > + return ERR_PTR(-ENOSPC); > +} > + > +/* > + * For MPAM the RMID value is not unique, and has to be considered with > + * the CLOSID. The (CLOSID, RMID) pair is allocated on all domains, which > + * allows all domains to be managed by a single limbo list. > + * Each domain also has a rmid_busy_llc to reduce the work of the limbo handler. > + */
I find the above comment to be contradicting - it talks about a single limbo list yet there is "also" a limbo list/bitmask per domain. Should "single limbo list" perhaps be "single free list"?
Reinette
| |