Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

rsxx: Adding EEH check inside cregs timeout.

Unfortunaly, our CPU register path does not do any kind of
EEH error checking. So to fix this issue, an ioread32 was
added to the CPU register timeout code. This way, the
driver can check to see if the timeout was caused by an EEH
error or not. This is a dummy read.

Signed-off-by: Philip J Kelleher <pjk1939@linux.vnet.ibm.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>

authored by

Philip J Kelleher and committed by
Jens Axboe
b8b225da 3eb8dcaf

+9
+9
drivers/block/rsxx/cregs.c
··· 431 431 *hw_stat = completion.creg_status; 432 432 433 433 if (completion.st) { 434 + /* 435 + * This read is needed to verify that there has not been any 436 + * extreme errors that might have occurred, i.e. EEH. The 437 + * function iowrite32 will not detect EEH errors, so it is 438 + * necessary that we recover if such an error is the reason 439 + * for the timeout. This is a dummy read. 440 + */ 441 + ioread32(card->regmap + SCRATCH); 442 + 434 443 dev_warn(CARD_TO_DEV(card), 435 444 "creg command failed(%d x%08x)\n", 436 445 completion.st, addr);