From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52294) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XWlad-00077H-9j for qemu-devel@nongnu.org; Wed, 24 Sep 2014 08:22:41 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XWlaX-0006sp-4R for qemu-devel@nongnu.org; Wed, 24 Sep 2014 08:22:35 -0400 Received: from mx1.redhat.com ([209.132.183.28]:33324) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XWlaW-0006rP-Tx for qemu-devel@nongnu.org; Wed, 24 Sep 2014 08:22:29 -0400 Message-ID: <5422B775.90205@redhat.com> Date: Wed, 24 Sep 2014 14:22:13 +0200 From: Paolo Bonzini MIME-Version: 1.0 References: <1411559299-19042-1-git-send-email-imammedo@redhat.com> <1411559299-19042-15-git-send-email-imammedo@redhat.com> In-Reply-To: <1411559299-19042-15-git-send-email-imammedo@redhat.com> Content-Type: text/plain; charset=iso-8859-15 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH 14/30] target-i386: ICC bus: replace BusState.allow_hotplug with hotplug_handler List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Igor Mammedov , qemu-devel@nongnu.org Cc: dmitry@daynix.com, borntraeger@de.ibm.com, mst@redhat.com, agraf@suse.de, cornelia.huck@de.ibm.com, kraxel@redhat.com, amit.shah@redhat.com, rth@twiddle.net Il 24/09/2014 13:48, Igor Mammedov ha scritto: > it will allow to drop BusState.allow_hotplug field > and still keep ICC bus hotluggable for CPU/APIC devices. > > Signed-off-by: Igor Mammedov > --- > hw/cpu/icc_bus.c | 20 ++++++++++++-------- > 1 file changed, 12 insertions(+), 8 deletions(-) > > diff --git a/hw/cpu/icc_bus.c b/hw/cpu/icc_bus.c > index 7f44c59..cb5ed5c 100644 > --- a/hw/cpu/icc_bus.c > +++ b/hw/cpu/icc_bus.c > @@ -24,18 +24,10 @@ > > /* icc-bridge implementation */ > > -static void icc_bus_init(Object *obj) > -{ > - BusState *b = BUS(obj); > - > - b->allow_hotplug = true; > -} > - > static const TypeInfo icc_bus_info = { > .name = TYPE_ICC_BUS, > .parent = TYPE_BUS, > .instance_size = sizeof(ICCBus), > - .instance_init = icc_bus_init, > }; > > > @@ -100,11 +92,19 @@ static void icc_bridge_init(Object *obj) > s->icc_bus.apic_address_space = &s->apic_container; > } > > +static void icc_bridge_realize(DeviceState *dev, Error **errp) > +{ > + ICCBridgeState *s = ICC_BRIGDE(dev); > + > + qbus_set_hotplug_handler(BUS(&s->icc_bus), dev, errp); > +} > + > static void icc_bridge_class_init(ObjectClass *oc, void *data) > { > DeviceClass *dc = DEVICE_CLASS(oc); > > set_bit(DEVICE_CATEGORY_BRIDGE, dc->categories); > + dc->realize = icc_bridge_realize; > } > > static const TypeInfo icc_bridge_info = { > @@ -113,6 +113,10 @@ static const TypeInfo icc_bridge_info = { > .instance_init = icc_bridge_init, > .instance_size = sizeof(ICCBridgeState), > .class_init = icc_bridge_class_init, > + .interfaces = (InterfaceInfo[]) { > + { TYPE_HOTPLUG_HANDLER }, > + { } > + } > }; > > > If you do this, aren't you enabling CPU hot-unplug? Should hotplug_handler_plug and/or hotplug_handler_unplug return an error if there is no callback? Paolo