cxl: Refine slice error debug messages
The PSL Slice Error Register (PSL_SERR_An) reports implementation dependent AFU errors, in the form of a bitmap. The PSL_SERR_An register content is printed in the form of hex dump debug message. This patch decodes the PSL_ERR_An register contents, and prints a specific error message for each possible error bit. It also dumps the secondary registers AFU_ERR_An and PSL_DSISR_An, that may contain extra debug information. This patch also removes the large WARN message that used to report the cxl slice error interrupt, and replaces it by a short informative message, that draws attention to AFU implementation errors. Signed-off-by: Philippe Bergheaud <felix@linux.vnet.ibm.com> Acked-by: Ian Munsie <imunsie@au1.ibm.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
This commit is contained in:

committed by
Michael Ellerman

부모
f5c9df9a44
커밋
6e0c50f9e8
@@ -196,15 +196,18 @@ static irqreturn_t guest_slice_irq_err(int irq, void *data)
|
||||
{
|
||||
struct cxl_afu *afu = data;
|
||||
int rc;
|
||||
u64 serr;
|
||||
u64 serr, afu_error, dsisr;
|
||||
|
||||
WARN(irq, "CXL SLICE ERROR interrupt %i\n", irq);
|
||||
rc = cxl_h_get_fn_error_interrupt(afu->guest->handle, &serr);
|
||||
if (rc) {
|
||||
dev_crit(&afu->dev, "Couldn't read PSL_SERR_An: %d\n", rc);
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
dev_crit(&afu->dev, "PSL_SERR_An: 0x%.16llx\n", serr);
|
||||
afu_error = cxl_p2n_read(afu, CXL_AFU_ERR_An);
|
||||
dsisr = cxl_p2n_read(afu, CXL_PSL_DSISR_An);
|
||||
cxl_afu_decode_psl_serr(afu, serr);
|
||||
dev_crit(&afu->dev, "AFU_ERR_An: 0x%.16llx\n", afu_error);
|
||||
dev_crit(&afu->dev, "PSL_DSISR_An: 0x%.16llx\n", dsisr);
|
||||
|
||||
rc = cxl_h_ack_fn_error_interrupt(afu->guest->handle, serr);
|
||||
if (rc)
|
||||
|
Reference in New Issue
Block a user