> I’m working on the UNDI driver of the GRUB diskless patch. The driver > (from etherboot-5.3.5)
why not 5.3.6? > now works fine before I do any I/O operations. > That is, the diskless GRUB can do DHCP proper, but dies on > downloading kernel. It even dies on loading kernel from local disk > (the disk gets busy and GRUB doesn't respond any more). Two points > are suspicious: 1. UNDI is resident in the high end of the lower > memory and > modifies the BIOS FBMS (at 40:13h) to avoid being crashed by the OS > (i.e. GRUB) to load. After loaded, the Etherboot UNDI driver will > release some unused UNDI data, allocate new space to install UNDI API > and modify the FBMS to the new value. ---- I don't know where the > GRUB always examines FBMS before it tries to write on the high end of > the lower memory. If not, GRUB may have crashed the UNDI data before > it call the driver again :( > 2. UNDI uses interrupt, so the UNDI driver set a > 'trivial_irq_handler' after it is initialized. That seems to work > fine at start, but I don't know whether it conflicts with grub I/O > mechanic after grub get control. (The driver uses only one irq > specified by UNDI ROM, but do not uninstall it until it is disabled) Michal Brown, the author of the etherboot undi driver, mentioned the following: > Incidentally, Etherboot C code assumes that interrupts are disabled at all > times and only get re-enabled when a real-mode call is made. If this > assumption isn't valid inside grub, then all sorts of interesting things > could happen if an interrupt occurs between the two lines > > irq_vector->segment = handler->segment; > irq_vector->offset = handler->offset; > >in install_irq_handler(). HTH -- Tobias Wollgam Softwaredevelopment Competence Center System Management Business Unit Information _________________________________________________ MATERNA GmbH Information & Communications Vosskuhle 37 * 44141 Dortmund http://www.materna.de _______________________________________________ Bug-grub mailing list [EMAIL PROTECTED] http://mail.gnu.org/mailman/listinfo/bug-grub
