* Brendan Trotter btrotter@gmail.com [070612 06:23]:
Hi,
I'm wondering if there's a specification describing the state of the computer at the hand-off between LinuxBIOS and a payload.
So far I've got LinxBIOS booting a dummy "for(;;)" payload in Bochs, and I've found out there's a "LinuxBIOS Table" and that it can be found by searching for "LBIO" in the first 4 KB of RAM and in the area between 0xF000 and 0xFFFFF. I don't know if there's a checksum or any other validation, and have been unable to find anything describing what this table contains.
check LinuxBIOSv2/util/lbtdump
I assume there may also be ACPI, MP specification, PIRQ routing and/or (possibly) SMI/DMI tables, and I'm guessing that (if present) these tables can be searched for using the same methods as described in their corresponding specifications.
They're not used by payloads (except the Linux kernel)
- will an 80x86 system always be in 32-bit protected mode for 32-bit
ELF payloads, and is long mode possible for ELF64 payloads (and if so, how is paging setup)?
long mode is not yet possible. If you know how to do it and have time, we'd appreciate any patches though!
- are any parameters passed on the stack to the payload's entry function?
no
- are AP CPUs started (or waiting for a SIPI sequence)?
yes, hardware is completely up when linuxbios is done.
- can the payload assume anything about the state of the PIC, I/O
APIC/s and local APIC/s, PIT, RTC, ISA DMA controllers, serial ports, etc?
yes. they're initialized.
- what state are PCI buses and devices left in (would a payload need
to do full PCI bus enumeration, or..)?
They have their resources.
What do you mean by full pci bus enumeration? What would be the opposite?
- is there anything in the LinuxBIOS table that could be used to
determine if the computer is "headless" and which serial port or other device to use if it is?
Not at the moment. But in General this is easy. If no VGA class PCI device is there, the machine is 99.99% headless.
- can anything be assumed about AGP and the first video card (if the
computer isn't headless)?
What would you like to assume?
- is there any form of "LinuxBIOS API" that can be used by the payload
for generic low level disk access (floppy/ATA/ATAPI/SCSI)?
No. No Callbacks. That's our intended design.
We don't have functions to access floppy or SCSI in LinuxBIOS anyways (and in v3 we also dropped ATA)