[SLOF] [PATCH] board-qemu/slof/vio-vscsi: Scan up to 64 SCSI IDs
Laurent Vivier
lvivier at redhat.com
Thu Dec 6 22:07:46 AEDT 2018
On 06/12/2018 12:02, Thomas Huth wrote:
> QEMU supports up the 64 SCSI IDs on the vscsi "bus", see the string
> "max_target = 63" in the source file hw/scsi/spapr_vscsi.c of QEMU.
> However, SLOF currently only checks the first 9 IDs on the vscsi adaptor,
> so when you try to boot from a CD-ROM like this, the boot fails:
>
> qemu-system-ppc64 ... -device spapr-vscsi,id=scsi0,reg=0x2000 \
> -drive file=/path/to/cdrom.iso,format=raw,if=none,id=dr1,readonly=on \
> -device scsi-cd,bus=scsi0.0,channel=0,scsi-id=63,lun=1,drive=dr1,id=scd1
>
> Thus let's change the amount of IDs that we scan in SLOF to 64, too, to
> match the ID range that QEMU provides.
>
> Signed-off-by: Thomas Huth <thuth at redhat.com>
> ---
> board-qemu/slof/vio-vscsi.fs | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/board-qemu/slof/vio-vscsi.fs b/board-qemu/slof/vio-vscsi.fs
> index f2d4c6f..be11b69 100644
> --- a/board-qemu/slof/vio-vscsi.fs
> +++ b/board-qemu/slof/vio-vscsi.fs
> @@ -507,9 +507,9 @@ TRUE VALUE first-time-init?
> 10000 \ Larger value seem to have problems with some CDROMs
> ;
>
> -8 CONSTANT #dev
> +\ Report the amount of supported SCSI IDs - QEMU uses "max_target = 63"
> : dev-max-target ( -- #max-target )
> - #dev
> + 40
> ;
>
> " scsi-probe-helpers.fs" included
>
In SLOF, it seems the id is encoded on 3 bits, see:
\ We use SRP luns of the form 8000 | (bus << 8) | (id << 5) | lun
\ in the top 16 bits of the 64-bit LUN
: (set-target)
to current-target
;
: dev-generate-srplun ( target lun -- )
swap 8 << 8000 or or 30 <<
;
More information about the SLOF
mailing list