|  | @@ -23,6 +23,7 @@ FILE_LICENCE ( GPL2_OR_LATER )
 | 
		
	
		
			
			| 23 | 23 |  	( PMM_HANDLE_BASE | 0x00001000 )
 | 
		
	
		
			
			| 24 | 24 |  #define PMM_HANDLE_BASE_DECOMPRESS_TO \
 | 
		
	
		
			
			| 25 | 25 |  	( PMM_HANDLE_BASE | 0x00002000 )
 | 
		
	
		
			
			|  | 26 | +#define PCI_FUNC_MASK 0x07
 | 
		
	
		
			
			| 26 | 27 |  
 | 
		
	
		
			
			| 27 | 28 |  /* ROM banner timeout.  Based on the configurable BANNER_TIMEOUT in
 | 
		
	
		
			
			| 28 | 29 |   * config.h, but converted to a number of (18Hz) timer ticks, and
 | 
		
	
	
		
			
			|  | @@ -422,6 +423,9 @@ no_pmm:
 | 
		
	
		
			
			| 422 | 423 |  	xorw	%di, %di
 | 
		
	
		
			
			| 423 | 424 |  	cs rep	movsb
 | 
		
	
		
			
			| 424 | 425 |  
 | 
		
	
		
			
			|  | 426 | +	/* Skip prompt if this is not the first PCI function */
 | 
		
	
		
			
			|  | 427 | +	testb	$PCI_FUNC_MASK, init_pci_busdevfn
 | 
		
	
		
			
			|  | 428 | +	jnz	no_shell
 | 
		
	
		
			
			| 425 | 429 |  	/* Prompt for POST-time shell */
 | 
		
	
		
			
			| 426 | 430 |  	movw	$init_message_prompt, %si
 | 
		
	
		
			
			| 427 | 431 |  	xorw	%di, %di
 | 
		
	
	
		
			
			|  | @@ -440,7 +444,7 @@ no_pmm:
 | 
		
	
		
			
			| 440 | 444 |  	movw	$init_message_done, %si
 | 
		
	
		
			
			| 441 | 445 |  	call	print_message
 | 
		
	
		
			
			| 442 | 446 |  	popf
 | 
		
	
		
			
			| 443 |  | -	jnz	2f
 | 
		
	
		
			
			|  | 447 | +	jnz	no_shell
 | 
		
	
		
			
			| 444 | 448 |  	/* Ctrl-B was pressed: invoke iPXE.  The keypress will be
 | 
		
	
		
			
			| 445 | 449 |  	 * picked up by the initial shell prompt, and we will drop
 | 
		
	
		
			
			| 446 | 450 |  	 * into a shell.
 | 
		
	
	
		
			
			|  | @@ -448,7 +452,11 @@ no_pmm:
 | 
		
	
		
			
			| 448 | 452 |  	xorl	%ebp, %ebp	/* Inhibit use of INT 15,e820 and INT 15,e801 */
 | 
		
	
		
			
			| 449 | 453 |  	pushw	%cs
 | 
		
	
		
			
			| 450 | 454 |  	call	exec
 | 
		
	
		
			
			| 451 |  | -2:
 | 
		
	
		
			
			|  | 455 | +no_shell:
 | 
		
	
		
			
			|  | 456 | +	movb	$( '\n' ), %al
 | 
		
	
		
			
			|  | 457 | +	xorw	%di, %di
 | 
		
	
		
			
			|  | 458 | +	call	print_character
 | 
		
	
		
			
			|  | 459 | +
 | 
		
	
		
			
			| 452 | 460 |  	/* Restore registers */
 | 
		
	
		
			
			| 453 | 461 |  	popw	%gs
 | 
		
	
		
			
			| 454 | 462 |  	popw	%fs
 | 
		
	
	
		
			
			|  | @@ -595,7 +603,7 @@ init_message_done:
 | 
		
	
		
			
			| 595 | 603 |   *
 | 
		
	
		
			
			| 596 | 604 |   */
 | 
		
	
		
			
			| 597 | 605 |  init_pci_busdevfn:
 | 
		
	
		
			
			| 598 |  | -	.word	0xffff
 | 
		
	
		
			
			|  | 606 | +	.word	0
 | 
		
	
		
			
			| 599 | 607 |  	.size	init_pci_busdevfn, . - init_pci_busdevfn
 | 
		
	
		
			
			| 600 | 608 |  
 | 
		
	
		
			
			| 601 | 609 |  /* Image source area
 |