All of lore.kernel.org
 help / color / mirror / Atom feed
From: Gerd Hoffmann <kraxel@redhat.com>
To: Thomas Huth <thuth@redhat.com>
Cc: David Gibson <david@gibson.dropbear.id.au>,
	qemu-devel@nongnu.org, Alexander Graf <agraf@suse.de>,
	qemu-ppc@nongnu.org
Subject: Re: [Qemu-devel] [PATCH] hw/ppc/spapr: Fix boot path of usb-host storage devices
Date: Tue, 13 Dec 2016 14:52:56 +0100	[thread overview]
Message-ID: <1481637176.27088.132.camel@redhat.com> (raw)
In-Reply-To: <1481633076-24521-1-git-send-email-thuth@redhat.com>

On Di, 2016-12-13 at 13:44 +0100, Thomas Huth wrote:
> When passing through a USB storage device to a pseries guest, it
> is currently not possible to automatically boot from the device
> if the "bootindex" property has been specified, too (e.g. when using
> "-device nec-usb-xhci -device usb-host,hostbus=1,hostaddr=2,bootindex=0"
> at the command line). The problem is that QEMU builds a device tree path
> like "/pci@800000020000000/usb@0/usb-host@1" and passes it to SLOF
> in the /chosen/qemu,boot-list property. SLOF, however, probes the
> USB device, recognizes that it is a storage device and thus changes
> its name to "storage", and additionally adds a child node for the
> SCSI LUN, so the correct boot path in SLOF is something like
> "/pci@800000020000000/usb@0/storage@1/disk@101000000000000" instead.
> So when we detect an USB mass storage device with SCSI interface,
> we've got to adjust the firmware boot-device path properly, so that
> SLOF can automatically boot from the device.

> diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
> index 208ef7b..fe315b5 100644
> --- a/hw/ppc/spapr.c
> +++ b/hw/ppc/spapr.c
> @@ -2185,6 +2185,15 @@ static char *spapr_get_fw_dev_path(FWPathProvider *p, BusState *bus,
>          }
>      }
>  
> +    if (strcmp("usb-host", qdev_fw_name(dev)) == 0) {
> +        USBDevice *usbdev = CAST(USBDevice, dev, TYPE_USB_DEVICE);
> +
> +        /* SLOF scans USB storage and adds a "disk" node for the SCSI LUN */
> +        if (usb_host_dev_is_scsi_storage(usbdev)) {
> +            return g_strdup_printf("storage@%s/disk", usbdev->port->path);
> +        }
> +    }
> +

Any reason why this is hidden in ppc/spapr?

usb-host could implement the ->fw_name callback instead to create a name
depending on the device type ...

cheers,
  Gerd

  reply	other threads:[~2016-12-13 13:53 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-12-13 12:44 [Qemu-devel] [PATCH] hw/ppc/spapr: Fix boot path of usb-host storage devices Thomas Huth
2016-12-13 13:52 ` Gerd Hoffmann [this message]
2016-12-13 14:29   ` Thomas Huth
2016-12-14  9:36     ` Gerd Hoffmann
2016-12-14 21:33       ` Thomas Huth
2016-12-15  9:28         ` Gerd Hoffmann
2016-12-15 11:47         ` [Qemu-devel] [Qemu-ppc] " BALATON Zoltan
2016-12-14  0:14 ` [Qemu-devel] " David Gibson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1481637176.27088.132.camel@redhat.com \
    --to=kraxel@redhat.com \
    --cc=agraf@suse.de \
    --cc=david@gibson.dropbear.id.au \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-ppc@nongnu.org \
    --cc=thuth@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.