From fcd55f750011e83709681476e8958fb4c9a2298d Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Tue, 17 May 2011 15:35:23 +0100 Subject: [PATCH] [romprefix] Do not fall back to hooking INT19 by default Several BIOSes (including most IBM BIOSes and many virtual machine BIOSes) do not provide detectable PnP support, but will use the BEV entry point for a PnP option ROM. On these semi-PnP BIOSes, iPXE will respond to the absence of detectable PnP support by hooking INT19, which disrupts the boot order. BIOSes that genuinely require hooking INT19 seem to be very rare nowadays. It may therefore be preferable to assume that the absence of detectable PnP support indicates a semi-PnP BIOS rather than a non-PnP BIOS. Change the default behaviour so that INT19 will never be hooked unless the compile-time option NONPNP_HOOK_INT19 is enabled. Leave the redundant PnP detection routine in-place to allow for debugging via the ROM banner line. Signed-off-by: Michael Brown --- src/arch/i386/prefix/romprefix.S | 2 ++ src/config/general.h | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/src/arch/i386/prefix/romprefix.S b/src/arch/i386/prefix/romprefix.S index dd602ddb..421aa027 100644 --- a/src/arch/i386/prefix/romprefix.S +++ b/src/arch/i386/prefix/romprefix.S @@ -286,6 +286,7 @@ pnp_scan: call print_message jmp pnp_done no_pnp: /* Not PnP-compliant - hook INT 19 */ +#ifdef NONPNP_HOOK_INT19 movw $init_message_int19, %si xorw %di, %di call print_message @@ -296,6 +297,7 @@ no_pnp: /* Not PnP-compliant - hook INT 19 */ pushw %gs /* %gs contains runtime %cs */ pushw $int19_entry popl %es:( 0x19 * 4 ) +#endif /* NONPNP_HOOK_INT19 */ pnp_done: /* Check for PMM */ diff --git a/src/config/general.h b/src/config/general.h index 9eb88651..7ae1f75b 100644 --- a/src/config/general.h +++ b/src/config/general.h @@ -127,6 +127,12 @@ FILE_LICENCE ( GPL2_OR_LATER ); #undef PXE_CMD /* PXE commands */ #undef REBOOT_CMD /* Reboot command */ +/* + * ROM-specific options + * + */ +#undef NONPNP_HOOK_INT19 /* Hook INT19 on non-PnP BIOSes */ + /* * Error message tables to include *