Message ID | 1370465793-7997-1-git-send-email-dianders@chromium.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Wed, Jun 5, 2013 at 1:56 PM, Doug Anderson <dianders@chromium.org> wrote: > If the early MMU mapping of the UART happens to get booted out of the > TLB between the start of paging_init() and when we finally re-add the > UART at the very end of s3c_init_cpu(), we'll get a hang at bootup if > we've got early_printk enabled. Avoid this hang by calling > debug_ll_io_init() early. > > Without this patch, you can reliably reproduce a hang when early > printk is enabled by adding flush_tlb_all() at the start of > exynos_init_io(). After this patch the hang goes away. > > Signed-off-by: Doug Anderson <dianders@chromium.org> Acked-by: Olof Johansson <olof@lixom.net> Kukjin, this seems appropriate for 3.10. Do you have other fixes queued or should I apply this directly? -Olof
Olof Johansson wrote: > > On Wed, Jun 5, 2013 at 1:56 PM, Doug Anderson <dianders@chromium.org> > wrote: > > If the early MMU mapping of the UART happens to get booted out of the > > TLB between the start of paging_init() and when we finally re-add the > > UART at the very end of s3c_init_cpu(), we'll get a hang at bootup if > > we've got early_printk enabled. Avoid this hang by calling > > debug_ll_io_init() early. > > > > Without this patch, you can reliably reproduce a hang when early > > printk is enabled by adding flush_tlb_all() at the start of > > exynos_init_io(). After this patch the hang goes away. > > > > Signed-off-by: Doug Anderson <dianders@chromium.org> > > Acked-by: Olof Johansson <olof@lixom.net> > > > Kukjin, this seems appropriate for 3.10. Do you have other fixes > queued or should I apply this directly? > If I remember correctly, nothing in my tree for 3.10. So please go ahead with my ack if you want, Acked-by: Kukjin Kim <kgene.kim@samsung.com> Thanks. - Kukjin
On Thu, Jun 06, 2013 at 08:32:04AM +0900, Kukjin Kim wrote: > Olof Johansson wrote: > > > > On Wed, Jun 5, 2013 at 1:56 PM, Doug Anderson <dianders@chromium.org> > > wrote: > > > If the early MMU mapping of the UART happens to get booted out of the > > > TLB between the start of paging_init() and when we finally re-add the > > > UART at the very end of s3c_init_cpu(), we'll get a hang at bootup if > > > we've got early_printk enabled. Avoid this hang by calling > > > debug_ll_io_init() early. > > > > > > Without this patch, you can reliably reproduce a hang when early > > > printk is enabled by adding flush_tlb_all() at the start of > > > exynos_init_io(). After this patch the hang goes away. > > > > > > Signed-off-by: Doug Anderson <dianders@chromium.org> > > > > Acked-by: Olof Johansson <olof@lixom.net> > > > > > > Kukjin, this seems appropriate for 3.10. Do you have other fixes > > queued or should I apply this directly? > > > If I remember correctly, nothing in my tree for 3.10. > > So please go ahead with my ack if you want, > > Acked-by: Kukjin Kim <kgene.kim@samsung.com> > Applied for 3.10 (together with the uncompress.h fix from Tushar) -Olof
diff --git a/arch/arm/mach-exynos/common.c b/arch/arm/mach-exynos/common.c index 027c9e7..f7e504b 100644 --- a/arch/arm/mach-exynos/common.c +++ b/arch/arm/mach-exynos/common.c @@ -386,6 +386,8 @@ int __init exynos_fdt_map_chipid(unsigned long node, const char *uname, void __init exynos_init_io(struct map_desc *mach_desc, int size) { + debug_ll_io_init(); + #ifdef CONFIG_OF if (initial_boot_params) of_scan_flat_dt(exynos_fdt_map_chipid, NULL);
If the early MMU mapping of the UART happens to get booted out of the TLB between the start of paging_init() and when we finally re-add the UART at the very end of s3c_init_cpu(), we'll get a hang at bootup if we've got early_printk enabled. Avoid this hang by calling debug_ll_io_init() early. Without this patch, you can reliably reproduce a hang when early printk is enabled by adding flush_tlb_all() at the start of exynos_init_io(). After this patch the hang goes away. Signed-off-by: Doug Anderson <dianders@chromium.org> --- Changes in v2: - Use debug_ll_io_init() instead of reordering printks and adding warnings. Thanks Olof! arch/arm/mach-exynos/common.c | 2 ++ 1 file changed, 2 insertions(+)