All of lore.kernel.org
 help / color / mirror / Atom feed
From: Cornelia Huck <cohuck@redhat.com>
To: David Hildenbrand <david@redhat.com>
Cc: qemu-devel@nongnu.org, "Michael S . Tsirkin" <mst@redhat.com>,
	Igor Mammedov <imammedo@redhat.com>,
	Alexander Graf <agraf@suse.de>,
	Christian Borntraeger <borntraeger@de.ibm.com>,
	qemu-s390x@nongnu.org, Richard Henderson <rth@twiddle.net>,
	=Collin Walling <walling@linux.ibm.com>,
	Thomas Huth <thuth@redhat.com>
Subject: Re: [Qemu-devel] [PATCH v1 4/4] s390x/zpci: properly fail if the zPCI device cannot be created
Date: Thu, 8 Nov 2018 14:35:01 +0100	[thread overview]
Message-ID: <20181108143501.0f2427d2.cohuck@redhat.com> (raw)
In-Reply-To: <20181105110313.29312-5-david@redhat.com>

On Mon,  5 Nov 2018 12:03:13 +0100
David Hildenbrand <david@redhat.com> wrote:

> Right now, errors during realize()/pre_plug/plug of the zPCI device
> would result in QEMU crashing instead of failing nicely when creating
> a zPCI device for a PCI device.
> 
> Signed-off-by: David Hildenbrand <david@redhat.com>
> ---
>  hw/s390x/s390-pci-bus.c | 25 +++++++++++++++++++------
>  1 file changed, 19 insertions(+), 6 deletions(-)

Unfortunately, this patch applied as-is on top of master breaks zpci
device autogeneration:

-device zpci,target=pcidev -device virtio-net-pci,id=pcidev works

-device virtio-net-pci fails with

qemu-system-s390x: -device virtio-net-pci: zPCI device could not be created: Property '.auto_00:00.0' not found

Any idea?

[insert my usual rants about the zpci architecture here]

> 
> diff --git a/hw/s390x/s390-pci-bus.c b/hw/s390x/s390-pci-bus.c
> index 1849f9d334..4939490c7c 100644
> --- a/hw/s390x/s390-pci-bus.c
> +++ b/hw/s390x/s390-pci-bus.c
> @@ -778,17 +778,31 @@ static void s390_pci_msix_free(S390PCIBusDevice *pbdev)
>  }
>  
>  static S390PCIBusDevice *s390_pci_device_new(S390pciState *s,
> -                                             const char *target)
> +                                             const char *target, Error **errp)
>  {
> -    DeviceState *dev = NULL;
> +    Error *local_err = NULL;
> +    DeviceState *dev;
>  
>      dev = qdev_try_create(BUS(s->bus), TYPE_S390_PCI_DEVICE);
>      if (!dev) {
> +        error_setg(errp, "zPCI device could not be created");
>          return NULL;
>      }
>  
> -    qdev_prop_set_string(dev, "target", target);
> -    qdev_init_nofail(dev);
> +    object_property_set_str(OBJECT(dev), "target", target, &local_err);
> +    if (local_err) {
> +        object_unparent(OBJECT(dev));
> +        error_propagate_prepend(errp, local_err,
> +                                "zPCI device could not be created: ");
> +        return NULL;
> +    }
> +    object_property_set_bool(OBJECT(dev), true, "realized", &local_err);
> +    if (local_err) {
> +        object_unparent(OBJECT(dev));
> +        error_propagate_prepend(errp, local_err,
> +                                "zPCI device could not be created: ");
> +        return NULL;
> +    }
>  
>      return S390_PCI_DEVICE(dev);
>  }
> @@ -873,9 +887,8 @@ static void s390_pcihost_plug(HotplugHandler *hotplug_dev, DeviceState *dev,
>  
>          pbdev = s390_pci_find_dev_by_target(s, dev->id);
>          if (!pbdev) {
> -            pbdev = s390_pci_device_new(s, dev->id);
> +            pbdev = s390_pci_device_new(s, dev->id, errp);
>              if (!pbdev) {
> -                error_setg(errp, "create zpci device failed");
>                  return;
>              }
>          }

  parent reply	other threads:[~2018-11-08 13:35 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-11-05 11:03 [Qemu-devel] [PATCH v1 0/4] s390x/zpci: some hotplug handler cleanups David Hildenbrand
2018-11-05 11:03 ` [Qemu-devel] [PATCH v1 1/4] s390x/zpci: drop msix.available David Hildenbrand
2018-11-05 11:19   ` Cornelia Huck
2018-11-07 16:26     ` [Qemu-devel] [qemu-s390x] " Collin Walling
2018-11-08 10:54       ` Cornelia Huck
2018-11-05 11:25   ` [Qemu-devel] " Thomas Huth
2018-11-12 17:12   ` Cornelia Huck
2018-11-05 11:03 ` [Qemu-devel] [PATCH v1 2/4] s390x/zpci: use hotplug_dev instead of looking up the host bridge David Hildenbrand
2018-11-05 11:21   ` Cornelia Huck
2018-11-05 11:37     ` David Hildenbrand
2018-11-05 11:40       ` Christian Borntraeger
2018-11-05 11:50         ` David Hildenbrand
2018-11-07 20:28           ` Collin Walling
2018-11-08 11:07             ` Cornelia Huck
2018-11-08 11:56               ` David Hildenbrand
2018-11-05 11:03 ` [Qemu-devel] [PATCH v1 3/4] s390x/zpci: move some hotplug checks to the pre_plug handler David Hildenbrand
2018-11-05 11:50   ` David Hildenbrand
2018-11-07 19:34     ` [Qemu-devel] [qemu-s390x] " Collin Walling
2018-11-07 19:36       ` David Hildenbrand
2018-11-07 19:46         ` Collin Walling
2018-11-05 11:03 ` [Qemu-devel] [PATCH v1 4/4] s390x/zpci: properly fail if the zPCI device cannot be created David Hildenbrand
2018-11-05 12:04   ` Thomas Huth
2018-11-05 12:41     ` Cornelia Huck
2018-11-05 12:46       ` David Hildenbrand
2018-11-08 11:14         ` Cornelia Huck
2018-11-07 20:15   ` Collin Walling
2018-11-08 13:35   ` Cornelia Huck [this message]
2018-11-08 13:58     ` David Hildenbrand
2018-11-12 17:14 ` [Qemu-devel] [PATCH v1 0/4] s390x/zpci: some hotplug handler cleanups Cornelia Huck
2018-11-12 17:34   ` David Hildenbrand
2018-11-13  9:03     ` Cornelia Huck
2018-11-13 12:06       ` [Qemu-devel] [qemu-s390x] " David Hildenbrand

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=20181108143501.0f2427d2.cohuck@redhat.com \
    --to=cohuck@redhat.com \
    --cc=agraf@suse.de \
    --cc=borntraeger@de.ibm.com \
    --cc=david@redhat.com \
    --cc=imammedo@redhat.com \
    --cc=mst@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-s390x@nongnu.org \
    --cc=rth@twiddle.net \
    --cc=thuth@redhat.com \
    --cc=walling@linux.ibm.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.