From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from aserp2120.oracle.com (aserp2120.oracle.com [141.146.126.78]) by mx.groups.io with SMTP id smtpd.web12.30042.1610951703970408498 for ; Sun, 17 Jan 2021 22:35:04 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@oracle.com header.s=corp-2020-01-29 header.b=NvlWuo6N; spf=pass (domain: oracle.com, ip: 141.146.126.78, mailfrom: ankur.a.arora@oracle.com) Received: from pps.filterd (aserp2120.oracle.com [127.0.0.1]) by aserp2120.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 10I6YaZQ093431; Mon, 18 Jan 2021 06:35:03 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : mime-version : content-transfer-encoding; s=corp-2020-01-29; bh=ppww2N9uYfDug65Liqz7PX5prr3eWSnipvhbiwEHF30=; b=NvlWuo6NvzL1fwiP2voJ7oMOc0H4Sa+hMzY2Q/lnRJ56Dg7oCaqic7L2TomDrigpsh1t 6AvtAlZhNB2LMBcQjmPAdJQxnZG6Y/hNm+2qGxdmzpp45LWF+/0b7Qr0V7MCcVMI8EV1 tkQKMcu8DW9IboTnO7QoiCwm8hX+IuXUPs1NeRDv1o+wsmWcOC2jAxgXKfV8bKvCkgpp mG0UytevqLEDnF8bs5aP3vMPc/cCJQYZ9KHYfS9WXuxg/Uso1fZLd7iNebmlQwZK2Hwk g8n3igYAekc8SWS0BpUKPER9VZXZ35q4TAYlgwS7+LyUpE2Xik4gqs043Grl2DSIVhgp 3w== Received: from aserp3020.oracle.com (aserp3020.oracle.com [141.146.126.70]) by aserp2120.oracle.com with ESMTP id 363r3kkm54-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 18 Jan 2021 06:35:02 +0000 Received: from pps.filterd (aserp3020.oracle.com [127.0.0.1]) by aserp3020.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 10I6TvuX099071; Mon, 18 Jan 2021 06:35:02 GMT Received: from userv0121.oracle.com (userv0121.oracle.com [156.151.31.72]) by aserp3020.oracle.com with ESMTP id 364a1vywha-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 18 Jan 2021 06:35:02 +0000 Received: from abhmp0016.oracle.com (abhmp0016.oracle.com [141.146.116.22]) by userv0121.oracle.com (8.14.4/8.13.8) with ESMTP id 10I6Z1Rr010330; Mon, 18 Jan 2021 06:35:01 GMT Received: from prion.us.oracle.com (/10.159.226.191) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Sun, 17 Jan 2021 22:35:00 -0800 From: "Ankur Arora" To: devel@edk2.groups.io Cc: lersek@redhat.com, imammedo@redhat.com, boris.ostrovsky@oracle.com, Ankur Arora Subject: [PATCH v4 0/9] support CPU hot-unplug Date: Sun, 17 Jan 2021 22:34:48 -0800 Message-Id: <20210118063457.358581-1-ankur.a.arora@oracle.com> X-Mailer: git-send-email 2.25.4 MIME-Version: 1.0 X-Proofpoint-Virus-Version: vendor=nai engine=6000 definitions=9867 signatures=668683 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 malwarescore=0 adultscore=0 mlxscore=0 spamscore=0 suspectscore=0 mlxlogscore=999 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2009150000 definitions=main-2101180038 X-Proofpoint-Virus-Version: vendor=nai engine=6000 definitions=9867 signatures=668683 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 bulkscore=0 spamscore=0 clxscore=1015 lowpriorityscore=0 priorityscore=1501 mlxscore=0 malwarescore=0 phishscore=0 suspectscore=0 impostorscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2009150000 definitions=main-2101180038 Content-Transfer-Encoding: 8bit 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. 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 -- 2.9.3