Re: [PATCH] ARM: EXYNOS: Fix low level debug support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Monday 22 of July 2013 06:23:06 Thomas Abraham wrote:
> On 13 July 2013 04:57, Yadwinder Singh Brar <yadi.brar@xxxxxxxxxxx> 
wrote:
> > Presently, using exynos_defconfig with CONFIG_DEBUG_LL and
> > CONFIG_EARLY_PRINTK on, kernel is not booting, we are getting
> > following:
> > 
> > [    0.000000] ------------[ cut here ]------------
> > [    0.000000] kernel BUG at mm/vmalloc.c:1134!
> > [    0.000000] Internal error: Oops - BUG: 0 [#1] PREEMPT SMP ARM
> > [    0.000000] Modules linked in:
> > [    0.000000] CPU: 0 PID: 0 Comm: swapper Not tainted 3.11.0-rc1 #633
> > [    0.000000] task: c052ec48 ti: c0524000 task.ti: c0524000
> > [    0.000000] PC is at vm_area_add_early+0x54/0x94
> > [    0.000000] LR is at add_static_vm_early+0xc/0x60
> > 
> > Its because iotable_init tries to map UART again which is already
> > mapped by debug_ll_io_init() call in exynos_init_io() within same
> > virtal address range as requested later.
> 
> debug_ll_io_init ioremaps debug uart address space with 4KB size
> whereas the exynos_init_io() function ioremaps a single 512KB memory
> size for all the four uart ports which envelops the mapping created by
> debug_ll_io_init. This is caught as a kernel bug.

Right.

> > This issue seems to be occured after :
> > commit ee4de5d99aeac44f4507b7538b2b3faedc5205b9
> > ARM: 7781/1: mmu: Add debug_ll_io_init() mappings to early mappings
> > 
> > This patch moves S3C_UART iodesc(in iodesc_list) inside CONFIG_DEBUG_LL
> > check.
> Instead of moving, all the such iodesc entries for UART controller can
> be removed for all Samsung SoC's now since the Samsung uart driver
> does a ioremap during probe and any needed iomapping for earlyprintk
> is handled by debug_ll_io_init().

Yes. This mapping should not be here, but...

If you look at plat-samsung/pm.c, there is a debugging code that relies on 
presence of this mapping. So until this gets fixed/removed (I'm working on 
it right now), I'd suggest keeping Yadwinder's solution.

The only problem is that the code in pm.c expects _all_ UARTs to be mapped 
(see s3c_pm_resture_uarts() and co.), so in case of DEBUG_LL enabled, 
something must be done ensure that rest of the ports are mapped.

I'm going to completely rework Samsung PM code in some time, so this 
problem will go away, but this must be fixed in 3.11.

Best regards,
Tomasz

--
To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux SoC Development]     [Linux Rockchip Development]     [Linux USB Development]     [Video for Linux]     [Linux Audio Users]     [Linux SCSI]     [Yosemite News]

  Powered by Linux