====== Daniel Verkamp: COMBOOT Support ====== ===== Journal ===== ==== Week 4 ==== ---- === 16 June 2008 === * Implemented "Call PXE Stack" (INT 22h AX=0009h) [[ http://git.etherboot.org/?p=people/dverkamp/gpxe.git;a=commitdiff;h=e55e13db55ad26d9f62e72ff3bc2a77006d74b40 | e55e13db55ad26d9f62e72ff3bc2a77006d74b40 ]] (untested!) * Implemented "Write Character to Serial Port" (INT 21h AH=04h) using stefanha's serial changes [[ http://git.etherboot.org/?p=people/dverkamp/gpxe.git;a=commitdiff;h=dac1de178042d2ffdacb772d265033cfc24c2441 | dac1de178042d2ffdacb772d265033cfc24c2441 ]] (untested!) * Implemented "Cleanup, shuffle and boot" (INT 22h AX=0012h) and related function "Maximum number of shuffle descriptors" (AX=0011h) [[ http://git.etherboot.org/?p=people/dverkamp/gpxe.git;a=commitdiff;h=9a4e36722ceaf02d8360c37401af4c1716ab2334 | 9a4e36722ceaf02d8360c37401af4c1716ab2334 ]] (untested!) === 18 June 2008 === * Discussed automated testing with mdc and stefanha; took a look at Expect; also qemu -nographic/-serial redirection and gPXE's CONSOLE_SERIAL for acquiring test output === 19 June 2008 === * Worked on test suite for COMBOOT (unfinished; 16-bit COMBOOT program that calls API functions and checks return values, CF, etc.; eventually will be integrated with qemu for automated testing) * Wrote a simple shuffle and boot testcase (which turned out to be incorrect, but worked anyway for some reason in bochs!?) - still work to do here; I think the implementation in gPXE is correct, but I need a correct testcase first to be sure. * Talked to hpa a bit about shuffle and boot - maybe it will not be possible to implement it correctly in gPXE (at least without some more complicated tricks, relocating the shuffle and boot code to below 0x7C00 before running it, or else the code might get overwritten by one of the copies..) === 20 June 2008 === * Met with mcb30 and mdc; decided shuffle and boot will be okay, since gPXE removes the memory regions it uses from the memory map, effectively hiding itself. * Fixed shuffle and boot testcase [[ http://git.etherboot.org/?p=people/dverkamp/gpxe.git;a=commitdiff;h=1d7e6b8cc3ec0b940c6fec2df61fb7969ec7e0af | 1d7e6b8cc3ec0b940c6fec2df61fb7969ec7e0af ]] - now it works in qemu * Got menu.c32 to show an actual menu from a SYSLINUX example configuration file after hacking the API that returns the configuration filename to just return a constant; menu.c32 apparently uses the newer "Run kernel" function that I haven't implemented yet, so that will be the next step. * In the course of testing on real hardware, noticed that gtest.gpxe (tomsrtbt) no longer booted on a couple of my machines (both with tulip-based cards), so I tried git-bisect to determine what broke it. In the end it pointed at the latest commit, arbitrary script line lengths, but I think I did something wrong (or the build system did), as the first try on that checkout actually worked. When I did make clean and built again, it failed consistently, and after checking out the previous head, that worked consistently, so I'm pretty sure this is the culprit, but I did not determine what is wrong. * Got sidetracked into a bit of driver cleanup :) - reorganized and updated the PCI ID list of the [[ http://git.etherboot.org/?p=people/dverkamp/gpxe.git;a=shortlog;h=tulip | tulip driver ]], along with some whitespace/indentation cleanup first, as it was inconsistent. After the cleanup (removing unused fields, getting rid of some strings that aren't really necessary (although maybe nice for debugging)), the driver is a little smaller - originally 14533 bytes and now 9022 bytes, according to 'size'. Maybe I will update this driver to the new API if I get some time...