From: Rafał Miłecki Date: Fri, 8 Apr 2016 20:36:57 +0000 (+0000) Subject: Revert "bcm53xx: revert patch removing imprecise abort workaround" X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=51d887ba007e56f56f64a4495fc393ae87c7dc97;p=openwrt%2Fstaging%2Fyousong.git Revert "bcm53xx: revert patch removing imprecise abort workaround" This reverts commit r48961. It didn't fix PCIe host driver issue as there are more aborts triggered by it. Signed-off-by: Rafał Miłecki SVN-Revision: 49120 --- diff --git a/target/linux/bcm53xx/patches-4.4/301-Revert-ARM-BCM5301X-remove-workaround-imprecise-abor.patch b/target/linux/bcm53xx/patches-4.4/301-Revert-ARM-BCM5301X-remove-workaround-imprecise-abor.patch deleted file mode 100644 index 907c581387..0000000000 --- a/target/linux/bcm53xx/patches-4.4/301-Revert-ARM-BCM5301X-remove-workaround-imprecise-abor.patch +++ /dev/null @@ -1,66 +0,0 @@ -From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= -Date: Tue, 8 Mar 2016 09:03:21 +0100 -Subject: [PATCH] Revert "ARM: BCM5301X: remove workaround imprecise abort - fault handler" -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -This reverts commit 937b12306ea79044c86f2e69b3061c7279245825. - -It seems imprecise external abort (0x1406) can be still happen on -BCM4709 during PCI initialization. - -Signed-off-by: Rafał Miłecki ---- - ---- a/arch/arm/mach-bcm/bcm_5301x.c -+++ b/arch/arm/mach-bcm/bcm_5301x.c -@@ -9,6 +9,40 @@ - #include - - #include -+#include -+#include -+ -+ -+static bool first_fault = true; -+ -+static int bcm5301x_abort_handler(unsigned long addr, unsigned int fsr, -+ struct pt_regs *regs) -+{ -+ if ((fsr == 0x1406 || fsr == 0x1c06) && first_fault) { -+ first_fault = false; -+ -+ /* -+ * These faults with codes 0x1406 (BCM4709) or 0x1c06 happens -+ * for no good reason, possibly left over from the CFE boot -+ * loader. -+ */ -+ pr_warn("External imprecise Data abort at addr=%#lx, fsr=%#x ignored.\n", -+ addr, fsr); -+ -+ /* Returning non-zero causes fault display and panic */ -+ return 0; -+ } -+ -+ /* Others should cause a fault */ -+ return 1; -+} -+ -+static void __init bcm5301x_init_early(void) -+{ -+ /* Install our hook */ -+ hook_fault_code(16 + 6, bcm5301x_abort_handler, SIGBUS, BUS_OBJERR, -+ "imprecise external abort"); -+} - - static const char *const bcm5301x_dt_compat[] __initconst = { - "brcm,bcm4708", -@@ -18,5 +52,6 @@ static const char *const bcm5301x_dt_com - DT_MACHINE_START(BCM5301X, "BCM5301X") - .l2c_aux_val = 0, - .l2c_aux_mask = ~0, -+ .init_early = bcm5301x_init_early, - .dt_compat = bcm5301x_dt_compat, - MACHINE_END