> >> + if (is_cxl_root(parent_port)) { > >> + ctx->port = parent_port; > >> + cxl_coordinates_combine(ctx->coord, ctx->coord, > >> + dport->coord); > > > > I'm a bit lost in all the levels of iteration so may have missed it. > > > > Do we assume that GP BW (which is the root bridge) is shared across multiple root > > ports on that host bridge if they are both part of the interleave set? > > Do we need to count the number of RPs under a HB and do min(aggregated_RPs_BW, (GP_BW / no of RPs) * affiliated_RPs_in_region)? I'm not 100% sure I understand the question. Taking this again and expanding it another level. Host CPU ______________________________________ | | | | | 3 from GP/HMAT | 3 from GP/HMAT _____|_____ _______|______ RP RP RP RP 2| |2 2| |2 __|__ ___|__ __|___ __|____ |1 |1 1| |1 |1 |1 |1 |1 EP EP EP EP EP EP EP EP Then your maths aggregated RPs BW is 8 (GP_BW/no of RPS) * affliated RPS in region. = (3/2 * 4) = 6 Which is correct. So yes, I think that works if we assume everything is balanced. I'm fine with that assumption as that should be the common case. Jonathan