On Wed, Dec 24, 2008 at 12:13 AM, Corey Osgood <corey.osgood@gmail.com> wrote:
On Tue, Dec 23, 2008 at 11:59 PM, ron minnich <rminnich@gmail.com> wrote:
On Tue, Dec 23, 2008 at 8:40 PM, Corey Osgood <corey.osgood@gmail.com> wrote:
> John Kollasch just pointed out to me that it looks like the reason the cn700
> is booting so slowly (>15min) could be that it's running out of flash. I've
> also noticed this:
>
> LAR: Attempting to open 'normal/stage2/segment0'.
> LAR: Start 0xfff00000 len 0x100000
> LAR: seen member normal/option_table@0xfff00000, size 932
> LAR: seen member normal/initram/segment0@0xfff00400, size 6216
> LAR: seen member normal/stage2/segment0@0xfff01ca0, size 1
>
> With a 1MB flash part, so 0xfff00000 is the ROM. Is this how it's supposed
> to work, and if not, how do we fix it?
>

I think the problem is you are not caching flash or anything else for
that matter.

What should I be doing where? I can enable, disable, or make the shadow ram dance like a monkey (yeah, Via hardware's got some odd features), but it makes no real difference in the boot speed.

Sorry if this came off as rude, it was supposed to be a joke. I'm still confused on caching though, where/how it should be done, I'm trying to find how it's done on geode and coming up empty handed.



I wonder if moving mtrr out of stage0 was the right move?

The only other option AFAIK is to go back to ROMCC, CAR uses those MTRRs and enabling them breaks CAR.
 

initram has to run from flash. It is execute in place. Stage2 is
copied to dram.

Is the whole flash copied to dram once, or are the segments copied as their needed? LAR is saying it's opening the segments directly from flash (0xfff00000).

Nevermind that question, I just (finally) found the code that handles that, and that is how it works, the segment is loaded from the ROM right before it's run. Is there any advantage/disadvantage to doing it that way instead of copying the whole LARball once and walking on RAM?

Thanks,
Corey