Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b57014de authored by Dan Williams's avatar Dan Williams
Browse files

ioat2,3: report all uncorrectable errors



Modify is_ioat_bug() to catch all errors that are uncorrectable, or not
currently handled.

Signed-off-by: default avatarDan Williams <dan.j.williams@intel.com>
parent de581b65
Loading
Loading
Loading
Loading
+1 −3
Original line number Diff line number Diff line
@@ -297,9 +297,7 @@ static inline bool is_ioat_suspended(unsigned long status)
/* channel was fatally programmed */
static inline bool is_ioat_bug(unsigned long err)
{
	return !!(err & (IOAT_CHANERR_SRC_ADDR_ERR|IOAT_CHANERR_DEST_ADDR_ERR|
			 IOAT_CHANERR_NEXT_ADDR_ERR|IOAT_CHANERR_CONTROL_ERR|
			 IOAT_CHANERR_LENGTH_ERR));
	return !!err;
}

static inline void ioat_unmap(struct pci_dev *pdev, dma_addr_t addr, size_t len,
+2 −0
Original line number Diff line number Diff line
@@ -279,6 +279,8 @@ void ioat2_timer_event(unsigned long data)
			u32 chanerr;

			chanerr = readl(chan->reg_base + IOAT_CHANERR_OFFSET);
			dev_err(to_dev(chan), "%s: Channel halted (%x)\n",
				__func__, chanerr);
			BUG_ON(is_ioat_bug(chanerr));
		}

+2 −0
Original line number Diff line number Diff line
@@ -378,6 +378,8 @@ static void ioat3_timer_event(unsigned long data)
			u32 chanerr;

			chanerr = readl(chan->reg_base + IOAT_CHANERR_OFFSET);
			dev_err(to_dev(chan), "%s: Channel halted (%x)\n",
				__func__, chanerr);
			BUG_ON(is_ioat_bug(chanerr));
		}