From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50208) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fEGUT-0000hC-UJ for qemu-devel@nongnu.org; Thu, 03 May 2018 11:49:54 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fEGUT-0003hT-3Y for qemu-devel@nongnu.org; Thu, 03 May 2018 11:49:53 -0400 From: David Hildenbrand Date: Thu, 3 May 2018 17:49:31 +0200 Message-Id: <20180503154936.18946-4-david@redhat.com> In-Reply-To: <20180503154936.18946-1-david@redhat.com> References: <20180503154936.18946-1-david@redhat.com> Subject: [Qemu-devel] [PATCH v1 3/8] machine: provide default resource handler List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: qemu-s390x@nongnu.org, "Michael S . Tsirkin" , Igor Mammedov , Marcel Apfelbaum , Paolo Bonzini , Richard Henderson , Eduardo Habkost , David Gibson , Markus Armbruster , qemu-ppc@nongnu.org, Pankaj Gupta , Alexander Graf , David Hildenbrand Most resources that can't be handled via the hotplug handler will have to assign "system wide" resource. This is e.g. the case for memory devices. This will allow for a quite clean implementation for such handling. The new functions will soon be filled with life. Signed-off-by: David Hildenbrand --- hw/core/machine.c | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/hw/core/machine.c b/hw/core/machine.c index 2040177664..a41068410c 100644 --- a/hw/core/machine.c +++ b/hw/core/machine.c @@ -517,8 +517,31 @@ void machine_set_cpu_numa_node(MachineState *machine, } } +static ResourceHandler *machine_get_resource_handler(MachineState *machine, + const DeviceState *dev) +{ + return NULL; +} + +static void machine_resource_handler_pre_assign(ResourceHandler *rh, + const DeviceState *dev, + Error **errp) +{ +} + +static void machine_resource_handler_assign(ResourceHandler *rh, + DeviceState *dev, Error **errp) +{ +} + +static void machine_resource_handler_unassign(ResourceHandler *rh, + DeviceState *dev) +{ +} + static void machine_class_init(ObjectClass *oc, void *data) { + ResourceHandlerClass *rhc = RESOURCE_HANDLER_CLASS(oc); MachineClass *mc = MACHINE_CLASS(oc); /* Default 128 MB as guest ram size */ @@ -531,6 +554,12 @@ static void machine_class_init(ObjectClass *oc, void *data) mc->numa_mem_align_shift = 23; mc->numa_auto_assign_ram = numa_default_auto_assign_ram; + /* default resource handler */ + mc->get_resource_handler = machine_get_resource_handler; + rhc->pre_assign = machine_resource_handler_pre_assign; + rhc->assign = machine_resource_handler_assign; + rhc->unassign = machine_resource_handler_unassign; + object_class_property_add_str(oc, "accel", machine_get_accel, machine_set_accel, &error_abort); object_class_property_set_description(oc, "accel", @@ -868,6 +897,10 @@ static const TypeInfo machine_info = { .instance_size = sizeof(MachineState), .instance_init = machine_initfn, .instance_finalize = machine_finalize, + .interfaces = (InterfaceInfo[]) { + { TYPE_RESOURCE_HANDLER }, + { } + }, }; static void machine_register_types(void) -- 2.14.3