Re: [PATCH v8 0/4] cxl: Repair poison enumeration regressions

From: Dave Jiang

Date: Wed Oct 14 2026 - 12:23:30 EST




On 9/22/26 3:11 AM, Richard Cheng wrote:
> This series repairs four poison enumeration regressions introduced by
> commit be5cbd084027 ("cxl: Kill enum cxl_decoder_mode"). It groups the
> remaining poison fixes from v7 [1] into a poison repair set.
>
> Patch 1: cxl_get_poison_unmapped() ends the partition walk when it
> encounters a fully mapped partition. Continue to the next partition
> instead, so unmapped poison in later partitions is still collected.
>
> Patch 2: the unmapped scan tolerates -EFAULT for RAM partitions but
> leaves the error in rc. If no later query overwrites rc, enumeration
> incorrectly reports failure. Clear rc before continuing past the
> tolerated error.
>
> Patch 3: use the ctx->offset handoff from the committed-decoder walk
> as the starting point for the unmapped scan. Starting after the highest
> DPA allocation leaves ranges allocated to uncommitted decoders
> unqueried. Resume at the committed boundary and scan later partitions
> from their beginning.
>
> Patch 4: cxl_get_poison_by_memdev() can overwrite an earlier partition
> query failure with a later success. Stop on the first error that is
> not already tolerated as a RAM -EFAULT, preserving the failure.
>
> In v7 [1] patch 6's review, Jonathan also noted that
> cxl_internal_send_cmd() documents -EFAULT as a hardware error.
> I will send a separate patch to clarify its mapping from the Invalid
> Physical Address device response.
>
> Changes since v7 [1]:
> - Retain v7 patches 2–5, renumbered as patches 1–4, and rebase onto
> current cxl/next.
> - Drop v7 patches 1 and 7, which have been applied to cxl/next.
> - Drop v7 patch 6 because the zero-sized HDM decoder series [2]
> already fixes its negative partition-index access. Specifically,
> commit 00f9ef9ad1ce ("cxl/hdm: Allow zero sized HDM decoders") [3]
> guards the partition lookup while allowing the decoder walk to continue.
> - Expand patch 2's commit message to explain how a RAM poison query
> produces -EFAULT and why that response is tolerated.
>
>
> [1]:
> https://lore.kernel.org/linux-cxl/20260902053839.25595-1-icheng@xxxxxxxxxx/
> [2]:
> https://lore.kernel.org/linux-cxl/20260914090858.19181-1-icheng@xxxxxxxxxx/
> [3]:
> https://lore.kernel.org/linux-cxl/20260914090858.19181-3-icheng@xxxxxxxxxx/
>
>
> Richard Cheng (4):
> cxl/region: Scan all partitions for unmapped poison
> cxl/region: Don't leak tolerated RAM -EFAULT from unmapped poison scan
> cxl/region: Start unmapped poison scan at the committed decoder
> boundary
> cxl/memdev: Don't overwrite the error from an earlier partition poison
> query
>
> drivers/cxl/core/memdev.c | 2 ++
> drivers/cxl/core/region.c | 13 ++++++-------
> 2 files changed, 8 insertions(+), 7 deletions(-)
>
>
> base-commit: f2e9991100c903ec2d8eb62c3a1d6e0b9c67432e

Can you please rebase against a Linus tag? That's typically preferred. Thanks. Maybe you can address Alison and Davidlohr's comments when you rebase.