[U-Boot] [RFC PATCH] Pre-console buffer for ARM

Graeme Russ graeme.russ at gmail.com
Tue Aug 30 01:00:46 CEST 2011


Hi Mike,

On Tue, Aug 30, 2011 at 6:10 AM, Mike Frysinger <vapier at gentoo.org> wrote:
> On Monday, August 29, 2011 15:42:23 Simon Glass wrote:
>> On Mon, Aug 29, 2011 at 12:20 PM, Mike Frysinger wrote:
>> > On Monday, August 29, 2011 13:21:57 Simon Glass wrote:
>> >> +     if (gd->con_buf_idx < CONFIG_SYS_TMP_CON_BUF_SZ)
>> >> +             buffer[gd->con_buf_idx++] = c;
>> >
>> > seems like a circular buffer would make more sense ... usually the part
>> > of the log you want is the last chunk and not the first
>>

Well you would need an 'overflow' flag and then based on that you would need
to do two printf()'s when dumping the buffer - One from the 'index to end'
which is the 'top' of the buffer and one from 'start to index' which is the
bottom.

>> Yes I agree, although if you have more than 1KB of data it might be a bug.

I personally don't see the need - I expect the amount of pre-console output
would be faily limited considering that the board should do everything it
can to initialise console as early as possible.

>
> give people a foot and they'll take 1MiB :p
>
> it's fairly easy as well:
> #define CIRC_BUF_IDX(idx) ((idx) & (CONFIG_SYS_TMP_CON_BUF_SZ-1))
> buffer[CIRC_BUF_IDX(gd->conf_buf_idx++)] = c;

But does that work for non power-of-two buffer sizes...

Buffer size = 100 = 1100100
(size - 1)        = 1100011
idx = 100         = 1100100
idx & (size - 1)  = 1100000

Nope :(

Regards,

Graeme


More information about the U-Boot mailing list