소스 검색

[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 <mcb30@ipxe.org>
tags/v1.20.1
Michael Brown 14 년 전
부모
커밋
fcd55f7500
2개의 변경된 파일8개의 추가작업 그리고 0개의 파일을 삭제
  1. 2
    0
      src/arch/i386/prefix/romprefix.S
  2. 6
    0
      src/config/general.h

+ 2
- 0
src/arch/i386/prefix/romprefix.S 파일 보기

286
 	call	print_message
286
 	call	print_message
287
 	jmp	pnp_done
287
 	jmp	pnp_done
288
 no_pnp:	/* Not PnP-compliant - hook INT 19 */
288
 no_pnp:	/* Not PnP-compliant - hook INT 19 */
289
+#ifdef NONPNP_HOOK_INT19
289
 	movw	$init_message_int19, %si
290
 	movw	$init_message_int19, %si
290
 	xorw	%di, %di
291
 	xorw	%di, %di
291
 	call	print_message
292
 	call	print_message
296
 	pushw	%gs /* %gs contains runtime %cs */
297
 	pushw	%gs /* %gs contains runtime %cs */
297
 	pushw	$int19_entry
298
 	pushw	$int19_entry
298
 	popl	%es:( 0x19 * 4 )
299
 	popl	%es:( 0x19 * 4 )
300
+#endif /* NONPNP_HOOK_INT19 */
299
 pnp_done:
301
 pnp_done:
300
 
302
 
301
 	/* Check for PMM */
303
 	/* Check for PMM */

+ 6
- 0
src/config/general.h 파일 보기

127
 #undef	PXE_CMD			/* PXE commands */
127
 #undef	PXE_CMD			/* PXE commands */
128
 #undef	REBOOT_CMD		/* Reboot command */
128
 #undef	REBOOT_CMD		/* Reboot command */
129
 
129
 
130
+/*
131
+ * ROM-specific options
132
+ *
133
+ */
134
+#undef	NONPNP_HOOK_INT19	/* Hook INT19 on non-PnP BIOSes */
135
+
130
 /*
136
 /*
131
  * Error message tables to include
137
  * Error message tables to include
132
  *
138
  *

Loading…
취소
저장