summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Brown2013-04-30 15:31:39 +0200
committerMichael Brown2013-04-30 15:56:19 +0200
commitc6375a85be0573c12fc89d55009d2905521d78c4 (patch)
tree3f0d4c61e08ebec8ba57540195eddb1c898694da
parent[realtek] Allow reaction time between writing RTL_CAPR and reading RTL_CR (diff)
downloadipxe-c6375a85be0573c12fc89d55009d2905521d78c4.tar.gz
ipxe-c6375a85be0573c12fc89d55009d2905521d78c4.tar.xz
ipxe-c6375a85be0573c12fc89d55009d2905521d78c4.zip
[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>
-rw-r--r--src/arch/i386/prefix/mromprefix.S11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/arch/i386/prefix/mromprefix.S b/src/arch/i386/prefix/mromprefix.S
index 058663c4..0f0847e5 100644
--- a/src/arch/i386/prefix/mromprefix.S
+++ b/src/arch/i386/prefix/mromprefix.S
@@ -98,6 +98,7 @@ find_mem_bar:
cmpw $PCI_BAR_5, %di
jle 1f
stc
+ movl $0xbabababa, %esi /* Report "No suitable BAR" */
jmp 99f
1: movw $4, %bp
@@ -157,15 +158,17 @@ find_mem_bar:
/* Locate our ROM image */
1: addr32 es cmpw $0xaa55, (%eax)
- stc
- jne 99f
- addr32 es cmpl $_build_id, build_id(%eax)
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
shll $9, %ecx
addl %ecx, %eax
jmp 1b
-2:
+3:
/* Copy payload to buffer, or set buffer address to BAR address */
testl %esi, %esi