[SeaBIOS] [PATCH v2] boot: Fix boot order for SCSI target, lun > 9

Laszlo Ersek lersek at redhat.com
Thu Aug 14 22:31:54 CEST 2014


On 08/14/14 22:18, Markus Armbruster wrote:
> 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.
> 
> RHBZ: https://bugzilla.redhat.com/show_bug.cgi?id=1096560
> 
> [*] Open Firmware Recommended Practice: SCSI-3 Parallel Interface,
> Version 1, section 3.1 Physical Address Formats and Representations
> http://www.openfirmware.org/1275/practice/spi/spi1_0.ps
> 
> Signed-off-by: Markus Armbruster <armbru at redhat.com>
> ---
> v2:
> - Fix the link to the spec (d'oh)
> - While we're linking, link to RHBZ
> 
>  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);
>  }
>  
> 

Reviewed-by: Laszlo Ersek <lersek at redhat.com>



More information about the SeaBIOS mailing list