From: "Andreas Färber" <afaerber@suse.de>
To: Christian Borntraeger <borntraeger@de.ibm.com>
Cc: qemu-stable@nongnu.org, qemu-devel <qemu-devel@nongnu.org>,
"Dominik Dingel" <dingel@linux.vnet.ibm.com>,
"Alexander Graf" <agraf@suse.de>,
"Anthony Liguori" <anthony@codemonkey.ws>,
"KONRAD Frédéric" <fred.konrad@greensocs.com>
Subject: Re: [Qemu-devel] [PATCH 1/2] s390/ipl: Fix boot order
Date: Mon, 17 Jun 2013 23:54:48 +0200 [thread overview]
Message-ID: <51BF85A8.9000202@suse.de> (raw)
In-Reply-To: <1371472182-10074-2-git-send-email-borntraeger@de.ibm.com>
Hi,
Am 17.06.2013 14:29, schrieb Christian Borntraeger:
> The latest ipl code adoptions collided with some of the virtio
"adaptions"?
> refactoring rework. This resulted in always booting the first
> disk. Lets fix booting from a given ID.
"Let's"?
> The new code also checks for command lines without bootindex to
> avoid random behaviour when accessing dev_st (==0).
>
> Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
> CC: qemu-stable@nongnu.org
> ---
> hw/s390x/ipl.c | 16 +++++++++-------
> 1 file changed, 9 insertions(+), 7 deletions(-)
>
> diff --git a/hw/s390x/ipl.c b/hw/s390x/ipl.c
> index 0aeb003..8b25b1c 100644
> --- a/hw/s390x/ipl.c
> +++ b/hw/s390x/ipl.c
> @@ -156,13 +156,15 @@ static void s390_ipl_reset(DeviceState *dev)
> if (!ipl->kernel) {
> /* booting firmware, tell what device to boot from */
> DeviceState *dev_st = get_boot_device(0);
> - VirtioCcwDevice *ccw_dev = (VirtioCcwDevice *) object_dynamic_cast(
> - OBJECT(&(dev_st->parent_obj)), "virtio-blk-ccw");
This should've never accessed parent_obj but simply use OBJECT(dev_st).
I would expect object_dynamic_cast() to return NULL on NULL input then,
but it seems the issue is rather that dev_st will be the VirtioDevice
and not the VirtIOS390Device.
> -
> - if (ccw_dev) {
> - env->regs[7] = ccw_dev->sch->cssid << 24 |
> - ccw_dev->sch->ssid << 16 |
> - ccw_dev->sch->devno;
> + if (dev_st) {
> + VirtioCcwDevice *ccw_dev = (VirtioCcwDevice *) object_dynamic_cast(
> + OBJECT((dev_st->parent_obj.parent)), "virtio-blk-ccw");
This is worse and equivalent to OBJECT(OBJECT(dev_st)->parent), with the
outer cast superfluous and parent being an Object-private field
according to include/qom/object.h.
IIRC we had once suggested to introduce an object_get_parent() accessor,
but Anthony was against it for some reason...? CC'ing.
Instead, I believe it would be permissible to access the device's bus,
which in turn has a pointer to its parent device:
OBJECT(qdev_get_parent_bus(dev_st)->parent)
> +
> + if (ccw_dev) {
> + env->regs[7] = ccw_dev->sch->cssid << 24 |
> + ccw_dev->sch->ssid << 16 |
> + ccw_dev->sch->devno;
> + }
Previously, env->regs[7] would've been assigned -1 for !ccw_dev.
Functional change intentional?
Cheers,
Andreas
> } else {
> env->regs[7] = -1;
> }
--
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg
next prev parent reply other threads:[~2013-06-17 21:54 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-06-17 12:29 [Qemu-devel] [PATCH 0/2] ipl related fixes Christian Borntraeger
2013-06-17 12:29 ` [Qemu-devel] [PATCH 1/2] s390/ipl: Fix boot order Christian Borntraeger
2013-06-17 21:54 ` Andreas Färber [this message]
2013-06-18 9:22 ` Christian Borntraeger
2013-06-18 12:31 ` [Qemu-devel] [PATCH v3] " Christian Borntraeger
2013-06-18 12:36 ` Andreas Färber
2013-06-24 12:57 ` Alexander Graf
2013-06-17 12:29 ` [Qemu-devel] [PATCH 2/2] s390/IPL: Allow boot from other ssid than 0 Christian Borntraeger
2013-06-24 12:57 ` Alexander Graf
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=51BF85A8.9000202@suse.de \
--to=afaerber@suse.de \
--cc=agraf@suse.de \
--cc=anthony@codemonkey.ws \
--cc=borntraeger@de.ibm.com \
--cc=dingel@linux.vnet.ibm.com \
--cc=fred.konrad@greensocs.com \
--cc=qemu-devel@nongnu.org \
--cc=qemu-stable@nongnu.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.