[coreboot] patch: init gx cache earlier.
Carl-Daniel Hailfinger
c-d.hailfinger.devel.2006 at gmx.net
Mon Feb 4 02:32:46 CET 2008
On 04.02.2008 00:32, ron minnich wrote:
> On Feb 3, 2008 3:26 PM, Carl-Daniel Hailfinger
> <c-d.hailfinger.devel.2006 at gmx.net> wrote:
>
>
>> Have you tried adding a "fillup" file to the lar which occupies the
>> remaing unsused space? That should help a lot.
>>
>
> That's no longer the big time item. The big time item is now the
> decompress, which seems to run
> at 4 kilobytes per second.
>
Ouch. That really hurts. We probably want to add print_conf() from
v2/src/mainboard/pcengines/alix1c/mainboard.c to v3. Comparing the v3
output of print_conf to the v2 output may be enlightening. I don't have
any Geode LX boards, so I can't really test.
>> Besides that, having a boot time breakdown to find the worst offenders
>> is an investment into the future. But how should we implement that?
>> Maybe a Kconfig variable which adds TSC timestamps to all printk()
>> calls? While rdtsc() is slow, it is not slow enough to actually show up
>> in profiles if we use it together with printk.
>>
>
> we can just put the option in kconfig. we had this option in v2.
>
Sorry, I can't find such an option in v2 and the svn log also didn't
turn up any hits. Could you point me to a specific file and/or revision?
I have a (wrong due to varargs for vtxprintf) prototype patch for v3:
Index: lib/console.c
===================================================================
--- lib/console.c (Revision 571)
+++ lib/console.c (Arbeitskopie)
@@ -7,6 +7,8 @@
int vtxprintf(void (*)(unsigned char, void *arg),
void *arg, const char *, va_list);
+#define rdtscl(low) __asm__ __volatile__ ("rdtsc" : "=a" (low) : : "edx")
+
static int console_loglevel(void)
{
return CONFIG_DEFAULT_CONSOLE_LOGLEVEL;
@@ -34,11 +36,15 @@
{
va_list args;
int i;
+ u32 tstamp;
if (msg_level > console_loglevel()) {
return 0;
}
+ rdtscl(tstamp);
+ vtxprintf(console_tx_byte, (void *)0, "[tsc %d] ", tstamp);
+
va_start(args, fmt);
i = vtxprintf(console_tx_byte, (void *)0, fmt, args);
va_end(args);
>> I'm not sure about this patch. It increases stage0/stage1 size and seems
>> to move northbridge init to a generic arch directory. How northbridge
>> specific is geodelxinit.c? Is it a piece of northbridge code? We could
>> link northbridge/amd/geodelx/geodelxinit.c into stage1 even if it is
>> inside the northbridge dir.
>>
>
> The LX does not have the kind of clean breakdown of components we are
> used to on other systems. I don't think you can say geodelxinit is
> "northbridge specific" or not. I am happy to move it back to the
> northbridge directory and just link it in.
>
Ah yes, the Geode architecture.
> We've got to run this in stage1 IMHO. We can't wait until stage2 phase
> 2 to turn on cache. It's just way too slow.
>
Indeed. Without the file move, the patch is fine. Could you post a new
version?
Thanks,
Carl-Daniel
More information about the coreboot
mailing list