mirror of
				https://github.com/xcat2/xNBA.git
				synced 2025-10-31 11:22:29 +00:00 
			
		
		
		
	[romprefix] Display only one "Ctrl-B" prompt per PCI device during POST
If a multifunction PCI device exposes an iPXE ROM via each function, then each function will display a "Press Ctrl-B to configure iPXE" prompt, and delay for two seconds. Since a single instance of iPXE can drive all functions on the multifunction device, this simply adds unnecessary delay to the boot process. Fix by inhibiting the "Press Ctrl-B" prompt for all except the first function on a PCI device. Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
		| @@ -23,6 +23,7 @@ FILE_LICENCE ( GPL2_OR_LATER ) | ||||
| 	( PMM_HANDLE_BASE | 0x00001000 ) | ||||
| #define PMM_HANDLE_BASE_DECOMPRESS_TO \ | ||||
| 	( PMM_HANDLE_BASE | 0x00002000 ) | ||||
| #define PCI_FUNC_MASK 0x07 | ||||
|  | ||||
| /* ROM banner timeout.  Based on the configurable BANNER_TIMEOUT in | ||||
|  * config.h, but converted to a number of (18Hz) timer ticks, and | ||||
| @@ -422,6 +423,9 @@ no_pmm: | ||||
| 	xorw	%di, %di | ||||
| 	cs rep	movsb | ||||
|  | ||||
| 	/* Skip prompt if this is not the first PCI function */ | ||||
| 	testb	$PCI_FUNC_MASK, init_pci_busdevfn | ||||
| 	jnz	no_shell | ||||
| 	/* Prompt for POST-time shell */ | ||||
| 	movw	$init_message_prompt, %si | ||||
| 	xorw	%di, %di | ||||
| @@ -440,7 +444,7 @@ no_pmm: | ||||
| 	movw	$init_message_done, %si | ||||
| 	call	print_message | ||||
| 	popf | ||||
| 	jnz	2f | ||||
| 	jnz	no_shell | ||||
| 	/* Ctrl-B was pressed: invoke iPXE.  The keypress will be | ||||
| 	 * picked up by the initial shell prompt, and we will drop | ||||
| 	 * into a shell. | ||||
| @@ -448,7 +452,11 @@ no_pmm: | ||||
| 	xorl	%ebp, %ebp	/* Inhibit use of INT 15,e820 and INT 15,e801 */ | ||||
| 	pushw	%cs | ||||
| 	call	exec | ||||
| 2: | ||||
| no_shell: | ||||
| 	movb	$( '\n' ), %al | ||||
| 	xorw	%di, %di | ||||
| 	call	print_character | ||||
|  | ||||
| 	/* Restore registers */ | ||||
| 	popw	%gs | ||||
| 	popw	%fs | ||||
| @@ -595,7 +603,7 @@ init_message_done: | ||||
|  * | ||||
|  */ | ||||
| init_pci_busdevfn: | ||||
| 	.word	0xffff | ||||
| 	.word	0 | ||||
| 	.size	init_pci_busdevfn, . - init_pci_busdevfn | ||||
|  | ||||
| /* Image source area | ||||
|   | ||||
		Reference in New Issue
	
	Block a user