Patchwork [3/4] scsi: fix fw path

login
register
mail settings
Submitter Paolo Bonzini
Date Nov. 18, 2011, 3:32 p.m.
Message ID <1321630322-19309-4-git-send-email-pbonzini@redhat.com>
Download mbox | patch
Permalink /patch/126431/
State New
Headers show

Comments

Paolo Bonzini - Nov. 18, 2011, 3:32 p.m.
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(-)

Patch

diff --git a/hw/scsi-bus.c b/hw/scsi-bus.c
index 61c883f..07d6a7d 100644
--- a/hw/scsi-bus.c
+++ b/hw/scsi-bus.c
@@ -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);
 }
diff --git a/hw/scsi-disk.c b/hw/scsi-disk.c
index 9da6d36..16a4714 100644
--- a/hw/scsi-disk.c
+++ b/hw/scsi-disk.c
@@ -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;
 }