Re: [Etherboot-developers] [COMMIT] 5.1.2+ boot from disk.
Brought to you by:
marty_connor,
stefanhajnoczi
|
From: Eric W B. <ebi...@ln...> - 2002-08-29 18:20:04
|
Michael Brown <mb...@fe...> writes: > On Fri, 30 Aug 2002, Ken Yap wrote: > > >Of course, "fixed it" in this context merely means "getting the correct > > >E820 map". It still locks up at "Loading 10.1.0.1:boot-8139too.nbi > > >...(NBI)" and requires a hard reset. :-( > > >Next set of ideas? > > I wager that this is now a relocation problem in the 8139 driver. Are you > > building with or without relocation? Have you got an I/O only NIC like > > the 3c509 or NE2000 you can try the latest fixes on first? > > OK, have overcome another layer of the problem. The prep_segment loop in > tagged_probe() in osloader.c was never exiting; the exit condition was > incorrect. It was testing for sh->flags & 0x04 (last segment flag), which > is not always present. Very strange looking at the code from 5.0.6 the same test is performed is performed as an exit condition. We never attempt to execute the image if that case isn't found. > Additionally, it would have skipped the last segment itself. That sounds like a bug I introduced, though at worst that should simply forget to zero the bss. > I have changed the code to check for sh->length == 0 and > sh->flags & 0x04 as exit conditions. This gets me past that hurdle, but I > don't know if it is a correct solution. I think I would look into why sh->flags &0x04 is not present. I find that very suspcious, as the image is not bootable if that is the case. Exiting the loop when sh->length == 0 sounds like good defensive programming. I wonder if tctx.linlocation is overlapping etherboot in the non-relocated case? That is one address I forget to check to see if it is safe to load. Want to take a look at that? Eric |