Message ID | 20150116014919.30817.13079.sendpatchset@little-apple (mailing list archive) |
---|---|
State | Accepted |
Commit | f469cde20a7ee342070b4a459b6fce469a3186db |
Delegated to: | Simon Horman |
Headers | show |
On Fri, Jan 16, 2015 at 2:49 AM, Magnus Damm <magnus.damm@gmail.com> wrote: > From: Magnus Damm <damm+renesas@opensource.se> > > As of commit 9a1091ef0017c40a ("irqchip: gic: Support hierarchy irq > domain."), Marzen legacy hangs during boot with: > > Image Name: 'Linux-3.19.0-rc4' > Image Type: ARM Linux Kernel Image (uncompressed) > Data Size: 3445880 Bytes = 3.3 MiB > Load Address: 60008000 > Entry Point: 60008000 > Verifying Checksum ... OK > Loading Kernel Image ... OK > OK > > Starting kernel ... > > Enabling DEBUG_LL does not seem to change the situation, however this > patch by itself fixes this issue and re-enables normal boot. > > This issue happens because the IRQ numbers of the GIC are now virtual, > and no longer match the hardcoded hardware IRQ numbers in the platform > board code. > > To fix this, instantiate the GIC from platform board code when compiling > a legacy kernel, like is done for the sh73a0, r8a7740 and r8a7778 legacy code. > > Follows same style as the r8a7740 legacy GIC fix by Geert Uytterhoeven, > thanks to him for the initial work. > > Signed-off-by: Magnus Damm <damm+renesas@opensource.se> Acked-by: Geert Uytterhoeven <geert+renesas@glider.be> Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds -- To unsubscribe from this list: send the line "unsubscribe linux-sh" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
--- 0001/arch/arm/mach-shmobile/setup-r8a7779.c +++ work/arch/arm/mach-shmobile/setup-r8a7779.c 2015-01-15 18:48:00.969339495 +0900 @@ -720,10 +720,17 @@ static int r8a7779_set_wake(struct irq_d void __init r8a7779_init_irq_dt(void) { +#ifdef CONFIG_ARCH_SHMOBILE_LEGACY + void __iomem *gic_dist_base = ioremap_nocache(0xf0001000, 0x1000); + void __iomem *gic_cpu_base = ioremap_nocache(0xf0000100, 0x1000); +#endif gic_arch_extn.irq_set_wake = r8a7779_set_wake; +#ifdef CONFIG_ARCH_SHMOBILE_LEGACY + gic_init(0, 29, gic_dist_base, gic_cpu_base); +#else irqchip_init(); - +#endif /* route all interrupts to ARM */ __raw_writel(0xffffffff, INT2NTSR0); __raw_writel(0x3fffffff, INT2NTSR1);