[SeaBIOS] [PATCH] boot: Fix boot order for SCSI target, lun > 9
Markus Armbruster
armbru at redhat.com
Thu Aug 14 20:54:28 CEST 2014
We identify devices by their Open Firmware device paths. The path
component for the logical unit on a bus is incorrect:
bootprio_find_pci_device() formats target (a.k.a. SCSI ID) and lun in
decimal, while QEMU uses hexadecimal. Bootorder list entries with
target, lun > 9 aren't found (lucky case), or attributed to the wrong
logical unit (unlucky case).
The relevant spec[*] agrees with QEMU (and OVMF, for that matter).
Change %d to %x.
[*] Open Firmware Recommended Practice: SCSI-3 Parallel Interface,
Version 1, section 3.1 Physical Address Formats and Representations
http://www.openfirmware.org/1275/bindings/usb/usb-1_0.ps
Signed-off-by: Markus Armbruster <armbru at redhat.com>
---
src/boot.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/boot.c b/src/boot.c
index 5837ad0..6e41ccf 100644
--- a/src/boot.c
+++ b/src/boot.c
@@ -145,7 +145,7 @@ int bootprio_find_scsi_device(struct pci_device *pci, int target, int lun)
// Find scsi drive - for example: /pci at i0cf8/scsi at 5/channel at 0/disk at 1,0
char desc[256], *p;
p = build_pci_path(desc, sizeof(desc), "*", pci);
- snprintf(p, desc+sizeof(desc)-p, "/*@0/*@%d,%d", target, lun);
+ snprintf(p, desc+sizeof(desc)-p, "/*@0/*@%x,%x", target, lun);
return find_prio(desc);
}
--
1.9.3
More information about the SeaBIOS
mailing list