From patchwork Fri Dec 13 12:44:41 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Igor Mammedov X-Patchwork-Id: 301017 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id 0796E2C009E for ; Sat, 14 Dec 2013 00:18:06 +1100 (EST) Received: from localhost ([::1]:42044 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VrSBF-0000nE-Ot for incoming@patchwork.ozlabs.org; Fri, 13 Dec 2013 07:49:21 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37354) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VrS7T-0003mj-VL for qemu-devel@nongnu.org; Fri, 13 Dec 2013 07:45:36 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VrS7M-0006sv-6Z for qemu-devel@nongnu.org; Fri, 13 Dec 2013 07:45:27 -0500 Received: from mx1.redhat.com ([209.132.183.28]:63821) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VrS7L-0006se-UH for qemu-devel@nongnu.org; Fri, 13 Dec 2013 07:45:20 -0500 Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id rBDCjDH9029484 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Fri, 13 Dec 2013 07:45:13 -0500 Received: from thinkpad.redhat.com (vpn-229-8.phx2.redhat.com [10.3.229.8]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id rBDCinHK024652; Fri, 13 Dec 2013 07:45:05 -0500 From: Igor Mammedov To: qemu-devel@nongnu.org Date: Fri, 13 Dec 2013 13:44:41 +0100 Message-Id: <1386938688-22433-5-git-send-email-imammedo@redhat.com> In-Reply-To: <1386938688-22433-1-git-send-email-imammedo@redhat.com> References: <1386938688-22433-1-git-send-email-imammedo@redhat.com> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.23 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 209.132.183.28 Cc: kwolf@redhat.com, peter.maydell@linaro.org, peter.crosthwaite@xilinx.com, ehabkost@redhat.com, mst@redhat.com, marcel.a@redhat.com, blauwirbel@gmail.com, alex.williamson@redhat.com, kraxel@redhat.com, anthony@codemonkey.ws, pbonzini@redhat.com, dkoch@verizon.co, afaerber@suse.de Subject: [Qemu-devel] [PATCH 04/11] qdev: add to BusState "hotplug-handler" link X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org 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 --- 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); } 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;