* [Qemu-devel] [PATCH v2] spapr: Allow boot from vhost-*-scsi backends @ 2017-06-05 15:55 Felipe Franciosi 2017-06-05 15:55 ` Felipe Franciosi 0 siblings, 1 reply; 3+ messages in thread From: Felipe Franciosi @ 2017-06-05 15:55 UTC (permalink / raw) To: David Gibson, Alexey Kardashevskiy, Alexander Graf, Paolo Bonzini Cc: qemu-devel, qemu-ppc, Mike Cui, Felipe Franciosi v1->v2: Elaborate commit message further. Felipe Franciosi (1): spapr: Allow boot from vhost-*-scsi backends hw/ppc/spapr.c | 8 ++++++++ 1 file changed, 8 insertions(+) -- 1.9.5 ^ permalink raw reply [flat|nested] 3+ messages in thread
* [Qemu-devel] [PATCH v2] spapr: Allow boot from vhost-*-scsi backends 2017-06-05 15:55 [Qemu-devel] [PATCH v2] spapr: Allow boot from vhost-*-scsi backends Felipe Franciosi @ 2017-06-05 15:55 ` Felipe Franciosi 2017-06-05 23:19 ` David Gibson 0 siblings, 1 reply; 3+ messages in thread From: Felipe Franciosi @ 2017-06-05 15:55 UTC (permalink / raw) To: David Gibson, Alexey Kardashevskiy, Alexander Graf, Paolo Bonzini Cc: qemu-devel, qemu-ppc, Mike Cui, Felipe Franciosi The current implementation of spapr_get_fw_dev_path() doesn't take into consideration vhost-*-scsi devices. This makes said devices unbootable on PPC as SLOF is unable to work out the path to scan boot disks. This makes VMs bootable on spapr when using vhost-*-scsi by implementing a disk path for VHostSCSICommon (which currently includes both vhost-user-scsi and vhost-scsi). Signed-off-by: Felipe Franciosi <felipe@nutanix.com> Signed-off-by: Mike Cui <cui@nutanix.com> --- hw/ppc/spapr.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index ab3aab1..1c87886 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -57,6 +57,7 @@ #include "hw/pci/pci.h" #include "hw/scsi/scsi.h" #include "hw/virtio/virtio-scsi.h" +#include "hw/virtio/vhost-scsi-common.h" #include "exec/address-spaces.h" #include "hw/usb.h" @@ -2388,6 +2389,7 @@ static char *spapr_get_fw_dev_path(FWPathProvider *p, BusState *bus, ((type *)object_dynamic_cast(OBJECT(obj), (name))) SCSIDevice *d = CAST(SCSIDevice, dev, TYPE_SCSI_DEVICE); sPAPRPHBState *phb = CAST(sPAPRPHBState, dev, TYPE_SPAPR_PCI_HOST_BRIDGE); + VHostSCSICommon *vsc = CAST(VHostSCSICommon, dev, TYPE_VHOST_SCSI_COMMON); if (d) { void *spapr = CAST(void, bus->parent, "spapr-vscsi"); @@ -2444,6 +2446,12 @@ static char *spapr_get_fw_dev_path(FWPathProvider *p, BusState *bus, return g_strdup_printf("pci@%"PRIX64, phb->buid); } + if (vsc) { + /* Same logic as virtio above */ + unsigned id = 0x1000000 | (vsc->target << 16) | vsc->lun; + return g_strdup_printf("disk@%"PRIX64, (uint64_t)id << 32); + } + return NULL; } -- 1.9.5 ^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [Qemu-devel] [PATCH v2] spapr: Allow boot from vhost-*-scsi backends 2017-06-05 15:55 ` Felipe Franciosi @ 2017-06-05 23:19 ` David Gibson 0 siblings, 0 replies; 3+ messages in thread From: David Gibson @ 2017-06-05 23:19 UTC (permalink / raw) To: Felipe Franciosi Cc: Alexey Kardashevskiy, Alexander Graf, Paolo Bonzini, qemu-devel, qemu-ppc, Mike Cui [-- Attachment #1: Type: text/plain, Size: 2141 bytes --] On Mon, Jun 05, 2017 at 04:55:18PM +0100, Felipe Franciosi wrote: > The current implementation of spapr_get_fw_dev_path() doesn't take into > consideration vhost-*-scsi devices. This makes said devices unbootable > on PPC as SLOF is unable to work out the path to scan boot disks. > > This makes VMs bootable on spapr when using vhost-*-scsi by implementing > a disk path for VHostSCSICommon (which currently includes both > vhost-user-scsi and vhost-scsi). > > Signed-off-by: Felipe Franciosi <felipe@nutanix.com> > Signed-off-by: Mike Cui <cui@nutanix.com> Applied to ppc-for-2.10, thanks. > --- > hw/ppc/spapr.c | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c > index ab3aab1..1c87886 100644 > --- a/hw/ppc/spapr.c > +++ b/hw/ppc/spapr.c > @@ -57,6 +57,7 @@ > #include "hw/pci/pci.h" > #include "hw/scsi/scsi.h" > #include "hw/virtio/virtio-scsi.h" > +#include "hw/virtio/vhost-scsi-common.h" > > #include "exec/address-spaces.h" > #include "hw/usb.h" > @@ -2388,6 +2389,7 @@ static char *spapr_get_fw_dev_path(FWPathProvider *p, BusState *bus, > ((type *)object_dynamic_cast(OBJECT(obj), (name))) > SCSIDevice *d = CAST(SCSIDevice, dev, TYPE_SCSI_DEVICE); > sPAPRPHBState *phb = CAST(sPAPRPHBState, dev, TYPE_SPAPR_PCI_HOST_BRIDGE); > + VHostSCSICommon *vsc = CAST(VHostSCSICommon, dev, TYPE_VHOST_SCSI_COMMON); > > if (d) { > void *spapr = CAST(void, bus->parent, "spapr-vscsi"); > @@ -2444,6 +2446,12 @@ static char *spapr_get_fw_dev_path(FWPathProvider *p, BusState *bus, > return g_strdup_printf("pci@%"PRIX64, phb->buid); > } > > + if (vsc) { > + /* Same logic as virtio above */ > + unsigned id = 0x1000000 | (vsc->target << 16) | vsc->lun; > + return g_strdup_printf("disk@%"PRIX64, (uint64_t)id << 32); > + } > + > return NULL; > } > -- 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 [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 819 bytes --] ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2017-06-05 23:54 UTC | newest] Thread overview: 3+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2017-06-05 15:55 [Qemu-devel] [PATCH v2] spapr: Allow boot from vhost-*-scsi backends Felipe Franciosi 2017-06-05 15:55 ` Felipe Franciosi 2017-06-05 23:19 ` David Gibson
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).