From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [63.128.21.124]) by mx.groups.io with SMTP id smtpd.web11.36619.1610989796532269290 for ; Mon, 18 Jan 2021 09:09:56 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=OdQgmgTk; spf=pass (domain: redhat.com, ip: 63.128.21.124, mailfrom: lersek@redhat.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1610989795; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=13HFFMBeWpzMnAWG+Ofuo38RnRXJKK+YcPL3k/bAr6k=; b=OdQgmgTkRjfBSdWyWNI+ygSkTFIkEbwW/fmJEr3IyKHG38vtABGLlGjadDSu98PFvjMbbl ZMubYijge0aqqT8+EKiNi0UWdxL3peoDEw62agUTDy0s8JhCneqAoA9MT4CFKbxO1hHrQl c+gP85bk5Ue2/hwKjpJAmZWmndAvxhA= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-552-WeAOHoVJOMmfTZziIKb7bg-1; Mon, 18 Jan 2021 12:09:51 -0500 X-MC-Unique: WeAOHoVJOMmfTZziIKb7bg-1 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id CA2671015C87; Mon, 18 Jan 2021 17:09:50 +0000 (UTC) Received: from lacos-laptop-7.usersys.redhat.com (ovpn-112-48.ams2.redhat.com [10.36.112.48]) by smtp.corp.redhat.com (Postfix) with ESMTP id 9B9D41001281; Mon, 18 Jan 2021 17:09:49 +0000 (UTC) Subject: Re: [edk2-devel] [PATCH v4 0/9] support CPU hot-unplug To: devel@edk2.groups.io, ankur.a.arora@oracle.com Cc: imammedo@redhat.com, boris.ostrovsky@oracle.com References: <20210118063457.358581-1-ankur.a.arora@oracle.com> From: "Laszlo Ersek" Message-ID: Date: Mon, 18 Jan 2021 18:09:48 +0100 MIME-Version: 1.0 In-Reply-To: <20210118063457.358581-1-ankur.a.arora@oracle.com> X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=lersek@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit On 01/18/21 07:34, Ankur Arora wrote: > Hi, > > This series adds support for CPU hot-unplug with OVMF. > > Please see this in conjunction with the QEMU secureboot hot-unplug v2 > series posted here (now upstreamed): > https://lore.kernel.org/qemu-devel/20201207140739.3829993-1-imammedo@redhat.com/ > > Patches 1 and 3, > ("OvmfPkg/CpuHotplugSmm: refactor hotplug logic") > ("OvmfPkg/CpuHotplugSmm: add Qemu Cpu Status helper") > are either refactors or add support functions. > > OvmfPkg/CpuHotplugSmm: introduce UnplugCpus() > OvmfPkg/CpuHotplugSmm: add CpuEject() > OvmfPkg/CpuHotplugSmm: add worker to do CPU ejection > > Patch 2 and 9, > ("OvmfPkg/CpuHotplugSmm: collect hot-unplug events") > ("OvmfPkg/SmmControl2Dxe: negotiate CPU hot-unplug") > handle the QEMU protocol logic for collection of CPU hot-unplug events > or the protocol negotiation. > > Patch 4, > ("OvmfPkg/CpuHotplugSmm: introduce UnplugCpus()") > adds the MMI logic for CPU hot-unplug handling and informing > the PiSmmCpuDxeSmm of CPU removal. > > Patches 5 and 6, > ("OvmfPkg/CpuHotplugSmm: define CPU_HOT_EJECT_DATA") > ("OvmfPkg/SmmCpuFeaturesLib: init CPU ejection state") > sets up state for doing the CPU ejection as part of hot-unplug. > > Patches 7, and 8, > ("OvmfPkg/CpuHotplugSmm: introduce UnplugCpus()") > ("OvmfPkg/CpuHotplugSmm: add worker to do CPU ejection") > add the CPU ejection logic. > > Testing (with QEMU 5.2.50): > - Stable with randomized CPU plug/unplug (guest maxcpus=1,8,128) > - Synthetic tests with simultaneous multi CPU hot-unplug > - Negotiation with/without CPU hotplug enabled > > Also at: > github.com/terminus/edk2/ hot-unplug-v4 > > Changelog: > v4: > - Gets rid of unnecessary UefiCpuPkg changes > > v3: > - Use a saner PCD based interface to share state between PiSmmCpuDxeSmm > and OvmfPkg/CpuHotplugSmm > - Cleaner split of the hot-unplug code > URL: https://patchew.org/EDK2/20210115074533.277448-1-ankur.a.arora@oracle.com/ > > v2: > - Do the ejection via SmmCpuFeaturesRendezvousExit() > URL: https://patchew.org/EDK2/20210107195515.106158-1-ankur.a.arora@oracle.com/ > > RFC: > URL: https://patchew.org/EDK2/20201208053432.2690694-1-ankur.a.arora@oracle.com/ > > > Please review. I've got this series in my review queue (confirming). I'd like to finish review on the series first, since that's what I've got mostly in my mind at this point. I hope to start reviewing the unplug series in a few days. Thanks Laszlo > > Thanks > Ankur > > Ankur Arora (9): > OvmfPkg/CpuHotplugSmm: refactor hotplug logic > OvmfPkg/CpuHotplugSmm: collect hot-unplug events > OvmfPkg/CpuHotplugSmm: add Qemu Cpu Status helper > OvmfPkg/CpuHotplugSmm: introduce UnplugCpus() > OvmfPkg/CpuHotplugSmm: define CPU_HOT_EJECT_DATA > OvmfPkg/SmmCpuFeaturesLib: init CPU ejection state > OvmfPkg/CpuHotplugSmm: add CpuEject() > OvmfPkg/CpuHotplugSmm: add worker to do CPU ejection > OvmfPkg/SmmControl2Dxe: negotiate CPU hot-unplug > > OvmfPkg/CpuHotplugSmm/CpuHotplug.c | 435 ++++++++++++++++----- > OvmfPkg/CpuHotplugSmm/CpuHotplugSmm.inf | 1 + > OvmfPkg/CpuHotplugSmm/QemuCpuhp.c | 58 ++- > OvmfPkg/CpuHotplugSmm/QemuCpuhp.h | 6 + > OvmfPkg/Include/IndustryStandard/QemuCpuHotplug.h | 2 + > OvmfPkg/Include/Library/CpuHotEjectData.h | 31 ++ > .../Library/SmmCpuFeaturesLib/SmmCpuFeaturesLib.c | 62 +++ > .../SmmCpuFeaturesLib/SmmCpuFeaturesLib.inf | 3 + > OvmfPkg/OvmfPkg.dec | 6 + > OvmfPkg/SmmControl2Dxe/SmiFeatures.c | 25 +- > 10 files changed, 527 insertions(+), 102 deletions(-) > create mode 100644 OvmfPkg/Include/Library/CpuHotEjectData.h >