On Jan 16, 2008 5:21 AM, Carl-Daniel Hailfinger c-d.hailfinger.devel.2006@gmx.net wrote:
Basically, to avoid a full walk, you have to avoid requesting a nonexistant file. How? We have two sources of for such requests and they are easy to fix:
- Looking for "normal/initram" when we should have looked for
"fallback/initram". Simply make sure check_normal_boot_flag() returns a value matching the files you stored in the LAR.
- Looking for "stage2" and "payload" segments which are not there. We
can either add a "number of segments" field to the LAR header or we restrict the number of segments to 2.
It seems like you've added two slightly more complicated ways to do things where one simple one would have done: an end-of-entries LAR header. Limiting payload segments to two is going to cause us trouble now and forever, I think. And I'd still like to have a microcode/ directory, and a rom/ directory, each with an undefined # of entries. I think the LAR is going to be used in the future in ways we can not imagine now. So solving those two cases won't help future uses.
So to me, this approach seems to be two special-case solutions to a problem which needs a general solution. And the general problem is this: when searching for an entry, we must know when we are at the last LAR header, so that we do not waste a full second searching all of FLASH for further entries which are not there.
I think we need to try again.
sorry
ron