MIPS: SGI-IP27: Use structs for decoding error status registers

Convert printing of error status registers to use structs, which
are defines for IP27 and IP35.

Signed-off-by: Thomas Bogendoerfer <tbogendoerfer@suse.de>
Signed-off-by: Paul Burton <paulburton@kernel.org>
Cc: Ralf Baechle <ralf@linux-mips.org>
Cc: James Hogan <jhogan@kernel.org>
Cc: linux-mips@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
This commit is contained in:
Thomas Bogendoerfer 2020-01-09 13:33:46 +01:00 committed by Paul Burton
parent db96e058b4
commit 2c616e9f03
No known key found for this signature in database
GPG Key ID: 3EA79FACB57500DD
1 changed files with 20 additions and 18 deletions

View File

@ -30,29 +30,31 @@ static void dump_hub_information(unsigned long errst0, unsigned long errst1)
{ "WERR", "Uncached Partial Write", "PWERR", "Write Timeout", { "WERR", "Uncached Partial Write", "PWERR", "Write Timeout",
NULL, NULL, NULL, NULL } NULL, NULL, NULL, NULL }
}; };
int wrb = errst1 & PI_ERR_ST1_WRBRRB_MASK; union pi_err_stat0 st0;
union pi_err_stat1 st1;
if (!(errst0 & PI_ERR_ST0_VALID_MASK)) { st0.pi_stat0_word = errst0;
printk("Hub does not contain valid error information\n"); st1.pi_stat1_word = errst1;
if (!st0.pi_stat0_fmt.s0_valid) {
pr_info("Hub does not contain valid error information\n");
return; return;
} }
pr_info("Hub has valid error information:\n");
printk("Hub has valid error information:\n"); if (st0.pi_stat0_fmt.s0_ovr_run)
if (errst0 & PI_ERR_ST0_OVERRUN_MASK) pr_info("Overrun is set. Error stack may contain additional "
printk("Overrun is set. Error stack may contain additional "
"information.\n"); "information.\n");
printk("Hub error address is %08lx\n", pr_info("Hub error address is %08lx\n",
(errst0 & PI_ERR_ST0_ADDR_MASK) >> (PI_ERR_ST0_ADDR_SHFT - 3)); (unsigned long)st0.pi_stat0_fmt.s0_addr);
printk("Incoming message command 0x%lx\n", pr_info("Incoming message command 0x%lx\n",
(errst0 & PI_ERR_ST0_CMD_MASK) >> PI_ERR_ST0_CMD_SHFT); (unsigned long)st0.pi_stat0_fmt.s0_cmd);
printk("Supplemental field of incoming message is 0x%lx\n", pr_info("Supplemental field of incoming message is 0x%lx\n",
(errst0 & PI_ERR_ST0_SUPPL_MASK) >> PI_ERR_ST0_SUPPL_SHFT); (unsigned long)st0.pi_stat0_fmt.s0_supl);
printk("T5 Rn (for RRB only) is 0x%lx\n", pr_info("T5 Rn (for RRB only) is 0x%lx\n",
(errst0 & PI_ERR_ST0_REQNUM_MASK) >> PI_ERR_ST0_REQNUM_SHFT); (unsigned long)st0.pi_stat0_fmt.s0_t5_req);
printk("Error type is %s\n", err_type[wrb] pr_info("Error type is %s\n", err_type[st1.pi_stat1_fmt.s1_rw_rb]
[(errst0 & PI_ERR_ST0_TYPE_MASK) >> PI_ERR_ST0_TYPE_SHFT] [st0.pi_stat0_fmt.s0_err_type] ? : "invalid");
? : "invalid");
} }
int ip27_be_handler(struct pt_regs *regs, int is_fixup) int ip27_be_handler(struct pt_regs *regs, int is_fixup)