Vasil Vasilev <vas...@sy...> writes:
> Great. I knew about the problem, but couldn't find the way to fix, PXE spec
> being a bit patchy.
>
> On Wed, 11 Dec 2002, Matthew Stapleton wrote:
>
> > Hi all,
> > I just fixed the problem where trying to boot dos by chaining from PXE to
> > EtherBoot to dos crashes the system in EtherBoot 5.0.8. Also, on my system
> > once PXE had loaded EtherBoot, going to local boot to load dos would crash
> > during dos loading as well.
> >
> > In version 2.1 of the PXE Specification, in the UNDI_STARTUP service
> > description, it says that 'PXENV_UNDI_STARTUP and PXENV_UNDI_SHUTDOWN are no
> > longer responsible for chaining interrupt 1Ah. This must be done by the
> > PXENV_START_UNDI and PXENV_STOP_UNDI calls.' Since loader.S only uses
> > PXENV_UNDI_SHUTDOWN and PXENV_UNLOAD_STACK, the interrupt doesn't get
> > unhooked. If dos or EtherBoot or any other images load over the PXE
> > interrupt handler, then when int 1Ah gets called, the system will crash.
>
> Yes, this is indeed the problem. Well spotted in the PXE spec as well. The
> first implementation wasn't releasing part of the UNDI memory of PXE to get
> round this, but then DOS apps were running out of memory.
>
> > The way I fixed this was to add a call to PXENV_STOP_UNDI. Other ways to
>
> This sounds the right way.
>
> > fix this would be to relocate EtherBoot code to other areas or not release
> > the PXE memory to the system.
>
> Could do, but see above. Still if any part of PXE refuses to unload, the
> memory shouldn't be released...
With respect to relocating etherboot it should work much more easily on
the development branch.
> > How should I submit the changes to the code or has this problem already been
> > fixed?
> >
> > I also rewrote the hex to ascii routines that display the amount of free
> > memory in the PXE loader. The current routines don't seem to work properly.
>
> The idea here was debugging, but the pretier the better as long it doesn't
> much memory and fits within the memory model.
>
> > I tested this fix with EtherBoot 5.0.7 and EtherBoot 5.0.8.
> > The network card used is an Intel EtherExpress PRO/100+ Management Adapter
> > using the eepro100 driver.
> > The versions of dos tested were Windows 98 SE MS-DOS and FreeDOS Kernel
> > 2.0.27.
> > Both doses crashed before the fix. Now they work!!! :)
>
> Great. If you like reading the PXE spec, maybe you can do Etherboot on top of
> PXE's UNDI without using an Etherboot's native network driver :). This, of
> course, is an option in addition to using the native driver.
We should certainly verify the code still works on the development branch.
There have been a number of changes in how all of the pieces fit together.
It should not be to hard, but it does take a little bit of work.
Eric
|