On Wed, 26 Mar 2025 20:47:11 -0500 Terry Bowman <terry.bowman@xxxxxxx> wrote: > The CXL RAS handlers do not currently log if the RAS registers are > unmapped. This is needed in order to help debug CXL error handling. Update > the CXL driver to log a warning message if the RAS register block is > unmapped during RAS error handling. > > Also, refactor the __cxl_handle_cor_ras() functions check for status. > Change it to be consistent with the same status check in > __cxl_handle_cor_ras(). Not keen on an 'also' bit in here. Seems entirely separable into its own patch. Two trivial one thing patches seems better than one slightly larger one. Actual changes seem fine to me so feel free to add Reviewed-by: Jonathan Cameron <Jonathan.Cameron@xxxxxxxxxx> to resulting pair of patches. > > Signed-off-by: Terry Bowman <terry.bowman@xxxxxxx> > --- > drivers/cxl/core/pci.c | 17 +++++++++++------ > 1 file changed, 11 insertions(+), 6 deletions(-) > > diff --git a/drivers/cxl/core/pci.c b/drivers/cxl/core/pci.c > index 1cf1ab4d9160..4770810b2138 100644 > --- a/drivers/cxl/core/pci.c > +++ b/drivers/cxl/core/pci.c > @@ -656,15 +656,18 @@ static void __cxl_handle_cor_ras(struct device *dev, > void __iomem *addr; > u32 status; > > - if (!ras_base) > + if (!ras_base) { > + dev_warn_once(dev, "CXL RAS register block is not mapped"); > return; > + } > > addr = ras_base + CXL_RAS_CORRECTABLE_STATUS_OFFSET; > status = readl(addr); > - if (status & CXL_RAS_CORRECTABLE_STATUS_MASK) { > - writel(status & CXL_RAS_CORRECTABLE_STATUS_MASK, addr); > - trace_cxl_aer_correctable_error(to_cxl_memdev(dev), status); > - } > + if (!(status & CXL_RAS_CORRECTABLE_STATUS_MASK)) > + return; > + writel(status & CXL_RAS_CORRECTABLE_STATUS_MASK, addr); > + > + trace_cxl_aer_correctable_error(to_cxl_memdev(dev), status); > } > > static void cxl_handle_endpoint_cor_ras(struct cxl_dev_state *cxlds) > @@ -700,8 +703,10 @@ static bool __cxl_handle_ras(struct device *dev, void __iomem *ras_base) > u32 status; > u32 fe; > > - if (!ras_base) > + if (!ras_base) { > + dev_warn_once(dev, "CXL RAS register block is not mapped"); > return false; > + } > > addr = ras_base + CXL_RAS_UNCORRECTABLE_STATUS_OFFSET; > status = readl(addr);