From patchwork Tue Apr 9 10:29:27 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shameerali Kolothum Thodi X-Patchwork-Id: 10890919 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id E2E8C1390 for ; Tue, 9 Apr 2019 10:32:34 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id D034B28868 for ; Tue, 9 Apr 2019 10:32:34 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id C40BE288A6; Tue, 9 Apr 2019 10:32:34 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI autolearn=ham version=3.3.1 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 606E628868 for ; Tue, 9 Apr 2019 10:32:34 +0000 (UTC) Received: from localhost ([127.0.0.1]:38728 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hDo3N-0007FG-Hp for patchwork-qemu-devel@patchwork.kernel.org; Tue, 09 Apr 2019 06:32:33 -0400 Received: from eggs.gnu.org ([209.51.188.92]:47685) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hDo1t-00062X-69 for qemu-devel@nongnu.org; Tue, 09 Apr 2019 06:31:02 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hDo1r-0007H9-Vy for qemu-devel@nongnu.org; Tue, 09 Apr 2019 06:31:01 -0400 Received: from szxga05-in.huawei.com ([45.249.212.191]:2258 helo=huawei.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hDo1o-0007Bx-GR; Tue, 09 Apr 2019 06:30:56 -0400 Received: from DGGEMS402-HUB.china.huawei.com (unknown [172.30.72.58]) by Forcepoint Email with ESMTP id 5C57B8640ACF8D4AC4B1; Tue, 9 Apr 2019 18:30:47 +0800 (CST) Received: from S00345302A-PC.china.huawei.com (10.202.227.237) by DGGEMS402-HUB.china.huawei.com (10.3.19.202) with Microsoft SMTP Server id 14.3.408.0; Tue, 9 Apr 2019 18:30:40 +0800 From: Shameer Kolothum To: , , , Date: Tue, 9 Apr 2019 11:29:27 +0100 Message-ID: <20190409102935.28292-1-shameerali.kolothum.thodi@huawei.com> X-Mailer: git-send-email 2.12.0.windows.1 MIME-Version: 1.0 X-Originating-IP: [10.202.227.237] X-CFilter-Loop: Reflected X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 45.249.212.191 Subject: [Qemu-devel] [PATCH v4 0/8] ARM virt: ACPI memory hotplug support 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: peter.maydell@linaro.org, sameo@linux.intel.com, ard.biesheuvel@linaro.org, linuxarm@huawei.com, xuwei5@hisilicon.com, shannon.zhaosl@gmail.com, sebastien.boeuf@intel.com, lersek@redhat.com Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" X-Virus-Scanned: ClamAV using ClamSMTP This series is an attempt to provide device memory hotplug support on ARM virt platform. This is based on Eric's recent works here[1] and carries some of the pc-dimm related patches dropped from his series. The kernel support for arm64 memory hot add was added recently by Robin and hence the guest kernel should be => 5.0-rc1. NVDIM support is not included currently as we still have an unresolved issue while hot adding NVDIMM[2]. However NVDIMM cold plug patches can be included, but not done for now, for keeping it simple. This makes use of GED device to sent hotplug ACPI events to the Guest. GED code is based on Nemu. Thanks to the efforts of Samuel and Sebastien to add the hardware-reduced support to Nemu using GED device[3]. (Please shout if I got the author/signed-off wrong for those patches or missed any names). This is sanity tested on a HiSilicon ARM64 platform and appreciate any further testing. Thanks, Shameer [1] https://patchwork.kernel.org/cover/10837565/ [2] https://patchwork.kernel.org/cover/10783589/ [3] https://github.com/intel/nemu/blob/topic/virt-x86/hw/acpi/ged.c v3 --> v4 Addressed comments from Igor and Eric, -Renamed "virt-acpi" to "acpi-ged". -Changed ged device parent to TYPE_DEVICE. -Introduced DT memory node property "hotpluggable" to resolve device memory being treated as early boot memory issue(patch #7). -Combined patches #3 and #9 from v3 into #3. v2 --> v3 Addressed comments from Igor and Eric, -Made virt acpi device platform independent and moved to hw/acpi/generic_event_device.c -Moved ged specific code into hw/acpi/generic_event_device.c -Introduced an opt-in feature "fdt" to resolve device-memory being treated as early boot memory. -Dropped patch #1 from v2. RFC --> v2 -Use GED device instead of GPIO for ACPI hotplug events. -Removed NVDIMM support for now. -Includes dropped patches from Eric's v9 series. Eric Auger (1): hw/arm/virt: Add memory hotplug framework Samuel Ortiz (2): hw/acpi: Do not create memory hotplug method when handler is not defined hw/acpi: Add ACPI Generic Event Device Support Shameer Kolothum (5): hw/acpi: Make ACPI IO address space configurable hw/arm/virt: Enable device memory cold/hot plug with ACPI boot hw/arm/virt-acpi-build: Add PC-DIMM in SRAT hw/arm/boot: Add "hotpluggable" property to DT memory node hw/arm/boot: Expose the PC-DIMM nodes in the DT default-configs/arm-softmmu.mak | 5 + hw/acpi/Kconfig | 4 + hw/acpi/Makefile.objs | 1 + hw/acpi/generic_event_device.c | 311 +++++++++++++++++++++++++++++++++ hw/acpi/memory_hotplug.c | 35 ++-- hw/arm/boot.c | 64 ++++++- hw/arm/virt-acpi-build.c | 18 ++ hw/arm/virt.c | 102 ++++++++++- hw/i386/acpi-build.c | 3 +- include/hw/acpi/generic_event_device.h | 121 +++++++++++++ include/hw/acpi/memory_hotplug.h | 9 +- include/hw/arm/virt.h | 4 + 12 files changed, 654 insertions(+), 23 deletions(-) create mode 100644 hw/acpi/generic_event_device.c create mode 100644 include/hw/acpi/generic_event_device.h