Unverified Commit 2c616e9f authored by Thomas Bogendoerfer's avatar Thomas Bogendoerfer Committed by Paul Burton
Browse files

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: default avatarThomas Bogendoerfer <tbogendoerfer@suse.de>
Signed-off-by: default avatarPaul 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
parent db96e058
Loading
Loading
Loading
Loading
+20 −18
Original line number Diff line number Diff line
@@ -30,29 +30,31 @@ static void dump_hub_information(unsigned long errst0, unsigned long errst1)
		{ "WERR", "Uncached Partial Write", "PWERR", "Write Timeout",
		  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)) {
		printk("Hub does not contain valid error information\n");
	st0.pi_stat0_word = errst0;
	st1.pi_stat1_word = errst1;

	if (!st0.pi_stat0_fmt.s0_valid) {
		pr_info("Hub does not contain valid error information\n");
		return;
	}


	printk("Hub has valid error information:\n");
	if (errst0 & PI_ERR_ST0_OVERRUN_MASK)
		printk("Overrun is set.	 Error stack may contain additional "
	pr_info("Hub has valid error information:\n");
	if (st0.pi_stat0_fmt.s0_ovr_run)
		pr_info("Overrun is set. Error stack may contain additional "
		       "information.\n");
	printk("Hub error address is %08lx\n",
	       (errst0 & PI_ERR_ST0_ADDR_MASK) >> (PI_ERR_ST0_ADDR_SHFT - 3));
	printk("Incoming message command 0x%lx\n",
	       (errst0 & PI_ERR_ST0_CMD_MASK) >> PI_ERR_ST0_CMD_SHFT);
	printk("Supplemental field of incoming message is 0x%lx\n",
	       (errst0 & PI_ERR_ST0_SUPPL_MASK) >> PI_ERR_ST0_SUPPL_SHFT);
	printk("T5 Rn (for RRB only) is 0x%lx\n",
	       (errst0 & PI_ERR_ST0_REQNUM_MASK) >> PI_ERR_ST0_REQNUM_SHFT);
	printk("Error type is %s\n", err_type[wrb]
	       [(errst0 & PI_ERR_ST0_TYPE_MASK) >> PI_ERR_ST0_TYPE_SHFT]
		? : "invalid");
	pr_info("Hub error address is %08lx\n",
		(unsigned long)st0.pi_stat0_fmt.s0_addr);
	pr_info("Incoming message command 0x%lx\n",
		(unsigned long)st0.pi_stat0_fmt.s0_cmd);
	pr_info("Supplemental field of incoming message is 0x%lx\n",
		(unsigned long)st0.pi_stat0_fmt.s0_supl);
	pr_info("T5 Rn (for RRB only) is 0x%lx\n",
		(unsigned long)st0.pi_stat0_fmt.s0_t5_req);
	pr_info("Error type is %s\n", err_type[st1.pi_stat1_fmt.s1_rw_rb]
	       [st0.pi_stat0_fmt.s0_err_type] ? : "invalid");
}

int ip27_be_handler(struct pt_regs *regs, int is_fixup)