@@ -1307,8 +1307,8 @@ static char *scsibus_get_fw_dev_path(DeviceState *dev)
SCSIDevice *d = DO_UPCAST(SCSIDevice, qdev, dev);
char path[100];
- snprintf(path, sizeof(path), "%s@%d:%d:%d", qdev_fw_name(dev),
- d->channel, d->id, d->lun);
+ snprintf(path, sizeof(path), "channel@%x/%s@%x,%x", d->channel,
+ qdev_fw_name(dev), d->id, d->lun);
return strdup(path);
}
@@ -1581,7 +1581,7 @@ static int scsi_initfn(SCSIDevice *dev)
bdrv_set_buffer_alignment(s->qdev.conf.bs, s->qdev.blocksize);
bdrv_iostatus_enable(s->qdev.conf.bs);
- add_boot_device_path(s->qdev.conf.bootindex, &dev->qdev, ",0");
+ add_boot_device_path(s->qdev.conf.bootindex, &dev->qdev, NULL);
return 0;
}
The pre-1.0 firmware path for SCSI devices already included the LUN using the suffix argument to add_boot_device_path. Avoid that it is included twice, and, for consistency with the OpenFirmware spec: 1) move the "channel" to a separate device path; 2) convert the colons to commas; 3) use hex for the numbers. This is compatible with SeaBIOS USB boot, which only looks at the prefix for the usb-storage device (e.g. /pci@i0cf8/usb@1,2/storage@1), and never at the SCSI part. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> --- hw/scsi-bus.c | 4 ++-- hw/scsi-disk.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-)