mirror of https://github.com/ipxe/ipxe.git
[romprefix] Report failure cause when unable to open payload
Report the cause of the failure when we are unable to open the .mrom payload. There are two possible failure cases: - Unable to find a suitable memory BAR to borrow (e.g. if the NIC doesn't have a memory BAR that is at least as large as the expansion ROM BAR, or if the memory BAR has been assigned a 64-bit address which won't fit into the 32-bit expansion ROM BAR). This will be reported as "BABABABA". - Unable to find correct ROM image within the BAR. This will be reported as the address (within the borrowed BAR) at which we first fail to find a valid 55AA signature. Signed-off-by: Michael Brown <mcb30@ipxe.org>pull/13/head
parent
592755eccf
commit
c6375a85be
|
@ -98,6 +98,7 @@ find_mem_bar:
|
||||||
cmpw $PCI_BAR_5, %di
|
cmpw $PCI_BAR_5, %di
|
||||||
jle 1f
|
jle 1f
|
||||||
stc
|
stc
|
||||||
|
movl $0xbabababa, %esi /* Report "No suitable BAR" */
|
||||||
jmp 99f
|
jmp 99f
|
||||||
1: movw $4, %bp
|
1: movw $4, %bp
|
||||||
|
|
||||||
|
@ -157,15 +158,17 @@ find_mem_bar:
|
||||||
|
|
||||||
/* Locate our ROM image */
|
/* Locate our ROM image */
|
||||||
1: addr32 es cmpw $0xaa55, (%eax)
|
1: addr32 es cmpw $0xaa55, (%eax)
|
||||||
stc
|
|
||||||
jne 99f
|
|
||||||
addr32 es cmpl $_build_id, build_id(%eax)
|
|
||||||
je 2f
|
je 2f
|
||||||
|
stc
|
||||||
|
movl %eax, %esi /* Report failure address */
|
||||||
|
jmp 99f
|
||||||
|
2: addr32 es cmpl $_build_id, build_id(%eax)
|
||||||
|
je 3f
|
||||||
addr32 es movzbl 2(%eax), %ecx
|
addr32 es movzbl 2(%eax), %ecx
|
||||||
shll $9, %ecx
|
shll $9, %ecx
|
||||||
addl %ecx, %eax
|
addl %ecx, %eax
|
||||||
jmp 1b
|
jmp 1b
|
||||||
2:
|
3:
|
||||||
|
|
||||||
/* Copy payload to buffer, or set buffer address to BAR address */
|
/* Copy payload to buffer, or set buffer address to BAR address */
|
||||||
testl %esi, %esi
|
testl %esi, %esi
|
||||||
|
|
Loading…
Reference in New Issue