|
@@ -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
|