qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [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).