This is an old revision of the document!
====== Stefan Hajnoczi: GDB Remote Debugging ====== ===== Week 10 ===== **Milestones:** * [b44] Tested and clean for mainline review. * [virtio] Port of etherboot virtio-net driver. ==== Wed 30 Jul ==== Commits: * [[http://git.etherboot.org/?p=people/stefanha/gpxe.git;a=commit;h=170c17754c64ed46e98966de858028911935cbe4|[virtio] Add Etherboot legacy driver]] * [[http://git.etherboot.org/?p=people/stefanha/gpxe.git;a=commit;h=1dde791f9ced510e7b317d7b129f34e39e23d0ef|[virtio] Use ETH_FRAME_LEN instead of ETH_MAX_MTU]] **Laurent Vivier sent a virtio-net driver for Etherboot**. [[http://lwn.net/Articles/239238/|Virtio]] is an API for virtualized device I/O. The Linux kernel only needs one virtio network driver, for example, and various virtualization projects like KVM, Xen, and lguest can make use of that paravirtualized driver. Without virtio, each virtualization solution would end up implementing their own guest drivers. Since the development effort is focused on gPXE rather than Etherboot, we are making virtio-net available in gPXE as well as Etherboot. I wrapped Laurent's driver using gPXE's legacy driver support and just **HTTP booted over the virtio-net driver from gPXE** for the first time: <code> $ kvm -bootp http://etherboot.org/gtest/gtest.gpxe -no-kvm -net user -net nic,model=virtio bin/virtio-net.usb </code> **Note gPXE hangs under KVM-70**, at least Debian's ''kvm-70+dfsg-1'' package. For some reason it enters an infinite loop (or is so slow I have not waited for it to finish) in ''arch/i386/prefix/unnrv2b.S'' ''decompress16''. The same command-line runs fine when "kvm" is replaced by "qemu" and the CPU registers are identical between KVM and QEMU before calling the function. I have not investigated further since gPXE loads successfully under KVM-72. Next steps: * [e820] Try inverting the hidden regions list to an "allowed" regions list. Do e820 mangling as the intersection between e820 regions and the "allowed" regions. * [virtio] Do we need a native gPXE virtio driver? * [GDB] Add sample GDB session to wiki and explain commands * [DMA] DMA pool API so drivers can reserve DMA buffers on ''open()''. * [b44] Cleanup, testing, performance. * [shutdown] Remove gPXE allocated memory and free up PXE+UNDI, if necessary. * [bzImage] Expand the heap size to the full 64K segment when loading a bzImage kernel with version 2.02 or higher. * [GDB] Real-mode remote debugging.