Currently we add typename to fw_dev_path if virtio-bus doesn't have get_fw_dev_path implementation, the fw_dev_path passed to seabios is not expected, the typename is redundant. It causes that bootindex parameter of scsi device doesn't work.
This patch changes the qdev_get_fw_dev_path_helper() to add nothing if device doesn't have get_fw_dev_path implementation.
Signed-off-by: Paolo Bonzini pbonzini@redhat.com Signed-off-by: Amos Kong akong@redhat.com --- hw/core/qdev.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/hw/core/qdev.c b/hw/core/qdev.c index 6985ad8..150255d 100644 --- a/hw/core/qdev.c +++ b/hw/core/qdev.c @@ -515,7 +515,7 @@ static int qdev_get_fw_dev_path_helper(DeviceState *dev, char *p, int size) l += snprintf(p + l, size - l, "%s", d); g_free(d); } else { - l += snprintf(p + l, size - l, "%s", object_get_typename(OBJECT(dev))); + return l; } } l += snprintf(p + l , size - l, "/");
Il 28/05/2013 12:25, Amos Kong ha scritto:
Currently we add typename to fw_dev_path if virtio-bus doesn't have get_fw_dev_path implementation, the fw_dev_path passed to seabios is not expected, the typename is redundant. It causes that bootindex parameter of scsi device doesn't work.
This patch changes the qdev_get_fw_dev_path_helper() to add nothing if device doesn't have get_fw_dev_path implementation.
This is not enough, because it would change behavior for other buses that do not have get_fw_dev_path. You also need to add a default implementation of the callback.
Signed-off-by: Paolo Bonzini pbonzini@redhat.com
You don't need my Signed-off-by. On the other hand, you should Cc qemu-stable@nongnu.org.
Paolo
Signed-off-by: Amos Kong akong@redhat.com
hw/core/qdev.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/hw/core/qdev.c b/hw/core/qdev.c index 6985ad8..150255d 100644 --- a/hw/core/qdev.c +++ b/hw/core/qdev.c @@ -515,7 +515,7 @@ static int qdev_get_fw_dev_path_helper(DeviceState *dev, char *p, int size) l += snprintf(p + l, size - l, "%s", d); g_free(d); } else {
l += snprintf(p + l, size - l, "%s", object_get_typename(OBJECT(dev)));
} l += snprintf(p + l , size - l, "/");return l; }