From patchwork Thu May 17 08:15:13 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Hildenbrand X-Patchwork-Id: 915169 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=redhat.com Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 40mkfX1Mnpz9s08 for ; Thu, 17 May 2018 18:16:34 +1000 (AEST) Received: from localhost ([::1]:41829 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fJE5N-0002Ss-FZ for incoming@patchwork.ozlabs.org; Thu, 17 May 2018 04:16:29 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49143) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fJE4V-0002RR-Ql for qemu-devel@nongnu.org; Thu, 17 May 2018 04:15:36 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fJE4R-0002oO-PK for qemu-devel@nongnu.org; Thu, 17 May 2018 04:15:35 -0400 Received: from mx3-rdu2.redhat.com ([66.187.233.73]:50598 helo=mx1.redhat.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fJE4R-0002o4-ID; Thu, 17 May 2018 04:15:31 -0400 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id E8BE2402242D; Thu, 17 May 2018 08:15:30 +0000 (UTC) Received: from t460s.redhat.com (ovpn-117-24.ams2.redhat.com [10.36.117.24]) by smtp.corp.redhat.com (Postfix) with ESMTP id CE3412166BAD; Thu, 17 May 2018 08:15:27 +0000 (UTC) From: David Hildenbrand To: qemu-devel@nongnu.org Date: Thu, 17 May 2018 10:15:13 +0200 Message-Id: <20180517081527.14410-1-david@redhat.com> X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.6]); Thu, 17 May 2018 08:15:30 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.6]); Thu, 17 May 2018 08:15:30 +0000 (UTC) for IP:'10.11.54.6' DOMAIN:'int-mx06.intmail.prod.int.rdu2.redhat.com' HELO:'smtp.corp.redhat.com' FROM:'david@redhat.com' RCPT:'' X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 66.187.233.73 Subject: [Qemu-devel] [PATCH v4 00/14] MemoryDevice: use multi stage hotplug handlers X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Pankaj Gupta , Eduardo Habkost , "Michael S . Tsirkin" , Cornelia Huck , David Hildenbrand , Markus Armbruster , Alexander Graf , Christian Borntraeger , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Paolo Bonzini , Marcel Apfelbaum , Igor Mammedov , Luiz Capitulino , David Gibson , Richard Henderson Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" We can have devices that need certain other resources that are e.g. system resources managed by the machine. We need a clean way to assign these resources (without violating layers as brought up by Igor). One example is virtio-mem/virtio-pmem. Both device types need to be assigned some region in guest physical address space. This device memory belongs to the machine and is managed by it. However, virito devices are hotplugged using the hotplug handler their proxy device implements. So we could trigger e.g. a PCI hotplug handler for virtio-pci or a CSS/CCW hotplug handler for virtio-ccw. But definetly not the machine. Now, we can route other devices through the machine hotplug handler, to properly assign/unassign resources - like a portion in guest physical address space. v3 -> v4: - Removed the s390x bits, will send that out separately (was just a proof that it works just fine with s390x) - Fixed a typo and reworded a comment v2 -> v3: - Added "memory-device: introduce separate config option" - Dropped "parent_bus" check from hotplug handler lookup functions - "Handly" -> "Handle" in patch description. v1 -> v2: - Use multi stage hotplug handler instead of resource handler - MemoryDevices only compiled if necessary (CONFIG_MEM_HOTPLUG) - Prepare PC/SPAPR machines properly for multi stage hotplug handlers - Route SPAPR unplug code via the hotunplug handler - Directly include s390x support. But there are no usable memory devices yet (well, only my virtio-mem prototype) - Included "memory-device: drop assert related to align and start of address space" David Hildenbrand (13): memory-device: drop assert related to align and start of address space memory-device: introduce separate config option pc: prepare for multi stage hotplug handlers pc: route all memory devices through the machine hotplug handler spapr: prepare for multi stage hotplug handlers spapr: route all memory devices through the machine hotplug handler spapr: handle pc-dimm unplug via hotplug handler chain spapr: handle cpu core unplug via hotplug handler chain memory-device: new functions to handle plug/unplug pc-dimm: implement new memory device functions memory-device: factor out pre-plug into hotplug handler memory-device: factor out unplug into hotplug handler memory-device: factor out plug into hotplug handler Igor Mammedov (1): qdev: let machine hotplug handler to override bus hotplug handler default-configs/i386-softmmu.mak | 3 +- default-configs/ppc64-softmmu.mak | 3 +- default-configs/x86_64-softmmu.mak | 3 +- hw/Makefile.objs | 2 +- hw/core/qdev.c | 6 +- hw/i386/pc.c | 102 ++++++++++++++++++++++------- hw/mem/Makefile.objs | 4 +- hw/mem/memory-device.c | 129 +++++++++++++++++++++++-------------- hw/mem/pc-dimm.c | 48 ++++++-------- hw/mem/trace-events | 4 +- hw/ppc/spapr.c | 129 +++++++++++++++++++++++++++++++------ include/hw/mem/memory-device.h | 21 ++++-- include/hw/mem/pc-dimm.h | 3 +- include/hw/qdev-core.h | 11 ++++ qapi/misc.json | 2 +- 15 files changed, 330 insertions(+), 140 deletions(-)