Message ID | 1444905142-21500-3-git-send-email-l.stach@pengutronix.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Tony, can you please take this patch through the OMAP tree for 4.4? The first patch in this series went in through Russells tree, so the below code now has the possibility to hide a real abort later during boot. Regards, Lucas Am Donnerstag, den 15.10.2015, 12:32 +0200 schrieb Lucas Stach: > This is not needed anymore. Handling a potentially pending imprecise external > abort left behind by the bootloader is now done in a slightly safer way inside > the common ARM startup code. > > Signed-off-by: Lucas Stach <l.stach@pengutronix.de> > Acked-by: Tony Lindgren <tony@atomide.com> > --- > arch/arm/mach-omap2/pdata-quirks.c | 29 ----------------------------- > 1 file changed, 29 deletions(-) > > diff --git a/arch/arm/mach-omap2/pdata-quirks.c b/arch/arm/mach-omap2/pdata-quirks.c > index ea56397599c2..3a2bc2a88db4 100644 > --- a/arch/arm/mach-omap2/pdata-quirks.c > +++ b/arch/arm/mach-omap2/pdata-quirks.c > @@ -24,9 +24,6 @@ > #include <linux/platform_data/iommu-omap.h> > #include <linux/platform_data/wkup_m3.h> > > -#include <asm/siginfo.h> > -#include <asm/signal.h> > - > #include "common.h" > #include "common-board-devices.h" > #include "dss-common.h" > @@ -385,29 +382,6 @@ static void __init omap3_pandora_legacy_init(void) > } > #endif /* CONFIG_ARCH_OMAP3 */ > > -#ifdef CONFIG_SOC_TI81XX > -static int fault_fixed_up; > - > -static int t410_abort_handler(unsigned long addr, unsigned int fsr, > - struct pt_regs *regs) > -{ > - if ((fsr == 0x406 || fsr == 0xc06) && !fault_fixed_up) { > - pr_warn("External imprecise Data abort at addr=%#lx, fsr=%#x ignored.\n", > - addr, fsr); > - fault_fixed_up = 1; > - return 0; > - } > - > - return 1; > -} > - > -static void __init t410_abort_init(void) > -{ > - hook_fault_code(16 + 6, t410_abort_handler, SIGBUS, BUS_OBJERR, > - "imprecise external abort"); > -} > -#endif > - > #if defined(CONFIG_ARCH_OMAP4) || defined(CONFIG_SOC_OMAP5) > static struct iommu_platform_data omap4_iommu_pdata = { > .reset_name = "mmu_cache", > @@ -536,9 +510,6 @@ static struct pdata_init pdata_quirks[] __initdata = { > { "openpandora,omap3-pandora-600mhz", omap3_pandora_legacy_init, }, > { "openpandora,omap3-pandora-1ghz", omap3_pandora_legacy_init, }, > #endif > -#ifdef CONFIG_SOC_TI81XX > - { "hp,t410", t410_abort_init, }, > -#endif > #ifdef CONFIG_SOC_OMAP5 > { "ti,omap5-uevm", omap5_uevm_legacy_init, }, > #endif
* Lucas Stach <l.stach@pengutronix.de> [151112 05:33]: > Tony, > > can you please take this patch through the OMAP tree for 4.4? The first > patch in this series went in through Russells tree, so the below code > now has the possibility to hide a real abort later during boot. OK will do thanks. I've also verified that the abort handler is no longer needed. After seeing where it happens, fixing it was trivial :) FYI, the fix was 57df53808534 ("ARM: OMAP2+: Fix imprecise external abort caused by bogus SRAM init"). Other platforms may have similar issues where it's not really anything left behind by the bootloader but a real kernel bug. Regards, Tony > > Am Donnerstag, den 15.10.2015, 12:32 +0200 schrieb Lucas Stach: > > This is not needed anymore. Handling a potentially pending imprecise external > > abort left behind by the bootloader is now done in a slightly safer way inside > > the common ARM startup code. > > > > Signed-off-by: Lucas Stach <l.stach@pengutronix.de> > > Acked-by: Tony Lindgren <tony@atomide.com> > > --- > > arch/arm/mach-omap2/pdata-quirks.c | 29 ----------------------------- > > 1 file changed, 29 deletions(-) > > > > diff --git a/arch/arm/mach-omap2/pdata-quirks.c b/arch/arm/mach-omap2/pdata-quirks.c > > index ea56397599c2..3a2bc2a88db4 100644 > > --- a/arch/arm/mach-omap2/pdata-quirks.c > > +++ b/arch/arm/mach-omap2/pdata-quirks.c > > @@ -24,9 +24,6 @@ > > #include <linux/platform_data/iommu-omap.h> > > #include <linux/platform_data/wkup_m3.h> > > > > -#include <asm/siginfo.h> > > -#include <asm/signal.h> > > - > > #include "common.h" > > #include "common-board-devices.h" > > #include "dss-common.h" > > @@ -385,29 +382,6 @@ static void __init omap3_pandora_legacy_init(void) > > } > > #endif /* CONFIG_ARCH_OMAP3 */ > > > > -#ifdef CONFIG_SOC_TI81XX > > -static int fault_fixed_up; > > - > > -static int t410_abort_handler(unsigned long addr, unsigned int fsr, > > - struct pt_regs *regs) > > -{ > > - if ((fsr == 0x406 || fsr == 0xc06) && !fault_fixed_up) { > > - pr_warn("External imprecise Data abort at addr=%#lx, fsr=%#x ignored.\n", > > - addr, fsr); > > - fault_fixed_up = 1; > > - return 0; > > - } > > - > > - return 1; > > -} > > - > > -static void __init t410_abort_init(void) > > -{ > > - hook_fault_code(16 + 6, t410_abort_handler, SIGBUS, BUS_OBJERR, > > - "imprecise external abort"); > > -} > > -#endif > > - > > #if defined(CONFIG_ARCH_OMAP4) || defined(CONFIG_SOC_OMAP5) > > static struct iommu_platform_data omap4_iommu_pdata = { > > .reset_name = "mmu_cache", > > @@ -536,9 +510,6 @@ static struct pdata_init pdata_quirks[] __initdata = { > > { "openpandora,omap3-pandora-600mhz", omap3_pandora_legacy_init, }, > > { "openpandora,omap3-pandora-1ghz", omap3_pandora_legacy_init, }, > > #endif > > -#ifdef CONFIG_SOC_TI81XX > > - { "hp,t410", t410_abort_init, }, > > -#endif > > #ifdef CONFIG_SOC_OMAP5 > > { "ti,omap5-uevm", omap5_uevm_legacy_init, }, > > #endif > > -- > Pengutronix e.K. | Lucas Stach | > Industrial Linux Solutions | http://www.pengutronix.de/ | > -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/arch/arm/mach-omap2/pdata-quirks.c b/arch/arm/mach-omap2/pdata-quirks.c index ea56397599c2..3a2bc2a88db4 100644 --- a/arch/arm/mach-omap2/pdata-quirks.c +++ b/arch/arm/mach-omap2/pdata-quirks.c @@ -24,9 +24,6 @@ #include <linux/platform_data/iommu-omap.h> #include <linux/platform_data/wkup_m3.h> -#include <asm/siginfo.h> -#include <asm/signal.h> - #include "common.h" #include "common-board-devices.h" #include "dss-common.h" @@ -385,29 +382,6 @@ static void __init omap3_pandora_legacy_init(void) } #endif /* CONFIG_ARCH_OMAP3 */ -#ifdef CONFIG_SOC_TI81XX -static int fault_fixed_up; - -static int t410_abort_handler(unsigned long addr, unsigned int fsr, - struct pt_regs *regs) -{ - if ((fsr == 0x406 || fsr == 0xc06) && !fault_fixed_up) { - pr_warn("External imprecise Data abort at addr=%#lx, fsr=%#x ignored.\n", - addr, fsr); - fault_fixed_up = 1; - return 0; - } - - return 1; -} - -static void __init t410_abort_init(void) -{ - hook_fault_code(16 + 6, t410_abort_handler, SIGBUS, BUS_OBJERR, - "imprecise external abort"); -} -#endif - #if defined(CONFIG_ARCH_OMAP4) || defined(CONFIG_SOC_OMAP5) static struct iommu_platform_data omap4_iommu_pdata = { .reset_name = "mmu_cache", @@ -536,9 +510,6 @@ static struct pdata_init pdata_quirks[] __initdata = { { "openpandora,omap3-pandora-600mhz", omap3_pandora_legacy_init, }, { "openpandora,omap3-pandora-1ghz", omap3_pandora_legacy_init, }, #endif -#ifdef CONFIG_SOC_TI81XX - { "hp,t410", t410_abort_init, }, -#endif #ifdef CONFIG_SOC_OMAP5 { "ti,omap5-uevm", omap5_uevm_legacy_init, }, #endif