This series enables seabios to run on some Baytrail CPU based
chromebooks. At least some of these machines do not support routing
of legacy interrupts and at least some have SDHCI controllers that do
not appear as regular PCI devices. This series is mainly a hack to
get some minimal support on the hardware.
This series is also available at:
Kevin O'Connor (3):
Add minimal support for machines without hardware interrupts
ps2: Eliminate "etc/ps2-poll-only"; use CONFIG_HARDWARE_IRQ instead
sdcard: Allow sdcard addresses to be specified in CBFS files
docs/Runtime_config.md | 2 +-
src/Kconfig | 13 ++++++++++++-
src/clock.c | 31 +++++++++++++++++++++++++------
src/hw/pic.c | 14 ++++++++++++++
src/hw/pic.h | 4 ++++
src/hw/ps2port.c | 16 ++++++----------
src/hw/sdcard.c | 48 ++++++++++++++++++++++++++++++++++++------------
src/hw/timer.c | 2 ++
src/stacks.c | 5 ++++-
src/util.h | 1 +
10 files changed, 105 insertions(+), 31 deletions(-)
My test environment.
Main Board: AMD Bettong
USB3 device: USB MSC vendor='Seagate' product='FA GoFlex Pro' rev='0210' type=0 removable=0
The device can be detected at Seabios stage only when the board is power up first time.
If I press the reset button, it can not be detected.
I have to unplug, plug the power cable and power up again, the usb3 device can be detected.
Removable USB flash disk doesnt have that problem.
This is a respin of a previous series to extend the sdcard boot menu
description. Instead of showing the product name and card version,
this series shows the product name and card capacity. The card
capacity is more likely to mean something to an end-user than a
manufacturer's card version.
Kevin O'Connor (6):
sdcard: Move sdcard_set_frequency()/sdcard_set_power() in sdcard.c
sdcard: Move frequency setting into sdcard_card_setup()
sdcard: Move drive registration to sdcard_card_setup()
sdcard: Turn card_type into a bitmap and store if card is MMC type
sdcard: Display sdcard product name in boot menu
sdcard: Obtain card capacity and report it on the boot menu
src/hw/sdcard.c | 219 ++++++++++++++++++++++++++++++++++----------------------
1 file changed, 133 insertions(+), 86 deletions(-)
Implementation of the FW CFG DMA interface.
When running a Linux guest on top of QEMU, using the -kernel options, this
is the timing improvement for x86:
QEMU commit 090d0bf and SeaBIOS commit 2fc20dc
QEMU startup time: .078
BIOS startup time: .060
Kernel setup time: .578
Total time: .716
QEMU with this patch series and SeaBIOS with this patch series
QEMU startup time: .080
BIOS startup time: .039
Kernel setup time: .002
Total time: .121
QEMU startup time is the time between the start and the first kvm_entry.
BIOS startup time is the time between the first kvm_entry and the start of
function do_boot, in SeaBIOS.
Kernel setup time is the time between the start of the function do_boot in
SeaBIOS and the jump to the Linux kernel.
As you can see, both the BIOS (because of ACPI tables and other configurations)
and the Linux kernel boot (because of the copy to memory) are greatly
improved with this new interface.
Also, this new interface is an addon to the old interface. Both interfaces
are compatible and interchangeable.
Changes from v1:
- Take into account order of fields in the FWCfgDmaAccess structure
- Check and change endianness of FWCfgDmaAccess fields
- Change order of fields in the FWCfgDmaAccess structure
- Add FW_CFG_DMA_CTL_SKIP feature for control field
- Split FW_CFG_SIZE in QEMU
- Make FW_CFG_ID a bitmap of features
- Add 64 bit address support for the transfer. Trigger when writing the low
address, and address is 0 by default and at the end of each transfer.
- Align ports and addresses.
- Preserve old fw_cfg_comb_valid behaviour in QEMU
- Update documentation to reflect all these changes
I'm working on basic 64 bit support for SeaBIOS. The reason now is
because I want to test booting from an NVDIMM, which is mapped on the
region above 4G:
But this feature will also add support for future memory devices that
may be added. Below 4G region is getting too crowded. Another
possibility is to load Linux directly from 64 bits, instead of 16.
I'm now a bit lost on how to continue on this task. I'm not sure if I'm
in the right way, and I'm not sure if I'm overworking things.
You can see my little progress here:
Does anyone else want to engage in this project?