"Christian Limpach" <Christian.Limpach at xensource.com> writes: >> > That's very reasonable, but at the same time: >> > What we don't want to do is have a lot of variation in our domain >> > builder for loading different operating systems for no particular >> > reason. >> >> Sure. A reasonable concern. Do you have an ELF format >> windows kernel? > > Of course not, but we're also not trying to run Windows fully > paravirtualized. Ok. So the concern here is to keep variation limited not to pick one true standard. >> My point being this is a fundamental point where variation happens. >> No boot-loader has been able to see OS vendors on a single format. >> I don't expect Xen will be able to change this trend. > > We've managed to get NetBSD, FreeBSD, Solaris and recently even Plan9 to > agree on using ELF with our __xen_guest section extension. Well I'm glad that of the unix variants it is possible to get some agreement. I don't know what your arguments passing convention is for __xen_guest so I don't know if you have solved the truly hard problem. However using sections is simply fundamentally broken and against the ELF spec and wrong. Below is the output of readelf -a on a bzImage. Notice no ELF sections. PhysAddr == VirtAddr. Unless some major problems show up I will be merging this later this week. I suspect the big difference is that I am trying to ensure we can build a generic kernel that also runs paravirtualized. Not just a kernel that can only run paravirtualized. Handling the general case always has more constraints. Adding ELF notes should not be in the same range of complexity of adding a generic section. Eric ELF Header: Magic: 7f 45 4c 46 01 01 01 ff eb 3d 00 00 00 00 00 00 Class: ELF32 Data: 2's complement, little endian Version: 1 (current) OS/ABI: Standalone App ABI Version: 235 Type: DYN (Shared object file) Machine: Intel 80386 Version: 0x1 Entry point address: 0x100000 Start of program headers: 80 (bytes into file) Start of section headers: 0 (bytes into file) Flags: 0x0 Size of this header: 52 (bytes) Size of program headers: 32 (bytes) Number of program headers: 2 Size of section headers: 40 (bytes) Number of section headers: 0 Section header string table index: 0 There are no sections in this file. There are no sections in this file. Program Headers: Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align LOAD 0x001600 0xc0100000 0x00100000 0x2013f8 0x45e000 RWE 0x400000 NOTE 0x000090 0x00000000 0x00000000 0x0006c 0x00000 0 There is no dynamic section in this file. There are no relocations in this file. There are no unwind sections in this file. No version information found in this file.