This series adds a shortcut for network boot, similar to what is present
on bare-metal machines. F11 will prioritize BCV/BEV entries for network
devices over all the other items of the boot list.
After testing with a more recent QEMU I found that it deploys a BCV ROM
that breaks network boot. So this series has two extra patches that
track the PCI class for boot entries; this is then used to filter boot
entries for network boot. A better choice of priorities for BCV and
BEV is also implemented (patch 3).
After Peter Stuge's prod, I reorganized interactive_bootmenu to use a
switch statement, and split the reindentation away in a separate patch.
Paolo
Paolo Bonzini (6):
boot: change definition of IPL_TYPE_* constants
boot: track the PCI class of BCV/BEV boot entries
boot: bump priority of storage-device option ROMs
boot: reorganize interactive_bootmenu
boot: wait for key release before continuing boot
boot: add F11 shortcut for network boot
src/boot.c | 134 ++++++++++++++++++++++++++++++++++++-------------------
src/boot.h | 4 +-
src/optionroms.c | 8 ++--
3 file modificati, 94 inserzioni(+), 52 rimozioni(-)
--
1.7.12.1
The Pheonix EDD v3.0 spec says that if no dpte is present,
the dpte pointer should contain ffffh:ffffh, not the 0h:0h
which is currently used. This bit me when using NetWare as
a KVM guest.
Signed-off-by: Bruce Rogers <brogers(a)suse.com>
---
src/disk.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/src/disk.c b/src/disk.c
index 8e1d3ec..0291fe3 100644
--- a/src/disk.c
+++ b/src/disk.c
@@ -615,7 +615,7 @@ disk_1348(struct bregs *regs, struct drive_s *drive_g)
u8 sum = checksum_far(SEG_LOW, &DefaultDPTE, 15);
SET_LOW(DefaultDPTE.checksum, -sum);
} else {
- SET_FARVAR(seg, param_far->dpte.segoff, 0);
+ SET_FARVAR(seg, param_far->dpte.segoff, 0xffffffff);
bdf = GET_GLOBAL(drive_g->cntl_id);
}
--
1.7.7
Back in July I was working on a problem that involved determining if a drive was bootable (see emails from circa 13 July 2012, "Bootorder Failover (Patch)"). I now have a few extra cycles and I'd like to try to do this the right way. What I'm trying to do is add the "drive_is_bootable()" call to the various boot_add_xxx methods, similar to the following in boot.c:
void
boot_add_hd(struct drive_s *drive_g, const char *desc, int prio)
{
if (!CONFIG_CHECK_BOOTABLE || drive_is_bootable(drive_g)) // <<<<< new code
bootentry_add(IPL_TYPE_HARDDISK, defPrio(prio, DefaultHDPrio)
, (u32)drive_g, desc);
}
The drive_is_bootable() function would read the MBR from the drive, check a few things to ensure that the drive is bootable, and return 0 (fail) or non-zero (success). Per the email thread referenced above, I've got my own copy of process_op() from which I've removed the ASSERT16(). Unfortunately, there are ASSERT16()'s deeper in the call tree -- specifically in the code used by process_floppy_op(), process_ata_op(), and process_cdemu_op().
I think the proper approach would be to put the processor in 16-bit mode and use the original process_op() function (returning to 32-bit mode afterward), but I'm not sure how to do that here. Can anyone offer some guidance here?
Thanks,
-- Steve G.
On Fri, Oct 19, 2012 at 04:41:02PM -0400, Jason Baron wrote:
> From: Isaku Yamahata <yamahata(a)valinux.co.jp>
>
> add dsdt for q35 chipset of qemu.
Thanks.
It looks like the q35 DSDT code was forked from SeaBIOS some time
back. In the last year or so several improvements were made to the
SeaBIOS DSDT code to separate out devices into distinct sections and
to reduce the amount of macro duplication of dsdt code. It would be a
shame to lose these improvements, at least for q35.
Looking at the final q35 dsdt code (patches 6-8), the only thing that
stands out to me as being notably different from the current code is
irq handling. I do wonder if there is an alternative to mass
replacing the dsdt code for a different irq scheme.
-Kevin
On Fri, Oct 19, 2012 at 04:40:59PM -0400, Jason Baron wrote:
> From: Isaku Yamahata <yamahata(a)valinux.co.jp>
>
> add mcfg table.
> mcfg isn't populated at the moment. dev-q35 will use it later.
>
> [jbaron(a)redhat.com: moved header from post.h -> acpi.h]
Thanks Jason. Sorry for the delay in review.
I find the code flow of this patch to be confusing. The code jumps
from build_mcfg to mch_mcfg_init and mch_mcfg_find (patch 5) setting
intermidiate variables (acpi_mcfg) which are then acted on by all of
build_mcfg and mch_mcfg_*. I think it would be simpler if the code
just detected PCI_DEVICE_ID_INTEL_Q35_MCH and called a function which
did all the work necessary to setup the mcfg acpi table for the q35.
-Kevin