On Tue, May 05, 2015 at 01:21:07PM +0200, Hans de Goede wrote:

> On my A10 OlinuxIno Lime I noticed a huge (5+ seconds) delay coming from
> console_init_r. This turns out to be caused by the preconsole buffer flushing
> to the cfb_console. The Lime only has a 16 bit memory bus and that is already
> heavy used to scan out the 1920x1080 framebuffer.
> 
> The problem is that print_pre_console_buffer() was printing the buffer once
> character at a time and the cfb_console code then ends up doing a cache-flush
> for touched display lines for each character.
> 
> This commit fixes this by first building a 0 terminated buffer and then
> printing it in one puts() call, avoiding unnecessary cache flushes.
> 
> This changes the time for the flush from 5+ seconds to not noticable.
> 
> The downside of this approach is that the pre-console buffer needs to fit
> on the stack, this is not that much to ask since we are talking about plain
> text here. This commit also adjusts the sunxi CONFIG_PRE_CON_BUF_SZ to
> actually fit on the stack. Sunxi currently is the only user of the pre-console
> code so no other boards need to be adjusted.
> 
> Signed-off-by: Hans de Goede <hdego...@redhat.com>

Reviewed-by: Tom Rini <tr...@konsulko.com>

-- 
Tom

Attachment: signature.asc
Description: Digital signature

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to