*/
 static int rdtgroup_init_alloc(struct rdtgroup *rdtgrp)
 {
+       struct rdt_resource *r_cdp = NULL;
+       struct rdt_domain *d_cdp = NULL;
        u32 used_b = 0, unused_b = 0;
        u32 closid = rdtgrp->closid;
        struct rdt_resource *r;
        unsigned long tmp_cbm;
        enum rdtgrp_mode mode;
        struct rdt_domain *d;
+       u32 peer_ctl, *ctrl;
        int i, ret;
-       u32 *ctrl;
 
        for_each_alloc_enabled_rdt_resource(r) {
                /*
                if (r->rid == RDT_RESOURCE_MBA)
                        continue;
                list_for_each_entry(d, &r->domains, list) {
+                       rdt_cdp_peer_get(r, d, &r_cdp, &d_cdp);
                        d->have_new_ctrl = false;
                        d->new_ctrl = r->cache.shareable_bits;
                        used_b = r->cache.shareable_bits;
                                        mode = rdtgroup_mode_by_closid(i);
                                        if (mode == RDT_MODE_PSEUDO_LOCKSETUP)
                                                break;
-                                       used_b |= *ctrl;
+                                       /*
+                                        * If CDP is active include peer
+                                        * domain's usage to ensure there
+                                        * is no overlap with an exclusive
+                                        * group.
+                                        */
+                                       if (d_cdp)
+                                               peer_ctl = d_cdp->ctrl_val[i];
+                                       else
+                                               peer_ctl = 0;
+                                       used_b |= *ctrl | peer_ctl;
                                        if (mode == RDT_MODE_SHAREABLE)
-                                               d->new_ctrl |= *ctrl;
+                                               d->new_ctrl |= *ctrl | peer_ctl;
                                }
                        }
                        if (d->plr && d->plr->cbm > 0)