On Mon, Nov 20, 2017 at 08:44:38AM +0100, Thomas Huth wrote: > LUNs >= 256 have to be encoded with the so-called "flat space > addressing method" for virtio-scsi, where an additional bit has to > be set. SLOF already took care of this with the following commit: > > https://git.qemu.org/?p=SLOF.git;a=commitdiff;h=f72a37713fea47da > (see https://bugzilla.redhat.com/show_bug.cgi?id=1431584 for details) > > But QEMU does not use this encoding yet for device tree paths > that have to be handed over to SLOF to deal with the "bootindex" > property, so SLOF currently fails to boot from virtio-scsi devices > with LUNs >= 256 in the right boot order. Fix it by using the bit > to indicate the "flat space addressing method" for LUNs >= 256. > > Signed-off-by: Thomas Huth <th...@redhat.com>
Applied to ppc-for-2.11, thanks. > --- > hw/ppc/spapr.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c > index d682f01..ff2eec4 100644 > --- a/hw/ppc/spapr.c > +++ b/hw/ppc/spapr.c > @@ -2643,6 +2643,10 @@ static char *spapr_get_fw_dev_path(FWPathProvider *p, > BusState *bus, > * swap 0100 or 10 << or 20 << ( target lun-id -- srplun ) > */ > unsigned id = 0x1000000 | (d->id << 16) | d->lun; > + if (d->lun >= 256) { > + /* Use the LUN "flat space addressing method" */ > + id |= 0x4000; > + } > return g_strdup_printf("%s@%"PRIX64, qdev_fw_name(dev), > (uint64_t)id << 32); > } else if (usb) { -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson
signature.asc
Description: PGP signature