struct rdtgroup *rdtgrp)
 {
        struct rdt_hw_resource *hw_res;
+       struct resctrl_schema *s;
        struct rdt_resource *r;
 
-       for_each_alloc_enabled_rdt_resource(r) {
-               hw_res = resctrl_to_arch_res(r);
+       list_for_each_entry(s, &resctrl_schema_all, list) {
+               r = s->res;
+               hw_res = resctrl_to_arch_res(s->res);
                if (!strcmp(resname, r->name) && rdtgrp->closid < hw_res->num_closid)
                        return parse_line(tok, r, rdtgrp);
        }
 ssize_t rdtgroup_schemata_write(struct kernfs_open_file *of,
                                char *buf, size_t nbytes, loff_t off)
 {
+       struct resctrl_schema *s;
        struct rdtgroup *rdtgrp;
        struct rdt_domain *dom;
        struct rdt_resource *r;
                goto out;
        }
 
-       for_each_alloc_enabled_rdt_resource(r) {
-               list_for_each_entry(dom, &r->domains, list)
+       list_for_each_entry(s, &resctrl_schema_all, list) {
+               list_for_each_entry(dom, &s->res->domains, list)
                        dom->have_new_ctrl = false;
        }
 
                        goto out;
        }
 
-       for_each_alloc_enabled_rdt_resource(r) {
+       list_for_each_entry(s, &resctrl_schema_all, list) {
+               r = s->res;
                ret = update_domains(r, rdtgrp->closid);
                if (ret)
                        goto out;
                           struct seq_file *s, void *v)
 {
        struct rdt_hw_resource *hw_res;
+       struct resctrl_schema *schema;
        struct rdtgroup *rdtgrp;
        struct rdt_resource *r;
        int ret = 0;
        rdtgrp = rdtgroup_kn_lock_live(of->kn);
        if (rdtgrp) {
                if (rdtgrp->mode == RDT_MODE_PSEUDO_LOCKSETUP) {
-                       for_each_alloc_enabled_rdt_resource(r)
+                       list_for_each_entry(schema, &resctrl_schema_all, list) {
+                               r = schema->res;
                                seq_printf(s, "%s:uninitialized\n", r->name);
+                       }
                } else if (rdtgrp->mode == RDT_MODE_PSEUDO_LOCKED) {
                        if (!rdtgrp->plr->d) {
                                rdt_last_cmd_clear();
                        }
                } else {
                        closid = rdtgrp->closid;
-                       for_each_alloc_enabled_rdt_resource(r) {
-                               hw_res = resctrl_to_arch_res(r);
+                       list_for_each_entry(schema, &resctrl_schema_all, list) {
+                               hw_res = resctrl_to_arch_res(schema->res);
                                if (closid < hw_res->num_closid)
                                        show_doms(s, r, closid);
                        }
 
 static void closid_init(void)
 {
        struct rdt_hw_resource *hw_res;
-       struct rdt_resource *r;
+       struct resctrl_schema *s;
        int rdt_min_closid = 32;
 
        /* Compute rdt_min_closid across all resources */
-       for_each_alloc_enabled_rdt_resource(r) {
-               hw_res = resctrl_to_arch_res(r);
+       list_for_each_entry(s, &resctrl_schema_all, list) {
+               hw_res = resctrl_to_arch_res(s->res);
                rdt_min_closid = min(rdt_min_closid, hw_res->num_closid);
        }
 
 {
        struct rdt_hw_domain *hw_dom;
        int closid = rdtgrp->closid;
+       struct resctrl_schema *s;
        struct rdt_resource *r;
        bool has_cache = false;
        struct rdt_domain *d;
 
-       for_each_alloc_enabled_rdt_resource(r) {
+       list_for_each_entry(s, &resctrl_schema_all, list) {
+               r = s->res;
                if (r->rid == RDT_RESOURCE_MBA)
                        continue;
                has_cache = true;
 static int rdtgroup_size_show(struct kernfs_open_file *of,
                              struct seq_file *s, void *v)
 {
+       struct resctrl_schema *schema;
        struct rdt_hw_domain *hw_dom;
        struct rdtgroup *rdtgrp;
        struct rdt_resource *r;
                goto out;
        }
 
-       for_each_alloc_enabled_rdt_resource(r) {
+       list_for_each_entry(schema, &resctrl_schema_all, list) {
+               r = schema->res;
                sep = false;
                seq_printf(s, "%*s:", max_name_width, r->name);
                list_for_each_entry(d, &r->domains, list) {
 /* Initialize the RDT group's allocations. */
 static int rdtgroup_init_alloc(struct rdtgroup *rdtgrp)
 {
+       struct resctrl_schema *s;
        struct rdt_resource *r;
        int ret;
 
-       for_each_alloc_enabled_rdt_resource(r) {
+       list_for_each_entry(s, &resctrl_schema_all, list) {
+               r = s->res;
                if (r->rid == RDT_RESOURCE_MBA) {
                        rdtgroup_init_mba(r);
                } else {