From: Laszlo Ersek <lersek@redhat.com>
To: Amos Kong <akong@redhat.com>
Cc: aliguori@us.ibm.com, seabios@seabios.org, qemu-devel@nongnu.org,
qemu-stable@nongnu.org, kevin@koconnor.net, pbonzini@redhat.com
Subject: Re: [Qemu-devel] [QEMU PATCH v3] qdev: fix get_fw_dev_path to support to add nothing to fw_dev_path
Date: Wed, 29 May 2013 13:10:32 +0200 [thread overview]
Message-ID: <51A5E228.4020609@redhat.com> (raw)
In-Reply-To: <1369814202-10346-1-git-send-email-akong@redhat.com>
On 05/29/13 09:56, Amos Kong wrote:
> Recent virtio refactoring in QEMU made virtio-bus become the parent bus
> of scsi-bus, and virtio-bus doesn't have get_fw_dev_path implementation,
> typename will be added to fw_dev_path by default, the new fw_dev_path
> could not be identified by seabios. It causes that bootindex parameter
> of scsi device doesn't work.
>
> This patch implements get_fw_dev_path() in BusClass, it will be called
> if bus doesn't implement the method, tyename will be added to
> fw_dev_path. If the implemented method returns NULL, nothing will be
> added to fw_dev_path.
>
> It also implements virtio_bus_get_fw_dev_path() to return NULL. Then
> QEMU will still pass original style of fw_dev_path to seabios.
>
> Signed-off-by: Amos Kong <akong@redhat.com>
> --
> v2: only add nothing to fw_dev_path when get_fw_dev_path() is
> implemented and returns NULL. then it will not effect other devices
> don't have get_fw_dev_path() implementation.
> v3: implement default get_fw_dev_path() in BusClass
> ---
> hw/core/qdev.c | 10 +++++++++-
> hw/virtio/virtio-bus.c | 6 ++++++
> 2 files changed, 15 insertions(+), 1 deletion(-)
>
> diff --git a/hw/core/qdev.c b/hw/core/qdev.c
> index 6985ad8..9190a7e 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, "/");
> @@ -867,9 +867,17 @@ static void qbus_initfn(Object *obj)
> QTAILQ_INIT(&bus->children);
> }
>
> +static char *default_bus_get_fw_dev_path(DeviceState *dev)
> +{
> + return g_strdup(object_get_typename(OBJECT(dev)));
> +}
> +
> static void bus_class_init(ObjectClass *class, void *data)
> {
> + BusClass *bc = BUS_CLASS(class);
> +
> class->unparent = bus_unparent;
> + bc->get_fw_dev_path = default_bus_get_fw_dev_path;
> }
>
> static void qbus_finalize(Object *obj)
> diff --git a/hw/virtio/virtio-bus.c b/hw/virtio/virtio-bus.c
> index ea2e11a..6849a01 100644
> --- a/hw/virtio/virtio-bus.c
> +++ b/hw/virtio/virtio-bus.c
> @@ -161,10 +161,16 @@ static char *virtio_bus_get_dev_path(DeviceState *dev)
> return qdev_get_dev_path(proxy);
> }
>
> +static char *virtio_bus_get_fw_dev_path(DeviceState *dev)
> +{
> + return NULL;
> +}
> +
> static void virtio_bus_class_init(ObjectClass *klass, void *data)
> {
> BusClass *bus_class = BUS_CLASS(klass);
> bus_class->get_dev_path = virtio_bus_get_dev_path;
> + bus_class->get_fw_dev_path = virtio_bus_get_fw_dev_path;
> }
>
> static const TypeInfo virtio_bus_info = {
>
Ah, the happiness of finally understanding what Paolo suggested. (Or at
least believing so.)
My R-b is superfluous after Paolo's, but I can't resist.
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
next prev parent reply other threads:[~2013-05-29 11:08 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-05-29 7:56 [Qemu-devel] [QEMU PATCH v3] qdev: fix get_fw_dev_path to support to add nothing to fw_dev_path Amos Kong
2013-05-29 8:25 ` Paolo Bonzini
2013-05-29 11:10 ` Laszlo Ersek [this message]
2013-05-30 12:09 ` [Qemu-devel] [Qemu-stable] " Stefan Priebe - Profihost AG
2013-05-30 13:13 ` Amos Kong
2013-05-30 20:30 ` Stefan Priebe
2013-05-30 22:51 ` Amos Kong
2013-05-31 6:57 ` Stefan Priebe - Profihost AG
2013-05-31 11:02 ` Amos Kong
2013-05-31 11:37 ` Stefan Priebe - Profihost AG
2013-06-03 8:10 ` Stefan Priebe - Profihost AG
2013-05-31 18:48 ` [Qemu-devel] " Anthony Liguori
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=51A5E228.4020609@redhat.com \
--to=lersek@redhat.com \
--cc=akong@redhat.com \
--cc=aliguori@us.ibm.com \
--cc=kevin@koconnor.net \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=qemu-stable@nongnu.org \
--cc=seabios@seabios.org \
/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.