* [PATCH v2 0/2] cxl: Allow passthrough decoders with >16K granularity @ 2026-07-11 20:05 Alison Schofield 2026-07-11 20:05 ` [PATCH v2 1/2] cxl/region: " Alison Schofield 2026-07-11 20:05 ` [PATCH v2 2/2] cxl/test: Add a 2-way 16K root decoder for passthrough testing Alison Schofield 0 siblings, 2 replies; 5+ messages in thread From: Alison Schofield @ 2026-07-11 20:05 UTC (permalink / raw) To: Davidlohr Bueso, Jonathan Cameron, Dave Jiang, Alison Schofield, Vishal Verma, Ira Weiny, Dan Williams, Li Ming Cc: linux-cxl Changes in v2: - Rebased on Linux 7.2-rc1 - Only v1 feedback was from Sashiko and that was not an issue Link to v1: https://lore.kernel.org/linux-cxl/cover.1781136281.git.alison.schofield@intel.com/ Sashiko reported [1] that region setup rejects valid topologies containing a passthrough decoder beneath a wide parent interleave. In these configurations, a passthrough decoder can compute a granularity above the 16K maximum encodable in the interleave granularity (IG) field even though non-interleaving decoders do not consume that field. The first patch avoids validating the interleave granularity of non-interleaving decoders, encodes the IG field as a don't-care when committing those decoders, and updates the sysfs ABI documentation accordingly. The second patch extends cxl-test with a topology that allows a CXL unit test to cover this case. A unit test update for this case is posted for review [2]. [1] https://lore.kernel.org/all/20260530002613.682E71F00893@smtp.kernel.org/ [2] https://lore.kernel.org/all/cover.1781136221.git.alison.schofield@intel.com/ Alison Schofield (2): cxl/region: Allow passthrough decoders with >16K granularity cxl/test: Add a 2-way 16K root decoder for passthrough testing Documentation/ABI/testing/sysfs-bus-cxl | 5 ++- drivers/cxl/core/hdm.c | 13 +++++-- drivers/cxl/core/region.c | 47 ++++++++++++++---------- tools/testing/cxl/test/cxl.c | 48 +++++++++++++++++++++++-- 4 files changed, 88 insertions(+), 25 deletions(-) base-commit: dc59e4fea9d83f03bad6bddf3fa2e52491777482 -- 2.37.3 ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH v2 1/2] cxl/region: Allow passthrough decoders with >16K granularity 2026-07-11 20:05 [PATCH v2 0/2] cxl: Allow passthrough decoders with >16K granularity Alison Schofield @ 2026-07-11 20:05 ` Alison Schofield 2026-07-11 20:15 ` sashiko-bot 2026-07-11 20:05 ` [PATCH v2 2/2] cxl/test: Add a 2-way 16K root decoder for passthrough testing Alison Schofield 1 sibling, 1 reply; 5+ messages in thread From: Alison Schofield @ 2026-07-11 20:05 UTC (permalink / raw) To: Davidlohr Bueso, Jonathan Cameron, Dave Jiang, Alison Schofield, Vishal Verma, Ira Weiny, Dan Williams, Li Ming Cc: linux-cxl, Sashiko AI Review Region configuration rejects valid topologies that contain a passthrough decoder beneath a wide parent interleave. For example, a passthrough switch below an 8-way root decoder with 4K granularity computes a 32K granularity. That exceeds the maximum encodable value of the HDM Decoder Control IG field, causing region setup to fail even though a non-interleaving decoder does not consume the IG field. Only require the granularity to be encodable for interleaving decoders, both where it is inherited from the parent and where it is computed for the current decoder. Keep the computed value for passthrough decoders so it can seed descendant decoder setup, and program a don't-care IG encoding when committing a non-interleaving decoder. As a consequence, the interleave_granularity attribute of a decoder whose interleave_ways is 1 may report a value above 16K. Document that the reported granularity for non-interleaving decoders is a don't-care value that may exceed the maximum encodable in hardware. Fixes: 18f35dc9314d ("cxl/region: Refactor granularity select in cxl_port_setup_targets()") Suggested-by: Sashiko AI Review <sashiko-bot@kernel.org> Assisted-by: Claude:Opus-4-8 Signed-off-by: Alison Schofield <alison.schofield@intel.com> --- Documentation/ABI/testing/sysfs-bus-cxl | 5 ++- drivers/cxl/core/hdm.c | 13 +++++-- drivers/cxl/core/region.c | 47 +++++++++++++++---------- 3 files changed, 42 insertions(+), 23 deletions(-) diff --git a/Documentation/ABI/testing/sysfs-bus-cxl b/Documentation/ABI/testing/sysfs-bus-cxl index 16a9b3d2e2c0..3f96e5bf1fd3 100644 --- a/Documentation/ABI/testing/sysfs-bus-cxl +++ b/Documentation/ABI/testing/sysfs-bus-cxl @@ -407,7 +407,10 @@ Description: space this decoder claims at address N before the decode rotates to the next target in the interleave at address N + interleave_granularity (assuming N is aligned to - interleave_granularity). + interleave_granularity). When 'interleave_ways' is 1, the + decoder does not interleave and the reported granularity is + a don't-care value that may exceed the maximum encodable in + hardware. What: /sys/bus/cxl/devices/decoderX.Y/create_{pmem,ram}_region diff --git a/drivers/cxl/core/hdm.c b/drivers/cxl/core/hdm.c index 0c80b76a5f9b..d164662668c1 100644 --- a/drivers/cxl/core/hdm.c +++ b/drivers/cxl/core/hdm.c @@ -691,9 +691,16 @@ static void cxld_set_interleave(struct cxl_decoder *cxld, u32 *ctrl) if (WARN_ONCE(ways_to_eiw(cxld->interleave_ways, &eiw), "invalid interleave_ways: %d\n", cxld->interleave_ways)) return; - if (WARN_ONCE(granularity_to_eig(cxld->interleave_granularity, &eig), - "invalid interleave_granularity: %d\n", - cxld->interleave_granularity)) + + /* + * A non-interleaving decoder ignores the IG field. Encode a + * don't-care value instead of validating the stored granularity. + */ + if (cxld->interleave_ways == 1) + eig = 0; + else if (WARN_ONCE(granularity_to_eig(cxld->interleave_granularity, &eig), + "invalid interleave_granularity: %d\n", + cxld->interleave_granularity)) return; u32p_replace_bits(ctrl, eig, CXL_HDM_DECODER0_CTRL_IG_MASK); diff --git a/drivers/cxl/core/region.c b/drivers/cxl/core/region.c index 1e211542b6b6..5a443551288c 100644 --- a/drivers/cxl/core/region.c +++ b/drivers/cxl/core/region.c @@ -1521,12 +1521,20 @@ static int cxl_port_setup_targets(struct cxl_port *port, parent_iw = parent_cxld->interleave_ways; } - rc = granularity_to_eig(parent_ig, &peig); - if (rc) { - dev_dbg(&cxlr->dev, "%s:%s: invalid parent granularity: %d\n", - dev_name(parent_port->uport_dev), - dev_name(&parent_port->dev), parent_ig); - return rc; + /* + * A non-interleaving parent does not encode its granularity, so its + * stored value may exceed the maximum encodable and need not be + * validated here. + */ + if (parent_iw > 1) { + rc = granularity_to_eig(parent_ig, &peig); + if (rc) { + dev_dbg(&cxlr->dev, + "%s:%s: invalid parent granularity: %d\n", + dev_name(parent_port->uport_dev), + dev_name(&parent_port->dev), parent_ig); + return rc; + } } rc = ways_to_eiw(parent_iw, &peiw); @@ -1549,20 +1557,21 @@ static int cxl_port_setup_targets(struct cxl_port *port, * Interleave granularity is a multiple of @parent_port granularity. * Multiplier is the parent port interleave ways. */ - rc = granularity_to_eig(parent_ig * parent_iw, &eig); - if (rc) { - dev_dbg(&cxlr->dev, - "%s: invalid granularity calculation (%d * %d)\n", - dev_name(&parent_port->dev), parent_ig, parent_iw); - return rc; - } + ig = parent_ig * parent_iw; - rc = eig_to_granularity(eig, &ig); - if (rc) { - dev_dbg(&cxlr->dev, "%s:%s: invalid interleave: %d\n", - dev_name(port->uport_dev), dev_name(&port->dev), - 256 << eig); - return rc; + /* + * Keep the computed granularity for descendant setup. Only + * interleaving decoders require an encodable granularity. + */ + if (iw > 1) { + rc = granularity_to_eig(ig, &eig); + if (rc) { + dev_dbg(&cxlr->dev, + "%s: invalid granularity calculation (%d * %d)\n", + dev_name(&parent_port->dev), parent_ig, + parent_iw); + return rc; + } } if (iw > 8 || iw > cxlsd->nr_targets) { -- 2.37.3 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH v2 1/2] cxl/region: Allow passthrough decoders with >16K granularity 2026-07-11 20:05 ` [PATCH v2 1/2] cxl/region: " Alison Schofield @ 2026-07-11 20:15 ` sashiko-bot 2026-07-12 2:09 ` Alison Schofield 0 siblings, 1 reply; 5+ messages in thread From: sashiko-bot @ 2026-07-11 20:15 UTC (permalink / raw) To: Alison Schofield; +Cc: linux-cxl Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider: - [High] During auto-discovery (CXL_REGION_F_AUTO), passthrough decoders fail to update their `interleave_granularity` software state to the computed value, causing downstream decoders to inherit incorrect granularity and fail validation upon reboot. -- --- Patch [1]: [PATCH v2 1/2] cxl/region: Allow passthrough decoders with >16K granularity --- commit 9e2526342188a97e338bfc63d454c253f1e2b3ef Author: Alison Schofield <alison.schofield@intel.com> cxl/region: Allow passthrough decoders with >16K granularity This commit allows passthrough decoders beneath wide parent interleaves to have a granularity exceeding 16K by programming a don't-care value in hardware for non-interleaving decoders. > diff --git a/drivers/cxl/core/hdm.c b/drivers/cxl/core/hdm.c > index 0c80b76a5f9b4..d164662668c19 100644 > --- a/drivers/cxl/core/hdm.c > +++ b/drivers/cxl/core/hdm.c > @@ -691,9 +691,16 @@ static void cxld_set_interleave(struct cxl_decoder *cxld, u32 *ctrl) > if (WARN_ONCE(ways_to_eiw(cxld->interleave_ways, &eiw), > "invalid interleave_ways: %d\n", cxld->interleave_ways)) > return; > - if (WARN_ONCE(granularity_to_eig(cxld->interleave_granularity, &eig), > - "invalid interleave_granularity: %d\n", > - cxld->interleave_granularity)) > + > + /* > + * A non-interleaving decoder ignores the IG field. Encode a > + * don't-care value instead of validating the stored granularity. > + */ > + if (cxld->interleave_ways == 1) > + eig = 0; > + else if (WARN_ONCE(granularity_to_eig(cxld->interleave_granularity, &eig), > + "invalid interleave_granularity: %d\n", > + cxld->interleave_granularity)) > return; > > u32p_replace_bits(ctrl, eig, CXL_HDM_DECODER0_CTRL_IG_MASK); [ ... ] > diff --git a/drivers/cxl/core/region.c b/drivers/cxl/core/region.c > index 1e211542b6b64..5a443551288c4 100644 > --- a/drivers/cxl/core/region.c > +++ b/drivers/cxl/core/region.c [ ... ] > @@ -1549,20 +1557,21 @@ static int cxl_port_setup_targets(struct cxl_port *port, > * Interleave granularity is a multiple of @parent_port granularity. > * Multiplier is the parent port interleave ways. > */ > - rc = granularity_to_eig(parent_ig * parent_iw, &eig); > - if (rc) { > - dev_dbg(&cxlr->dev, > - "%s: invalid granularity calculation (%d * %d)\n", > - dev_name(&parent_port->dev), parent_ig, parent_iw); > - return rc; > - } > + ig = parent_ig * parent_iw; > > - rc = eig_to_granularity(eig, &ig); > - if (rc) { > - dev_dbg(&cxlr->dev, "%s:%s: invalid interleave: %d\n", > - dev_name(port->uport_dev), dev_name(&port->dev), > - 256 << eig); > - return rc; > + /* > + * Keep the computed granularity for descendant setup. Only > + * interleaving decoders require an encodable granularity. > + */ > + if (iw > 1) { > + rc = granularity_to_eig(ig, &eig); > + if (rc) { > + dev_dbg(&cxlr->dev, > + "%s: invalid granularity calculation (%d * %d)\n", > + dev_name(&parent_port->dev), parent_ig, > + parent_iw); > + return rc; > + } > } > > if (iw > 8 || iw > cxlsd->nr_targets) { [Severity: High] Does this code break region auto-discovery on reboot for topologies containing a passthrough decoder? When cxld_set_interleave() configures a passthrough decoder, it now sets eig = 0 (a don't-care value) in the hardware. Upon reboot, reading this hardware state will initialize the decoder's software interleave_granularity to a stale value. During auto-discovery in cxl_port_setup_targets(), the CXL_REGION_F_AUTO path skips validating the granularity for passthrough decoders (iw == 1), but it appears to be missing an update to correct the software state: if (test_bit(CXL_REGION_F_AUTO, &cxlr->flags)) { if (cxld->interleave_ways != iw || (iw > 1 && cxld->interleave_granularity != ig) || !spa_maps_hpa(p, &cxld->hpa_range) || ((cxld->flags & CXL_DECODER_F_ENABLE) == 0)) { ... return -ENXIO; } /* missing update: cxld->interleave_granularity = ig; */ } If cxld->interleave_granularity is not updated to the computed ig here, won't any interleaving descendants read the stale parent_ig, compute a mismatched expected granularity, and fail validation? -- Sashiko AI review · https://sashiko.dev/#/patchset/cover.1783795720.git.alison.schofield@intel.com?part=1 ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v2 1/2] cxl/region: Allow passthrough decoders with >16K granularity 2026-07-11 20:15 ` sashiko-bot @ 2026-07-12 2:09 ` Alison Schofield 0 siblings, 0 replies; 5+ messages in thread From: Alison Schofield @ 2026-07-12 2:09 UTC (permalink / raw) To: sashiko-reviews; +Cc: linux-cxl On Sat, Jul 11, 2026 at 08:15:07PM +0000, sashiko-bot@kernel.org wrote: > Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider: > - [High] During auto-discovery (CXL_REGION_F_AUTO), passthrough decoders fail to update their `interleave_granularity` software state to the computed value, causing downstream decoders to inherit incorrect granularity and fail validation upon reboot. Same NO as in v1[1] and I don't see a way to graciously alert you to this in the code. Gratuitously updating the field is not the right thing to do. [1] https://lore.kernel.org/linux-cxl/alKP8OP4DNT2nJnu@aschofie-mobl2.lan/#r No. A downstream decoder can't inherit an unecodable value into a failing check. A >16K granularity only appears below a wide interleave, and everything below that inherits an equal-or-larger value that an interleaving decoder couldn't encode. So every descendant is necessarily passthrough and never validates granularity. There is no path where updating the F_AUTO value would prevent a failure because the failure cannot happen. > -- > > --- Patch [1]: [PATCH v2 1/2] cxl/region: Allow passthrough decoders with >16K granularity --- > commit 9e2526342188a97e338bfc63d454c253f1e2b3ef > Author: Alison Schofield <alison.schofield@intel.com> > > cxl/region: Allow passthrough decoders with >16K granularity > > This commit allows passthrough decoders beneath wide parent interleaves > to have a granularity exceeding 16K by programming a don't-care value > in hardware for non-interleaving decoders. > > > diff --git a/drivers/cxl/core/hdm.c b/drivers/cxl/core/hdm.c > > index 0c80b76a5f9b4..d164662668c19 100644 > > --- a/drivers/cxl/core/hdm.c > > +++ b/drivers/cxl/core/hdm.c > > @@ -691,9 +691,16 @@ static void cxld_set_interleave(struct cxl_decoder *cxld, u32 *ctrl) > > if (WARN_ONCE(ways_to_eiw(cxld->interleave_ways, &eiw), > > "invalid interleave_ways: %d\n", cxld->interleave_ways)) > > return; > > - if (WARN_ONCE(granularity_to_eig(cxld->interleave_granularity, &eig), > > - "invalid interleave_granularity: %d\n", > > - cxld->interleave_granularity)) > > + > > + /* > > + * A non-interleaving decoder ignores the IG field. Encode a > > + * don't-care value instead of validating the stored granularity. > > + */ > > + if (cxld->interleave_ways == 1) > > + eig = 0; > > + else if (WARN_ONCE(granularity_to_eig(cxld->interleave_granularity, &eig), > > + "invalid interleave_granularity: %d\n", > > + cxld->interleave_granularity)) > > return; > > > > u32p_replace_bits(ctrl, eig, CXL_HDM_DECODER0_CTRL_IG_MASK); > > [ ... ] > > > diff --git a/drivers/cxl/core/region.c b/drivers/cxl/core/region.c > > index 1e211542b6b64..5a443551288c4 100644 > > --- a/drivers/cxl/core/region.c > > +++ b/drivers/cxl/core/region.c > > [ ... ] > > > @@ -1549,20 +1557,21 @@ static int cxl_port_setup_targets(struct cxl_port *port, > > * Interleave granularity is a multiple of @parent_port granularity. > > * Multiplier is the parent port interleave ways. > > */ > > - rc = granularity_to_eig(parent_ig * parent_iw, &eig); > > - if (rc) { > > - dev_dbg(&cxlr->dev, > > - "%s: invalid granularity calculation (%d * %d)\n", > > - dev_name(&parent_port->dev), parent_ig, parent_iw); > > - return rc; > > - } > > + ig = parent_ig * parent_iw; > > > > - rc = eig_to_granularity(eig, &ig); > > - if (rc) { > > - dev_dbg(&cxlr->dev, "%s:%s: invalid interleave: %d\n", > > - dev_name(port->uport_dev), dev_name(&port->dev), > > - 256 << eig); > > - return rc; > > + /* > > + * Keep the computed granularity for descendant setup. Only > > + * interleaving decoders require an encodable granularity. > > + */ > > + if (iw > 1) { > > + rc = granularity_to_eig(ig, &eig); > > + if (rc) { > > + dev_dbg(&cxlr->dev, > > + "%s: invalid granularity calculation (%d * %d)\n", > > + dev_name(&parent_port->dev), parent_ig, > > + parent_iw); > > + return rc; > > + } > > } > > > > if (iw > 8 || iw > cxlsd->nr_targets) { > > [Severity: High] > Does this code break region auto-discovery on reboot for topologies > containing a passthrough decoder? > > When cxld_set_interleave() configures a passthrough decoder, it now sets > eig = 0 (a don't-care value) in the hardware. > > Upon reboot, reading this hardware state will initialize the decoder's > software interleave_granularity to a stale value. > > During auto-discovery in cxl_port_setup_targets(), the CXL_REGION_F_AUTO > path skips validating the granularity for passthrough decoders (iw == 1), > but it appears to be missing an update to correct the software state: > > if (test_bit(CXL_REGION_F_AUTO, &cxlr->flags)) { > if (cxld->interleave_ways != iw || > (iw > 1 && cxld->interleave_granularity != ig) || > !spa_maps_hpa(p, &cxld->hpa_range) || > ((cxld->flags & CXL_DECODER_F_ENABLE) == 0)) { > ... > return -ENXIO; > } > /* missing update: cxld->interleave_granularity = ig; */ > } > > If cxld->interleave_granularity is not updated to the computed ig here, won't > any interleaving descendants read the stale parent_ig, compute a mismatched > expected granularity, and fail validation? > > -- > Sashiko AI review · https://sashiko.dev/#/patchset/cover.1783795720.git.alison.schofield@intel.com?part=1 ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH v2 2/2] cxl/test: Add a 2-way 16K root decoder for passthrough testing 2026-07-11 20:05 [PATCH v2 0/2] cxl: Allow passthrough decoders with >16K granularity Alison Schofield 2026-07-11 20:05 ` [PATCH v2 1/2] cxl/region: " Alison Schofield @ 2026-07-11 20:05 ` Alison Schofield 1 sibling, 0 replies; 5+ messages in thread From: Alison Schofield @ 2026-07-11 20:05 UTC (permalink / raw) To: Davidlohr Bueso, Jonathan Cameron, Dave Jiang, Alison Schofield, Vishal Verma, Ira Weiny, Dan Williams, Li Ming Cc: linux-cxl The cxl-test topologies do not provide a configuration where pass- through decoders compute a granularity above the 16K max encodable in hardware. The widest power-of-2 root decoder currently available is 2-way at 4K granularity, so a passthrough decoder below it computes at most 16K. Add a CFMWS entry for a 2-way root decoder at 16K granularity. This topology supports a region configuration spanning the two multi-port host bridges and placing one endpoint under each bridge. The intermediate switch decoders are then passthrough decoders with a computed granularity of 32K. This allows a CXL unit test to be added for this case. Place the new window in the XOR topology set so the default modulo topology used by most cxl-test coverage is unchanged. Assisted-by: Claude:Opus-4-8 Signed-off-by: Alison Schofield <alison.schofield@intel.com> --- tools/testing/cxl/test/cxl.c | 48 ++++++++++++++++++++++++++++++++++-- 1 file changed, 46 insertions(+), 2 deletions(-) diff --git a/tools/testing/cxl/test/cxl.c b/tools/testing/cxl/test/cxl.c index ef92dd35e030..5b87a3f5673f 100644 --- a/tools/testing/cxl/test/cxl.c +++ b/tools/testing/cxl/test/cxl.c @@ -188,10 +188,18 @@ static struct { struct acpi_cedt_cfmws cfmws; u32 target[3]; } cfmws8; + struct { + struct acpi_cedt_cfmws cfmws; + u32 target[2]; + } cfmws9; struct { struct acpi_cedt_cxims cxims; u64 xormap_list[2]; } cxims0; + struct { + struct acpi_cedt_cxims cxims; + u64 xormap_list[1]; + } cxims1; } __packed mock_cedt = { .cedt = { .header = { @@ -371,6 +379,28 @@ static struct { }, .target = { 0, 1, 2, }, }, + /* + * A 2-way root at 16K granularity. A passthrough decoder below this + * root computes a 32K granularity (16K * 2), which exceeds the maximum + * encodable in hardware. It exercises the passthrough granularity path + * in cxl_port_setup_targets(). + */ + .cfmws9 = { + .cfmws = { + .header = { + .type = ACPI_CEDT_TYPE_CFMWS, + .length = sizeof(mock_cedt.cfmws9), + }, + .interleave_arithmetic = ACPI_CEDT_CFMWS_ARITHMETIC_XOR, + .interleave_ways = 1, + .granularity = 6, + .restrictions = ACPI_CEDT_CFMWS_RESTRICT_HOSTONLYMEM | + ACPI_CEDT_CFMWS_RESTRICT_PMEM, + .qtg_id = FAKE_QTG_ID, + .window_size = SZ_256M * 8UL, + }, + .target = { 0, 1, }, + }, .cxims0 = { .cxims = { .header = { @@ -382,6 +412,18 @@ static struct { }, .xormap_list = { 0x404100, 0x808200, }, }, + /* CXIMS for the 16K (hbig = 6) 2-way root, cfmws9 */ + .cxims1 = { + .cxims = { + .header = { + .type = ACPI_CEDT_TYPE_CXIMS, + .length = sizeof(mock_cedt.cxims1), + }, + .hbig = 6, + .nr_xormaps = 1, + }, + .xormap_list = { 0x0, }, + }, }; struct acpi_cedt_cfmws *mock_cfmws[] = { @@ -395,6 +437,7 @@ struct acpi_cedt_cfmws *mock_cfmws[] = { [6] = &mock_cedt.cfmws6.cfmws, [7] = &mock_cedt.cfmws7.cfmws, [8] = &mock_cedt.cfmws8.cfmws, + [9] = &mock_cedt.cfmws9.cfmws, }; static int cfmws_start; @@ -402,10 +445,11 @@ static int cfmws_end; #define CFMWS_MOD_ARRAY_START 0 #define CFMWS_MOD_ARRAY_END 5 #define CFMWS_XOR_ARRAY_START 6 -#define CFMWS_XOR_ARRAY_END 8 +#define CFMWS_XOR_ARRAY_END 9 -struct acpi_cedt_cxims *mock_cxims[1] = { +struct acpi_cedt_cxims *mock_cxims[2] = { [0] = &mock_cedt.cxims0.cxims, + [1] = &mock_cedt.cxims1.cxims, }; struct cxl_mock_res { -- 2.37.3 ^ permalink raw reply related [flat|nested] 5+ messages in thread
end of thread, other threads:[~2026-07-12 2:09 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-07-11 20:05 [PATCH v2 0/2] cxl: Allow passthrough decoders with >16K granularity Alison Schofield 2026-07-11 20:05 ` [PATCH v2 1/2] cxl/region: " Alison Schofield 2026-07-11 20:15 ` sashiko-bot 2026-07-12 2:09 ` Alison Schofield 2026-07-11 20:05 ` [PATCH v2 2/2] cxl/test: Add a 2-way 16K root decoder for passthrough testing Alison Schofield
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox