qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Igor Mammedov <imammedo@redhat.com>
To: Peter Crosthwaite <peter.crosthwaite@xilinx.com>
Cc: "Kevin Wolf" <kwolf@redhat.com>,
	"Peter Maydell" <peter.maydell@linaro.org>,
	"Eduardo Habkost" <ehabkost@redhat.com>,
	marcel.a@redhat.com, "Michael S. Tsirkin" <mst@redhat.com>,
	"qemu-devel@nongnu.org Developers" <qemu-devel@nongnu.org>,
	"Blue Swirl" <blauwirbel@gmail.com>,
	alex.williamson@redhat.com, "Gerd Hoffmann" <kraxel@redhat.com>,
	"Anthony Liguori" <anthony@codemonkey.ws>,
	"Paolo Bonzini" <pbonzini@redhat.com>,
	dkoch@verizon.co, "Andreas Färber" <afaerber@suse.de>
Subject: Re: [Qemu-devel] [PATCH 04/11] qdev: add to BusState "hotplug-handler" link
Date: Mon, 16 Dec 2013 16:26:25 +0100	[thread overview]
Message-ID: <20131216162625.2e4353c7@nial.usersys.redhat.com> (raw)
In-Reply-To: <CAEgOgz4JmeGLo_cAha0DjY0ewo+wBwJpHPMeMF_GrcTu=2HoTA@mail.gmail.com>

On Sat, 14 Dec 2013 17:05:57 +1000
Peter Crosthwaite <peter.crosthwaite@xilinx.com> wrote:

> On Fri, Dec 13, 2013 at 10:44 PM, Igor Mammedov <imammedo@redhat.com> wrote:
> > It will allow to reuse field with different BUSes, reducing code duplication.
> > Field is intended fot replacing 'hotplug_qdev' field in PCIBus and also
> > will allow to avoid adding equivalent field to DimmBus with possiblitity
> > to refactor other BUSes to use it instead of custom field.
> > In addition once all users of allow_hotplug field are converted to new
> > API, link could replace allow_hotplug in qdev hotplug code.
> >
> > Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> > ---
> >  hw/core/qdev.c         | 4 ++++
> >  include/hw/qdev-core.h | 5 +++++
> >  2 files changed, 9 insertions(+)
> >
> > diff --git a/hw/core/qdev.c b/hw/core/qdev.c
> > index e374a93..25c2d2c 100644
> > --- a/hw/core/qdev.c
> > +++ b/hw/core/qdev.c
> > @@ -32,6 +32,7 @@
> >  #include "qapi/visitor.h"
> >  #include "qapi/qmp/qjson.h"
> >  #include "monitor/monitor.h"
> > +#include "hw/hotplug.h"
> >
> >  int qdev_hotplug = 0;
> >  static bool qdev_hot_added = false;
> > @@ -868,6 +869,9 @@ static void qbus_initfn(Object *obj)
> >      BusState *bus = BUS(obj);
> >
> >      QTAILQ_INIT(&bus->children);
> > +    object_property_add_link(obj, QDEV_HOTPLUG_HANDLER_PROPERTY,
> > +                             TYPE_HOTPLUG_HANDLER,
> > +                             (Object **)&bus->hotplug_handler, NULL);
> 
> I think failure of this is fatal. When the patches go through,
> probably want to &error_abort.
That's just another example of we don't care about error that
gave birth to &error_abort topic. But I think is a drawback if
error-less initfn. We have a lot of such usage without a way
to report error, that's why "we don't care about error" was
invented I guess.

But more to the point, bus could be created during hotplug, and
we do not want to abort guest, instead hotplug operation should fail.
In this case following setting of QDEV_HOTPLUG_HANDLER_PROPERTY
will fail if object_property_add_link() failed before.

> 
> >  }
> >
> >  static char *default_bus_get_fw_dev_path(DeviceState *dev)
> > diff --git a/include/hw/qdev-core.h b/include/hw/qdev-core.h
> > index f2043a6..684a5da 100644
> > --- a/include/hw/qdev-core.h
> > +++ b/include/hw/qdev-core.h
> > @@ -8,6 +8,7 @@
> >  #include "qom/object.h"
> >  #include "hw/irq.h"
> >  #include "qapi/error.h"
> > +#include "hw/hotplug.h"
> >
> >  enum {
> >      DEV_NVECTORS_UNSPECIFIED = -1,
> > @@ -169,14 +170,18 @@ typedef struct BusChild {
> >      QTAILQ_ENTRY(BusChild) sibling;
> >  } BusChild;
> >
> > +#define QDEV_HOTPLUG_HANDLER_PROPERTY "hotplug-handler"
> > +
> >  /**
> >   * BusState:
> > + * @hotplug_device: link to a hotplug device associated with bus.
> >   */
> >  struct BusState {
> >      Object obj;
> >      DeviceState *parent;
> >      const char *name;
> >      int allow_hotplug;
> > +    HotplugHandler *hotplug_handler;
> >      int max_index;
> >      QTAILQ_HEAD(ChildrenHead, BusChild) children;
> >      QLIST_ENTRY(BusState) sibling;
> > --
> > 1.8.3.1
> >
> >

  reply	other threads:[~2013-12-16 15:26 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-12-13 12:44 [Qemu-devel] [PATCH 00/11 v3] Refactor PCI/SHPC/PCIE hotplug to use a more generic hotplug API Igor Mammedov
2013-12-13 12:44 ` [Qemu-devel] [PATCH 01/11] qom: do not register interface "types" in the type table Igor Mammedov
2013-12-13 12:44 ` [Qemu-devel] [PATCH 02/11] qom: detect bad reentrance during object_class_foreach Igor Mammedov
2013-12-14  6:53   ` Peter Crosthwaite
2013-12-15 17:44     ` Andreas Färber
2013-12-13 12:44 ` [Qemu-devel] [PATCH 03/11] define hotplug interface Igor Mammedov
2013-12-14  7:03   ` Peter Crosthwaite
2013-12-16 15:37     ` Igor Mammedov
2013-12-13 12:44 ` [Qemu-devel] [PATCH 04/11] qdev: add to BusState "hotplug-handler" link Igor Mammedov
2013-12-14  7:05   ` Peter Crosthwaite
2013-12-16 15:26     ` Igor Mammedov [this message]
2013-12-16 15:53       ` Igor Mammedov
2013-12-13 12:44 ` [Qemu-devel] [PATCH 05/11] qdev: add "hotpluggable" property to Device Igor Mammedov
2013-12-14  7:10   ` Peter Crosthwaite
2013-12-16 15:37     ` Igor Mammedov
2013-12-16 23:22   ` Anthony Liguori
2013-12-13 12:44 ` [Qemu-devel] [PATCH 06/11] hw/acpi: move typeinfo to the file end Igor Mammedov
2013-12-13 12:44 ` [Qemu-devel] [PATCH 07/11] qdev:pci: refactor PCIDevice to use generic "hotpluggable" property Igor Mammedov
2013-12-13 12:44 ` [Qemu-devel] [PATCH 08/11] acpi/piix4pm: convert ACPI PCI hotplug to use hotplug-handler API Igor Mammedov
2013-12-13 12:44 ` [Qemu-devel] [PATCH 09/11] pci/shpc: convert SHPC " Igor Mammedov
2013-12-13 12:44 ` [Qemu-devel] [PATCH 10/11] pci/pcie: convert PCIE " Igor Mammedov
2013-12-13 12:44 ` [Qemu-devel] [PATCH 11/11] hw/pci: switch to a generic hotplug handling for PCIDevice Igor Mammedov
2013-12-16 23:26 ` [Qemu-devel] [PATCH 00/11 v3] Refactor PCI/SHPC/PCIE hotplug to use a more generic hotplug API Anthony Liguori
2013-12-16 23:34   ` Peter Crosthwaite
2013-12-17 11:58   ` Igor Mammedov
2013-12-17 12:38   ` Paolo Bonzini
2013-12-17 19:38     ` Anthony Liguori
2013-12-18 10:36       ` Paolo Bonzini
2013-12-18 15:48         ` Igor Mammedov
2013-12-18 15:59           ` Paolo Bonzini
2013-12-18 16:32             ` Igor Mammedov
2013-12-18 16:26           ` Michael S. Tsirkin
2013-12-18 16:34             ` Igor Mammedov
  -- strict thread matches above, loose matches on Subject: below --
2013-12-11  1:01 [Qemu-devel] [PATCH 00/11 v2] " Igor Mammedov
2013-12-11  1:01 ` [Qemu-devel] [PATCH 04/11] qdev: add to BusState "hotplug-handler" link Igor Mammedov

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=20131216162625.2e4353c7@nial.usersys.redhat.com \
    --to=imammedo@redhat.com \
    --cc=afaerber@suse.de \
    --cc=alex.williamson@redhat.com \
    --cc=anthony@codemonkey.ws \
    --cc=blauwirbel@gmail.com \
    --cc=dkoch@verizon.co \
    --cc=ehabkost@redhat.com \
    --cc=kraxel@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=marcel.a@redhat.com \
    --cc=mst@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=peter.crosthwaite@xilinx.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@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 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).