Browse Source

microblaze: Fix problem with early_printk in startup

Problem arise when is incopatibility between kernel/dts/pvr
and kernel tries to announce it. Early printk device
(uartlite in our case) was in TLB 2 and when kernel
extract DTB it necessary to allocate at least one
TLB at the end of memory. First free TLB was number two
where was early printk. But checking mechanism (kernel/dts/pvr)
was after extrahing but TLB 2 was different. This caused
that kernel hung up.
Moving early printk device to TLB 63 solve it and we don't
protect it which means that we can use early_printk messages
only for initial parts of kernel then we rewrite TLB 63.

Reported-by: Edgar E. Iglesias <edgar.iglesias@gmail.com>
Signed-off-by: Michal Simek <monstr@monstr.eu>
Michal Simek 16 năm trước cách đây
mục cha
commit
fee3c55d7f
1 tập tin đã thay đổi với 1 bổ sung1 xóa
  1. 1 1
      arch/microblaze/kernel/misc.S

+ 1 - 1
arch/microblaze/kernel/misc.S

@@ -69,7 +69,7 @@ early_console_reg_tlb_alloc:
 	 * Load a TLB entry for the UART, so that microblaze_progress() can use
 	 * Load a TLB entry for the UART, so that microblaze_progress() can use
 	 * the UARTs nice and early.  We use a 4k real==virtual mapping.
 	 * the UARTs nice and early.  We use a 4k real==virtual mapping.
 	 */
 	 */
-	ori	r4, r0, 2
+	ori	r4, r0, 63
 	mts	rtlbx, r4 /* TLB slot 2 */
 	mts	rtlbx, r4 /* TLB slot 2 */
 
 
 	or	r4,r5,r0
 	or	r4,r5,r0