]> git.ipfire.org Git - thirdparty/ipxe.git/commitdiff
[romprefix] Do not fall back to hooking INT19 by default
authorMichael Brown <mcb30@ipxe.org>
Tue, 17 May 2011 14:35:23 +0000 (15:35 +0100)
committerMichael Brown <mcb30@ipxe.org>
Tue, 17 May 2011 14:35:23 +0000 (15:35 +0100)
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 <mcb30@ipxe.org>
src/arch/i386/prefix/romprefix.S
src/config/general.h

index dd602ddb7108fb6afa0805a312208dd830437bd1..421aa02789139d2baaea623c0b5d66d2079a98c7 100644 (file)
@@ -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 */
index 9eb88651412716f1eae285e33bbe910fd7a445d1..7ae1f75b196bf13128b766d2d035a5524fe04f6f 100644 (file)
@@ -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
  *