Message ID | 1496303518-25638-1-git-send-email-felipe@nutanix.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Thu, Jun 01, 2017 at 08:51:58AM +0100, Felipe Franciosi wrote: > This makes VMs bootable on spapr when using vhost-*-scsi. This commit message needs more information: what previously prevented vhost-*-scsi from working? > 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; > } >
> On 3 Jun 2017, at 12:54, David Gibson <david@gibson.dropbear.id.au> wrote: > > On Thu, Jun 01, 2017 at 08:51:58AM +0100, Felipe Franciosi wrote: >> This makes VMs bootable on spapr when using vhost-*-scsi. > > This commit message needs more information: what previously prevented > vhost-*-scsi from working? Fair point. I elaborated on the commit message and sent a v2. Thanks, F. > >> 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; >> } >> > > -- > 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
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; }