From patchwork Tue Aug 6 22:12:31 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yunhong Jiang X-Patchwork-Id: 13755379 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.8]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3B08E170A02; Tue, 6 Aug 2024 22:13:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.8 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1722982382; cv=none; b=b64fNpSbi5bxxwgmSgf1ZegXgAp3GS+CZ69PpYtHibSXS+XWeWSXzaJVCZqQQAcxKTo1JXZav33J6RK+74ym1TmIUQSM2+KSyaXB6/ocf5JvGlvbL7Pqk4Y3Gcz0tbClarwl+cVzC3zEb/kh5Ys0JYW9Vxl1MNDsjEs+Yzvf1UU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1722982382; c=relaxed/simple; bh=q6cecAe5n2ojTi6IvNZq7/UciZod0Y7dSn3+dmBOoek=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=lksn3HR8z8J09l1nwMXhUxYGB4AqkGQhr6w9oncCesh1o1GCW621QR7qs/an23utKM/5044sbg+D/KQ1N0x659Y0PiNSxia8Ca0UTOAz9cB69bhCBHb5+eJyfY7bgfVapnexHqpp5HlhRfN6B2yKYFJj0zoiUfcqvSEhDl0avac= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=none smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=cHNlcKMB; arc=none smtp.client-ip=192.198.163.8 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="cHNlcKMB" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1722982381; x=1754518381; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=q6cecAe5n2ojTi6IvNZq7/UciZod0Y7dSn3+dmBOoek=; b=cHNlcKMBbh/tc7Dga60d3id6AeSeBfHjiJy2Sb1Y5slG0Ul74qE9n76p uYe5XrxWLNiKZETCdv4XqYBFJH3tlxNtccGfUnHcFEaI9+chkVnTon2me t1G0esghIa6EzXLGOH/HgLSFiCbRdJ4Xji4xE/o+wGpoNEXmrQ2UWLMsS gudOQwx5GUUh86z8cjUuuWNvozcxL+X5ymsqXciU5V/Mgd/lEJL7uUpZT aM+U+JibGfjWlOnoo0roEqCejlRCj/chcUhQXmQqmQOBM5edClO1rDjk3 JiQPkC7HRb2byEWyZ7XXLI+BKjb8WbYHyqKAZAUq5EzNn7iyh6+BiLODr Q==; X-CSE-ConnectionGUID: 23TdF8Q0TgW36eoie6Qh1A== X-CSE-MsgGUID: 5PfFb55XTbawz2MWvTVEhg== X-IronPort-AV: E=McAfee;i="6700,10204,11156"; a="38534359" X-IronPort-AV: E=Sophos;i="6.09,268,1716274800"; d="scan'208";a="38534359" Received: from orviesa003.jf.intel.com ([10.64.159.143]) by fmvoesa102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Aug 2024 15:13:01 -0700 X-CSE-ConnectionGUID: BNXLwhFOSlmL58JeW1fA7w== X-CSE-MsgGUID: d9ETNo7qT/Cc9esscxuzwA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.09,268,1716274800"; d="scan'208";a="61465621" Received: from yjiang5-dev1.sc.intel.com ([172.25.103.134]) by orviesa003.jf.intel.com with ESMTP; 06 Aug 2024 15:13:00 -0700 From: Yunhong Jiang To: tglx@linutronix.de, mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com, x86@kernel.org, hpa@zytor.com, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, kys@microsoft.com, haiyangz@microsoft.com, wei.liu@kernel.org, decui@microsoft.com, rafael@kernel.org, lenb@kernel.org, kirill.shutemov@linux.intel.com Cc: linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-hyperv@vger.kernel.org, linux-acpi@vger.kernel.org, yunhong.jiang@linux.intel.com Subject: [PATCH 1/7] x86/acpi: Move ACPI MADT wakeup to generic code Date: Tue, 6 Aug 2024 15:12:31 -0700 Message-Id: <20240806221237.1634126-2-yunhong.jiang@linux.intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240806221237.1634126-1-yunhong.jiang@linux.intel.com> References: <20240806221237.1634126-1-yunhong.jiang@linux.intel.com> Precedence: bulk X-Mailing-List: linux-acpi@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 In order to support the ACPI mailbox wakeup in device tree, move the MADT wakeup code out of the acpi directory, so that both ACPI and device tree can use it. Signed-off-by: Yunhong Jiang --- MAINTAINERS | 2 ++ arch/x86/kernel/Makefile | 1 + arch/x86/kernel/acpi/Makefile | 1 - arch/x86/kernel/{acpi => }/madt_playdead.S | 0 arch/x86/kernel/{acpi => }/madt_wakeup.c | 0 5 files changed, 3 insertions(+), 1 deletion(-) rename arch/x86/kernel/{acpi => }/madt_playdead.S (100%) rename arch/x86/kernel/{acpi => }/madt_wakeup.c (100%) diff --git a/MAINTAINERS b/MAINTAINERS index eebc4fa2ab9a..6cc6d5c367df 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -289,6 +289,8 @@ F: Documentation/ABI/testing/configfs-acpi F: Documentation/ABI/testing/sysfs-bus-acpi F: Documentation/firmware-guide/acpi/ F: arch/x86/kernel/acpi/ +F: arch/x86/kernel/madt_playdead.S +F: arch/x86/kernel/madt_wakeup.c F: arch/x86/pci/acpi.c F: drivers/acpi/ F: drivers/pci/*/*acpi* diff --git a/arch/x86/kernel/Makefile b/arch/x86/kernel/Makefile index a847180836e4..b2de8a4698c3 100644 --- a/arch/x86/kernel/Makefile +++ b/arch/x86/kernel/Makefile @@ -155,4 +155,5 @@ ifeq ($(CONFIG_X86_64),y) obj-$(CONFIG_MMCONF_FAM10H) += mmconf-fam10h_64.o obj-y += vsmp_64.o + obj-$(CONFIG_ACPI_MADT_WAKEUP) += madt_wakeup.o madt_playdead.o endif diff --git a/arch/x86/kernel/acpi/Makefile b/arch/x86/kernel/acpi/Makefile index 842a5f449404..fc17b3f136fe 100644 --- a/arch/x86/kernel/acpi/Makefile +++ b/arch/x86/kernel/acpi/Makefile @@ -4,7 +4,6 @@ obj-$(CONFIG_ACPI) += boot.o obj-$(CONFIG_ACPI_SLEEP) += sleep.o wakeup_$(BITS).o obj-$(CONFIG_ACPI_APEI) += apei.o obj-$(CONFIG_ACPI_CPPC_LIB) += cppc.o -obj-$(CONFIG_ACPI_MADT_WAKEUP) += madt_wakeup.o madt_playdead.o ifneq ($(CONFIG_ACPI_PROCESSOR),) obj-y += cstate.o diff --git a/arch/x86/kernel/acpi/madt_playdead.S b/arch/x86/kernel/madt_playdead.S similarity index 100% rename from arch/x86/kernel/acpi/madt_playdead.S rename to arch/x86/kernel/madt_playdead.S diff --git a/arch/x86/kernel/acpi/madt_wakeup.c b/arch/x86/kernel/madt_wakeup.c similarity index 100% rename from arch/x86/kernel/acpi/madt_wakeup.c rename to arch/x86/kernel/madt_wakeup.c From patchwork Tue Aug 6 22:12:32 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yunhong Jiang X-Patchwork-Id: 13755380 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.8]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 47AD0171658; Tue, 6 Aug 2024 22:13:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.8 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1722982384; cv=none; b=NQsiCqVEGwihI+ZegERAi1obDo1+j7lMSaxwglqclYd8raA1ETc/52I9ArW84OryPMT/OOkGUtFgjpU65Fzu/KUf7TpNNgHuyGXSJvuTVArUSgQqoKIQZ2OsxTYAB1k/NHwJ3Azh/8JWn0E79igoh9bSwOZbx66lqLVu5C6H/pA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1722982384; c=relaxed/simple; bh=+aj49VLk6JdinOkdJmhZB5zTeiU2ZPgnDn7C3ioCimc=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=btfyYnXCh528TA2WHT5J+gHg6Rt2BfP7qwW41Leuc1evtM8mRa1pAFE+EXB8pgQ02P56gQLgaoHp5u6sVN4IBFIL2he0O+7DM9FowUF9/TJJ+iKTnXJIYy4J8lrTirUj+3vS09wQxqc350N2B95CqwLABMXis2WzeVt3dAFXc5I= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=none smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=huLaEt/y; arc=none smtp.client-ip=192.198.163.8 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="huLaEt/y" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1722982382; x=1754518382; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=+aj49VLk6JdinOkdJmhZB5zTeiU2ZPgnDn7C3ioCimc=; b=huLaEt/yccy5Gl/qkYunBbljmWB38in1hduUytxSWXt1/zBMjjQJhpwU oxXYGAFLmjUKFQpgIYm3rSQAgPRb3aMvDVWiOSI717xs6TLwv9lGOalq1 sjI4BltSaT1t9/J8YjZEFO8DqXrsjpD+g9VSPu9VTMDRwPP0jO6np+023 5xg3AnUqQEGSjJO2RU/zKEoe2OOSSWoayl+r2AvmkNNa6MIe+xJtqonrJ 9GOOH4Yxj5mwcxbwMn/1wqykmHMUvSi+MECAX4xE6yWPoEDP3bhkwJzfl hREVbyQ3Og4Qg0GNwcsjRX6VZe+y6XohK6fcmGkfFTI9Mjx11GS3I2Dik Q==; X-CSE-ConnectionGUID: ikSI7s0QRcW4DNB5vvrJ0Q== X-CSE-MsgGUID: Ly+IcOyVQqOG4cgpwV72Yw== X-IronPort-AV: E=McAfee;i="6700,10204,11156"; a="38534369" X-IronPort-AV: E=Sophos;i="6.09,268,1716274800"; d="scan'208";a="38534369" Received: from orviesa003.jf.intel.com ([10.64.159.143]) by fmvoesa102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Aug 2024 15:13:02 -0700 X-CSE-ConnectionGUID: kBYtrCfKQkGlGqUR2vOz3w== X-CSE-MsgGUID: FxPDqP/IT9i1EItM9nW9yw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.09,268,1716274800"; d="scan'208";a="61465626" Received: from yjiang5-dev1.sc.intel.com ([172.25.103.134]) by orviesa003.jf.intel.com with ESMTP; 06 Aug 2024 15:13:01 -0700 From: Yunhong Jiang To: tglx@linutronix.de, mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com, x86@kernel.org, hpa@zytor.com, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, kys@microsoft.com, haiyangz@microsoft.com, wei.liu@kernel.org, decui@microsoft.com, rafael@kernel.org, lenb@kernel.org, kirill.shutemov@linux.intel.com Cc: linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-hyperv@vger.kernel.org, linux-acpi@vger.kernel.org, yunhong.jiang@linux.intel.com Subject: [PATCH 2/7] dt-bindings: x86: Add ACPI wakeup mailbox Date: Tue, 6 Aug 2024 15:12:32 -0700 Message-Id: <20240806221237.1634126-3-yunhong.jiang@linux.intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240806221237.1634126-1-yunhong.jiang@linux.intel.com> References: <20240806221237.1634126-1-yunhong.jiang@linux.intel.com> Precedence: bulk X-Mailing-List: linux-acpi@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Add the binding to use the ACPI wakeup mailbox mechanism to bringup APs. Signed-off-by: Yunhong Jiang --- .../devicetree/bindings/x86/wakeup.yaml | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 Documentation/devicetree/bindings/x86/wakeup.yaml diff --git a/Documentation/devicetree/bindings/x86/wakeup.yaml b/Documentation/devicetree/bindings/x86/wakeup.yaml new file mode 100644 index 000000000000..8af40dcdb592 --- /dev/null +++ b/Documentation/devicetree/bindings/x86/wakeup.yaml @@ -0,0 +1,41 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 + +$id: http://devicetree.org/schemas/x86/wakeup.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: x86 acpi wakeup mailbox + +description: | + +This document describes the "acpi-wakeup-mailbox" method for enabling secondary +CPUs. + +The ACPI spec defines a mechanism to let the bootstrap processor wake up +application processors with a mailbox. The "acpi-wakeup-mailbox" enable-method +follows the "Multiprocessor Wakeup Mailbox Structure" defined in the ACPI +spec[1]. + +Since the ACPI mailbox structure is shared by all the CPUs, this enable method +applies to all CPUs and should be defined in the "cpus" node and should not be +defined on each "cpu" node. + +select: false + +properties: + wakeup-mailbox-addr: + $ref: /schemas/types.yaml#/definitions/uint64 + description: | + The physical address of the wakeup mailbox data structure. The address must + meet the ACPI spec requirement, like be 4K bytes aligned and it should be in + the reserved memory. + + wakeup-mailbox-version: + $ref: /schemas/types.yaml#/definitions/uint64 + description: | + The MailBoxVersion defined in the ACPI spec that this binding follows. + +required: + - wakeup-mailbox-addr + +[1] https://uefi.org/htmlspecs/ACPI_Spec_6_4_html/05_ACPI_Software_Programming_Model/ACPI_Software_Programming_Model.html#multiprocessor-wakeup-structure From patchwork Tue Aug 6 22:12:33 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yunhong Jiang X-Patchwork-Id: 13755381 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.8]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A3DAE17557C; Tue, 6 Aug 2024 22:13:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.8 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1722982385; cv=none; b=efz85EGT89+Oe6dSVKlIuimo5HlELsO6PEBCs+fLBFjnEN9aZr4e4iB5lYDgiQ0c1VqzChZx39zgPmGB+gnAAFoemslptxRw3goTfXZ8yPdAc0mdj5e8k3+FLZmZZLer1QNiIJ7K6+vq8GaEVSsJmNZ3+9LQ/ciGmx1mu48wg9M= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1722982385; c=relaxed/simple; bh=JEd2GxiAIny6JtBY2mtFnm7gnPkCETwQcwUHua+Mxsg=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=ZdADQ/xwG+GKLEe2pui3F5uyljAZJjyiLpyHx3AQ4QFI1qXeglUq3STw6jVxS743fThsC2fwZ2doICKcEuuJu01+5BYK/l5KtgZXHUXFOV5PlhkHJG22PwINd5JQ87yK84ww8zcwuCUeTmowda6q0kJDcX1hq20EbSZYPk6+Gs4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=none smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=a4/bV4uJ; arc=none smtp.client-ip=192.198.163.8 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="a4/bV4uJ" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1722982384; x=1754518384; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=JEd2GxiAIny6JtBY2mtFnm7gnPkCETwQcwUHua+Mxsg=; b=a4/bV4uJWEKQYqQF+aWkBjSfqxO5jcMXd6njUmLu/NmDYHNCorqKRWfy /GOJJbHIlgmfd3n/4YO4FEK31rWmj5blVbYk4O9CqKMNe0UtYg/WGWytk hIrpyQhXlqVZGwVXv/JDWSyvvR8Iu5MBF2tuY0Nrjm2oxe/qvGp4YgPkJ 45MZwQeC/KMLhdDbKrvNiddb+opSL8Wh8dg+8NPBdChkftYjUBhfcqSiA oiNa50FFfMC7fjnx1y50TSRQY4XT2Ycnd6TSl2Oml3Z1FwuuIu+OxnNPm 1VkuQKlGfbzMSpOzeuwLdlA365d91Q0+8PyyYamoMNSJ7Nb9/vmqcUr/k A==; X-CSE-ConnectionGUID: +dNNqzRvT86qUozZiIDAzQ== X-CSE-MsgGUID: 4KvToao5S7uyUUlXYCrhcg== X-IronPort-AV: E=McAfee;i="6700,10204,11156"; a="38534380" X-IronPort-AV: E=Sophos;i="6.09,268,1716274800"; d="scan'208";a="38534380" Received: from orviesa003.jf.intel.com ([10.64.159.143]) by fmvoesa102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Aug 2024 15:13:03 -0700 X-CSE-ConnectionGUID: z7J3GVN8TxmZkz4i+gb0nQ== X-CSE-MsgGUID: 6q4aD9QxRRe9A7ACdXaZcw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.09,268,1716274800"; d="scan'208";a="61465629" Received: from yjiang5-dev1.sc.intel.com ([172.25.103.134]) by orviesa003.jf.intel.com with ESMTP; 06 Aug 2024 15:13:02 -0700 From: Yunhong Jiang To: tglx@linutronix.de, mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com, x86@kernel.org, hpa@zytor.com, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, kys@microsoft.com, haiyangz@microsoft.com, wei.liu@kernel.org, decui@microsoft.com, rafael@kernel.org, lenb@kernel.org, kirill.shutemov@linux.intel.com Cc: linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-hyperv@vger.kernel.org, linux-acpi@vger.kernel.org, yunhong.jiang@linux.intel.com Subject: [PATCH 3/7] x86/dt: Support the ACPI multiprocessor wakeup for device tree Date: Tue, 6 Aug 2024 15:12:33 -0700 Message-Id: <20240806221237.1634126-4-yunhong.jiang@linux.intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240806221237.1634126-1-yunhong.jiang@linux.intel.com> References: <20240806221237.1634126-1-yunhong.jiang@linux.intel.com> Precedence: bulk X-Mailing-List: linux-acpi@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 When a TDX guest boots with the device tree instead of ACPI, it can reuse the ACPI multiprocessor wakeup mechanism to wake up application processors(AP), without introducing a new mechanism from scrach. In the ACPI spec, two structures are defined to wake up the APs: the multiprocessor wakeup structure and the multiprocessor wakeup mailbox structure. The multiprocessor wakeup structure is passed to OS through a Multiple APIC Description Table(MADT), one field specifying the physical address of the multiprocessor wakeup mailbox structure. The OS sends a message to firmware through the multiprocessor wakeup mailbox structure, to bring up the APs. In device tree environment, the multiprocessor wakeup structure is not used, to reduce the dependency on the generic ACPI table. The information defined in this structure is defined in the properties of cpus node in the device tree. The "wakeup-mailbox-addr" property specifies the physical address of the multiprocessor wakeup mailbox structure. The OS will follow the ACPI spec to send the message to the firmware to bring up the APs. Signed-off-by: Yunhong Jiang --- MAINTAINERS | 1 + arch/x86/Kconfig | 2 +- arch/x86/include/asm/acpi.h | 1 - arch/x86/include/asm/madt_wakeup.h | 16 ++++++++++ arch/x86/kernel/madt_wakeup.c | 47 ++++++++++++++++++++++++++++-- 5 files changed, 63 insertions(+), 4 deletions(-) create mode 100644 arch/x86/include/asm/madt_wakeup.h diff --git a/MAINTAINERS b/MAINTAINERS index 6cc6d5c367df..de3eaa0fdaaa 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -288,6 +288,7 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm F: Documentation/ABI/testing/configfs-acpi F: Documentation/ABI/testing/sysfs-bus-acpi F: Documentation/firmware-guide/acpi/ +F: arch/x86/include/asm/madt_wakeup.h F: arch/x86/kernel/acpi/ F: arch/x86/kernel/madt_playdead.S F: arch/x86/kernel/madt_wakeup.c diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index 02775a61b557..e92dfefba675 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig @@ -1123,7 +1123,7 @@ config X86_LOCAL_APIC config ACPI_MADT_WAKEUP def_bool y depends on X86_64 - depends on ACPI + depends on ACPI || OF depends on SMP depends on X86_LOCAL_APIC diff --git a/arch/x86/include/asm/acpi.h b/arch/x86/include/asm/acpi.h index 21bc53f5ed0c..0e082303ca26 100644 --- a/arch/x86/include/asm/acpi.h +++ b/arch/x86/include/asm/acpi.h @@ -83,7 +83,6 @@ union acpi_subtable_headers; int __init acpi_parse_mp_wake(union acpi_subtable_headers *header, const unsigned long end); -void asm_acpi_mp_play_dead(u64 reset_vector, u64 pgd_pa); /* * Check if the CPU can handle C2 and deeper diff --git a/arch/x86/include/asm/madt_wakeup.h b/arch/x86/include/asm/madt_wakeup.h new file mode 100644 index 000000000000..faabf51c1e8f --- /dev/null +++ b/arch/x86/include/asm/madt_wakeup.h @@ -0,0 +1,16 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef __ASM_X86_MADT_WAKEUP_H +#define __ASM_X86_MADT_WAKEUP_H + +void asm_acpi_mp_play_dead(u64 reset_vector, u64 pgd_pa); + +#if defined(CONFIG_OF) && defined(CONFIG_ACPI_MADT_WAKEUP) +int dtb_parse_mp_wake(u64 *wake_mailbox_paddr); +#else +static inline int dtb_parse_mp_wake(u64 *wake_mailbox_paddr) +{ + return -ENODEV; +} +#endif + +#endif /* __ASM_X86_MADT_WAKEUP_H */ diff --git a/arch/x86/kernel/madt_wakeup.c b/arch/x86/kernel/madt_wakeup.c index 6cfe762be28b..f6795a6ab2d3 100644 --- a/arch/x86/kernel/madt_wakeup.c +++ b/arch/x86/kernel/madt_wakeup.c @@ -14,6 +14,8 @@ #include #include #include +#include +#include /* Physical address of the Multiprocessor Wakeup Structure mailbox */ static u64 acpi_mp_wake_mailbox_paddr __ro_after_init; @@ -122,7 +124,7 @@ static int __init init_transition_pgtable(pgd_t *pgd) return 0; } -static int __init acpi_mp_setup_reset(u64 reset_vector) +static int __init __maybe_unused acpi_mp_setup_reset(u64 reset_vector) { struct x86_mapping_info info = { .alloc_pgt_page = alloc_pgt_page, @@ -226,7 +228,7 @@ static int acpi_wakeup_cpu(u32 apicid, unsigned long start_ip) return 0; } -static void acpi_mp_disable_offlining(struct acpi_madt_multiproc_wakeup *mp_wake) +static void __maybe_unused acpi_mp_disable_offlining(struct acpi_madt_multiproc_wakeup *mp_wake) { cpu_hotplug_disable_offlining(); @@ -248,6 +250,7 @@ static void acpi_mp_disable_offlining(struct acpi_madt_multiproc_wakeup *mp_wake mp_wake->mailbox_address = 0; } +#ifdef CONFIG_ACPI int __init acpi_parse_mp_wake(union acpi_subtable_headers *header, const unsigned long end) { @@ -290,3 +293,43 @@ int __init acpi_parse_mp_wake(union acpi_subtable_headers *header, return 0; } +#endif /* CONFIG_ACPI */ + +#ifdef CONFIG_OF +int __init dtb_parse_mp_wake(u64 *wake_mailbox_paddr) +{ + struct device_node *node; + u64 mailaddr; + int ret = 0; + + node = of_find_node_by_path("/cpus"); + if (!node) + return -ENODEV; + + if (of_property_match_string(node, "enable-method", + "acpi-wakeup-mailbox") < 0) { + pr_err("No acpi wakeup mailbox enable-method\n"); + ret = -ENODEV; + goto done; + } + + /* + * No support to the MADT reset vector yet. + */ + cpu_hotplug_disable_offlining(); + + if (of_property_read_u64(node, "wakeup-mailbox-addr", &mailaddr)) { + pr_err("Invalid wakeup mailbox addr\n"); + ret = -EINVAL; + goto done; + } + acpi_mp_wake_mailbox_paddr = mailaddr; + if (wake_mailbox_paddr) + *wake_mailbox_paddr = mailaddr; + pr_info("dt wakeup-mailbox: addr 0x%llx\n", mailaddr); + apic_update_callback(wakeup_secondary_cpu_64, acpi_wakeup_cpu); +done: + of_node_put(node); + return ret; +} +#endif /* CONFIG_OF */ From patchwork Tue Aug 6 22:12:34 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yunhong Jiang X-Patchwork-Id: 13755382 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.8]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E2E7F176228; Tue, 6 Aug 2024 22:13:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.8 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1722982386; cv=none; b=F7roBaXvUxtP6/E3GNdupXUruNL1ODdP6+OBM8xxX1K2U8MyeW2xjh4oYi1oI3B6cykFzL51ACw1abXn+LT4APMonlQSuXEhoTer8jbzQGA/8k3LyXGAF4T6quzoec8uh4nnaoAyLg9LbiSz1193miE7ooNENZCDMjdXKbxwGIg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1722982386; c=relaxed/simple; bh=Kcr+zIFCcu9xq2oIvAWbPmfklwzJtO91yB0E+DYT+P0=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=REoWJ5k2KyiAeqJ9qiIzHzWrquL7XFQdhNC2lufLsgkiM/+p2xxBdEVp4MeM1kOUyj/qsubbn9iOE4hjQinPM2rkZw0L7+Eu8JWTB26+HASYbw9uJRtK1dw7lBrTGgS1gmO9Xhc15cff5WELYZxBcN7tOCFo/+VhIZ1G0YWxr0c= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=none smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=dG8QgZrB; arc=none smtp.client-ip=192.198.163.8 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="dG8QgZrB" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1722982385; x=1754518385; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Kcr+zIFCcu9xq2oIvAWbPmfklwzJtO91yB0E+DYT+P0=; b=dG8QgZrBJORrv426BHIVS4b0BJREkwdFq9MGvS1D0zu/kPg7nLKMH4oG kDrJt2KxN8NyB9xSR+i1Myze0L9Hrs/LKY1nNirSTI6R/mjq4JSmbKZ/7 twKleHAfW8c3aJYBqI4JegUlniVfei+jsJ5QQLaU5sW0jYkRbhogQCjsu /varweTKne3fasFDLb2yvVLKU/49t1kuvIprP6bY1oa9RX2VvXANx1D6R gTnOmU9nqXNcIFPwZYaWslCe/d7fHaRk1fogogYOBRegXI3IYCpBb0zgJ Fgb+1w/X/B614hanXFEEhuSEBxqZbRknxbQw3wtzyPPGQ1Cp3jY3HGRuF A==; X-CSE-ConnectionGUID: sdfBZ8c9QHetg6kQYTdDqQ== X-CSE-MsgGUID: /jX6bratSFCu94Z3VqPQ6Q== X-IronPort-AV: E=McAfee;i="6700,10204,11156"; a="38534392" X-IronPort-AV: E=Sophos;i="6.09,268,1716274800"; d="scan'208";a="38534392" Received: from orviesa003.jf.intel.com ([10.64.159.143]) by fmvoesa102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Aug 2024 15:13:05 -0700 X-CSE-ConnectionGUID: vVID3HzgTJyqVGOV7O7HSA== X-CSE-MsgGUID: JXr4sURzQkK4Eo//cCQ5qw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.09,268,1716274800"; d="scan'208";a="61465637" Received: from yjiang5-dev1.sc.intel.com ([172.25.103.134]) by orviesa003.jf.intel.com with ESMTP; 06 Aug 2024 15:13:04 -0700 From: Yunhong Jiang To: tglx@linutronix.de, mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com, x86@kernel.org, hpa@zytor.com, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, kys@microsoft.com, haiyangz@microsoft.com, wei.liu@kernel.org, decui@microsoft.com, rafael@kernel.org, lenb@kernel.org, kirill.shutemov@linux.intel.com Cc: linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-hyperv@vger.kernel.org, linux-acpi@vger.kernel.org, yunhong.jiang@linux.intel.com Subject: [PATCH 4/7] x86/hyperv: Parse the ACPI wakeup mailbox Date: Tue, 6 Aug 2024 15:12:34 -0700 Message-Id: <20240806221237.1634126-5-yunhong.jiang@linux.intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240806221237.1634126-1-yunhong.jiang@linux.intel.com> References: <20240806221237.1634126-1-yunhong.jiang@linux.intel.com> Precedence: bulk X-Mailing-List: linux-acpi@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Parse the wakeup mailbox in the guest_late_init. Put it to the guest_late_init, so that it will be invoked before hyperv_init() where the mailbox address will be checked. Signed-off-by: Yunhong Jiang --- arch/x86/include/asm/mshyperv.h | 3 +++ arch/x86/kernel/cpu/mshyperv.c | 2 ++ drivers/hv/hv_common.c | 8 ++++++++ 3 files changed, 13 insertions(+) diff --git a/arch/x86/include/asm/mshyperv.h b/arch/x86/include/asm/mshyperv.h index 390c4d13956d..5178b96c7fc9 100644 --- a/arch/x86/include/asm/mshyperv.h +++ b/arch/x86/include/asm/mshyperv.h @@ -10,6 +10,7 @@ #include #include #include +#include /* * Hyper-V always provides a single IO-APIC at this MMIO address. @@ -49,6 +50,8 @@ extern u64 hv_current_partition_id; extern union hv_ghcb * __percpu *hv_ghcb_pg; +extern u64 wakeup_mailbox_addr; + bool hv_isolation_type_snp(void); bool hv_isolation_type_tdx(void); u64 hv_tdx_hypercall(u64 control, u64 param1, u64 param2); diff --git a/arch/x86/kernel/cpu/mshyperv.c b/arch/x86/kernel/cpu/mshyperv.c index 3d4237f27569..f6b727b4bd0b 100644 --- a/arch/x86/kernel/cpu/mshyperv.c +++ b/arch/x86/kernel/cpu/mshyperv.c @@ -43,6 +43,8 @@ struct ms_hyperv_info ms_hyperv; bool hyperv_paravisor_present __ro_after_init; EXPORT_SYMBOL_GPL(hyperv_paravisor_present); +u64 wakeup_mailbox_addr; + #if IS_ENABLED(CONFIG_HYPERV) static inline unsigned int hv_get_nested_msr(unsigned int reg) { diff --git a/drivers/hv/hv_common.c b/drivers/hv/hv_common.c index 9c452bfbd571..08b9f4a39763 100644 --- a/drivers/hv/hv_common.c +++ b/drivers/hv/hv_common.c @@ -365,6 +365,14 @@ void __init ms_hyperv_late_init(void) u8 *randomdata; u32 length, i; + /* + * Parse the ACPI wakeup structure information from device tree. + * Currently TDX VTL2 guest only. + */ +#ifdef CONFIG_X86_64 + dtb_parse_mp_wake(&wakeup_mailbox_addr); +#endif + /* * Seed the Linux random number generator with entropy provided by * the Hyper-V host in ACPI table OEM0. From patchwork Tue Aug 6 22:12:35 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yunhong Jiang X-Patchwork-Id: 13755383 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.8]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2954D176AB8; Tue, 6 Aug 2024 22:13:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.8 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1722982387; cv=none; b=eblmEoDUoVlvQu4f8/J7gkpgyZLERlcNoDJDetyAh1Y+g3AYk8rWRaWRGL1CP5Xaem7DXiPhUhemN6kBEU8t27lH3jYd5lI0lVsWey6vHd6LAOu2D4Ks3wKK/eMjKRSCeSeWYuha2DmzfaxayD6x7BVwMh48d3YlvxpPdDlOZGk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1722982387; c=relaxed/simple; bh=GvAvetipniNPqDCAsSTJ2tKWGXpPgxdxr/ozQTWDvlk=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Yol5ohQFfMPIEX4o6T5WIrLMBzbDwnUzBin7scxQHaScEzP2DaJdKvQAzZK4EB0FOL6Q9G4h9DpFEakOMv+hrZnnwRhX2wgFwtpCoMDCrLmoDDZ3f5B2hLaxy8BmF3OPnSWI8T/tpquo6FV4CJZUVWrceIWrWNA6AxEBadgbNkY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=none smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=lNUbJG89; arc=none smtp.client-ip=192.198.163.8 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="lNUbJG89" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1722982386; x=1754518386; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=GvAvetipniNPqDCAsSTJ2tKWGXpPgxdxr/ozQTWDvlk=; b=lNUbJG89xzqttfZ5O/PjOEYayu53aa2k3tmBxa7e/sekh4B/c1R1RKO0 mCFf3iKITNNht6b7r2u4BEOC6t4PE6glH81wWvPm63PI92yNU4FrcVpMW ZopxEuo14rnGcH2Usf2+JmHESI4PzCUeUHZta1v2WVDG4j3bVbX7onsOP ZnpftkDyWa67Ayrtm+ZUykytbNsXRh70gZrseSTke1fnnLmMzuRa4phkH LLq9JK6gRS34km0Mz15g4shiM632bd6Vy05lJI953GRYUDh9kMbM54W8K 7LUiS5v3h2QkGEwSpLwb1pt+qy1T3Eh37AwSzZ1bBQOCUlYHPNf9xE6et g==; X-CSE-ConnectionGUID: Qne+LIBSQFi7o0xsl3Sl5w== X-CSE-MsgGUID: Lq9DLeo9QXax/YCyn3la0Q== X-IronPort-AV: E=McAfee;i="6700,10204,11156"; a="38534405" X-IronPort-AV: E=Sophos;i="6.09,268,1716274800"; d="scan'208";a="38534405" Received: from orviesa003.jf.intel.com ([10.64.159.143]) by fmvoesa102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Aug 2024 15:13:06 -0700 X-CSE-ConnectionGUID: R6lNlHPWSLuWhnu03N0OBA== X-CSE-MsgGUID: tu2pjLBeRdqKJzGInNHZmg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.09,268,1716274800"; d="scan'208";a="61465646" Received: from yjiang5-dev1.sc.intel.com ([172.25.103.134]) by orviesa003.jf.intel.com with ESMTP; 06 Aug 2024 15:13:05 -0700 From: Yunhong Jiang To: tglx@linutronix.de, mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com, x86@kernel.org, hpa@zytor.com, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, kys@microsoft.com, haiyangz@microsoft.com, wei.liu@kernel.org, decui@microsoft.com, rafael@kernel.org, lenb@kernel.org, kirill.shutemov@linux.intel.com Cc: linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-hyperv@vger.kernel.org, linux-acpi@vger.kernel.org, yunhong.jiang@linux.intel.com Subject: [PATCH 5/7] x86/hyperv: Mark ACPI wakeup mailbox page as private Date: Tue, 6 Aug 2024 15:12:35 -0700 Message-Id: <20240806221237.1634126-6-yunhong.jiang@linux.intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240806221237.1634126-1-yunhong.jiang@linux.intel.com> References: <20240806221237.1634126-1-yunhong.jiang@linux.intel.com> Precedence: bulk X-Mailing-List: linux-acpi@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 The ACPI wakeup mailbox is accessed by the OS and the firmware, both are in the guest's context, instead of the hypervisor/VMM context. Mark the address private explicitly. Signed-off-by: Yunhong Jiang --- arch/x86/hyperv/hv_vtl.c | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/arch/x86/hyperv/hv_vtl.c b/arch/x86/hyperv/hv_vtl.c index 04775346369c..bfe54afcdf1d 100644 --- a/arch/x86/hyperv/hv_vtl.c +++ b/arch/x86/hyperv/hv_vtl.c @@ -22,12 +22,28 @@ static bool __init hv_vtl_msi_ext_dest_id(void) return true; } +/* + * The ACPI wakeup mailbox are accessed by the OS and the BIOS, both are in the + * guest's context, instead of the hypervisor/VMM context. + */ +static bool hv_is_private_mmio_tdx(u64 addr) +{ + if (wakeup_mailbox_addr && (addr >= wakeup_mailbox_addr && + addr < (wakeup_mailbox_addr + PAGE_SIZE))) + return true; + return false; +} + void __init hv_vtl_init_platform(void) { pr_info("Linux runs in Hyper-V Virtual Trust Level\n"); - x86_platform.realmode_reserve = x86_init_noop; - x86_platform.realmode_init = x86_init_noop; + if (wakeup_mailbox_addr) { + x86_platform.hyper.is_private_mmio = hv_is_private_mmio_tdx; + } else { + x86_platform.realmode_reserve = x86_init_noop; + x86_platform.realmode_init = x86_init_noop; + } x86_init.irqs.pre_vector_init = x86_init_noop; x86_init.timers.timer_init = x86_init_noop; From patchwork Tue Aug 6 22:12:36 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yunhong Jiang X-Patchwork-Id: 13755384 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.8]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 88526176FB8; Tue, 6 Aug 2024 22:13:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.8 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1722982389; cv=none; b=pu4vodxPWvXc7VlDoXbQxfrGN5hvROHkEBSLppH/3ncVXQli8GI96YUC7qzfG8aC/O3Hm+8VhKS1HVZRXougfoqQzZST9VNDfJt0lhuJ29QMrEXxg5nnvK0xabEGAGwvygUIP3/UHJmrzvbW1WpXl6ooEAYI6dtySeR+HZmy5eI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1722982389; c=relaxed/simple; bh=ZUq86fmEIT+y08JWAU6WM9quSZ2U1+eaMw8WLXb0+0I=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=fmZrX9fQGESiB4cwuBpGjTd3/VIBtXTboCA7ZmDMXLzCBIvCX+Va7eB3SfnVcC//H0j4sfr5k2OYoIqR3X8urgyFIAVtl6G6fHYElqxjDaVMRFbORp71oBz5Sk78ahK6Dfkiso+auRMabhMIslC47QWqOYikVboJYzo+8y4aY7c= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=none smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=nbrTeDy8; arc=none smtp.client-ip=192.198.163.8 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="nbrTeDy8" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1722982388; x=1754518388; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=ZUq86fmEIT+y08JWAU6WM9quSZ2U1+eaMw8WLXb0+0I=; b=nbrTeDy8K5vCFF1cwX2G6CM47gqlHP4DrWT9llPgQKWShqsBKGsLjn0g DPB0mQTks/TgJSbQNv3UmYe70oiDbAs1GV6PNTnyrOKtU2n+YSiMl9FEx ZfXQJIXmlk64kCGj4Pdy7hpAVEmsT0XeatP4ZREn15IEKJ2NeEVXAAEdB i+lHKoI5PaY/DEsonxKO8RKwmGXmJBAaFxm2KJk+YDuriHtufj71g6VPR /PCZfui6kMWgFSEiMK0D9fc6JCb2mFxU30Wkftj6TPeJpZwEvGSeaLYzQ NOKjfJaGT5zS9KDREaCypHnqdvGhxHUqYNlhnxZD48Qt7AurCVOGwirNy A==; X-CSE-ConnectionGUID: RggpQsz6TIKEcHwp4n4QTQ== X-CSE-MsgGUID: TXqHKEqiQGCTmoKEGy6Sig== X-IronPort-AV: E=McAfee;i="6700,10204,11156"; a="38534413" X-IronPort-AV: E=Sophos;i="6.09,268,1716274800"; d="scan'208";a="38534413" Received: from orviesa003.jf.intel.com ([10.64.159.143]) by fmvoesa102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Aug 2024 15:13:07 -0700 X-CSE-ConnectionGUID: 1VXGpvhbRb+biuLLfyBGhg== X-CSE-MsgGUID: hLgNtRGXRWGozjepu793sA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.09,268,1716274800"; d="scan'208";a="61465652" Received: from yjiang5-dev1.sc.intel.com ([172.25.103.134]) by orviesa003.jf.intel.com with ESMTP; 06 Aug 2024 15:13:06 -0700 From: Yunhong Jiang To: tglx@linutronix.de, mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com, x86@kernel.org, hpa@zytor.com, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, kys@microsoft.com, haiyangz@microsoft.com, wei.liu@kernel.org, decui@microsoft.com, rafael@kernel.org, lenb@kernel.org, kirill.shutemov@linux.intel.com Cc: linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-hyperv@vger.kernel.org, linux-acpi@vger.kernel.org, yunhong.jiang@linux.intel.com Subject: [PATCH 6/7] x86/hyperv: Reserve real mode when ACPI wakeup mailbox is available Date: Tue, 6 Aug 2024 15:12:36 -0700 Message-Id: <20240806221237.1634126-7-yunhong.jiang@linux.intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240806221237.1634126-1-yunhong.jiang@linux.intel.com> References: <20240806221237.1634126-1-yunhong.jiang@linux.intel.com> Precedence: bulk X-Mailing-List: linux-acpi@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 The trampoline_start64 is utilized when the BSP wakes up the APs through ACPI wakeup mailbox mechanism. Because trampoline_start64 is currently part of the real model startup code, the real mode memory need to be reserved. Signed-off-by: Yunhong Jiang --- arch/x86/hyperv/hv_vtl.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/arch/x86/hyperv/hv_vtl.c b/arch/x86/hyperv/hv_vtl.c index bfe54afcdf1d..a1eb5548bd4d 100644 --- a/arch/x86/hyperv/hv_vtl.c +++ b/arch/x86/hyperv/hv_vtl.c @@ -13,6 +13,7 @@ #include #include #include <../kernel/smpboot.h> +#include extern struct boot_params boot_params; static struct real_mode_header hv_vtl_real_mode_header; @@ -34,12 +35,28 @@ static bool hv_is_private_mmio_tdx(u64 addr) return false; } +static void __init hv_reserve_real_mode(void) +{ + phys_addr_t mem; + size_t size = real_mode_size_needed(); + + /* + * We only need the memory to be <4GB since the 64-bit trampoline goes + * down to 32-bit mode. + */ + mem = memblock_phys_alloc_range(size, PAGE_SIZE, 0, SZ_4G); + if (!mem) + panic("No sub-4G memory is available for the trampoline\n"); + set_real_mode_mem(mem); +} + void __init hv_vtl_init_platform(void) { pr_info("Linux runs in Hyper-V Virtual Trust Level\n"); if (wakeup_mailbox_addr) { x86_platform.hyper.is_private_mmio = hv_is_private_mmio_tdx; + x86_platform.realmode_reserve = hv_reserve_real_mode; } else { x86_platform.realmode_reserve = x86_init_noop; x86_platform.realmode_init = x86_init_noop; @@ -259,7 +276,8 @@ int __init hv_vtl_early_init(void) panic("XSAVE has to be disabled as it is not supported by this module.\n" "Please add 'noxsave' to the kernel command line.\n"); - real_mode_header = &hv_vtl_real_mode_header; + if (!wakeup_mailbox_addr) + real_mode_header = &hv_vtl_real_mode_header; apic_update_callback(wakeup_secondary_cpu_64, hv_vtl_wakeup_secondary_cpu); return 0; From patchwork Tue Aug 6 22:12:37 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yunhong Jiang X-Patchwork-Id: 13755385 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.8]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0629D178381; Tue, 6 Aug 2024 22:13:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.8 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1722982390; cv=none; b=hNpkc36GrkBHfjd/ZdWFEsJYLBX6yYARNFjeSapwc8XvimUb2+L70/MDI3x10WUgfUTSVzIDa0ftiCFDb9YUSHQtXMT3mr9M3Hbonrh3Qwd1EyBfaw6EWQ7682MoCxyb22yU/u0DD+JxWUwCva2WDYeRnrH+aWUD7oYIoqt/Ke8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1722982390; c=relaxed/simple; bh=cLcQPUSyW6zpKPEpULWnl+A4X3BrwKfXFamHYe2uC7A=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=KDTJeJ8WpvSLMKMoHoLUzkhL23BfsU24vDsMiq+FtFZHseP9CcjtA4OEKJA85mYBU8g1jAxVJNpVbUWmcwxwTywyv8RmdhJDw5lmp0XaZfirBO04GaW0GcCOkrzoz5zKXEzfuvtVbIZ7ZysmorBEb1AjtjNfEWrcXwDOpU8Fk8w= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=none smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=cieWg0aI; arc=none smtp.client-ip=192.198.163.8 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="cieWg0aI" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1722982389; x=1754518389; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=cLcQPUSyW6zpKPEpULWnl+A4X3BrwKfXFamHYe2uC7A=; b=cieWg0aIzjMLk01YEz4u7NnV7RbuG0oHNxH7WCVAygwFRpVJw0fBXxDL +Hho9D6Z7mDAp9uCOY1fZPDMFEixrzhvaCmBQ0YBlDGBkEGnPptsbSy06 QD7m/FxAUi0HXlkOEnEZCp6URAn86Zk/Lrc4bsOYQaYKhyRtTMla/d/ht LnHn+ivHAphkR/CPRC2L2BhkVEEOXjT9tH0XTgS64igvfLIPfUsBjz+Us DYYgw+UD2cqx82SI7WGWmiZWm9C+wU9UR5K3WhHIlk5CDqKXiZ4yoGK3J kpLqyRZTnDMXaOgQQb0h+Cu6P7NZx1FEjCp7SdinQRUL5hSAav1WbHKNp w==; X-CSE-ConnectionGUID: taUgbzgBSwqZCxDgDeVV+Q== X-CSE-MsgGUID: cLQs4eK3QIOMv8R3ZZzdFA== X-IronPort-AV: E=McAfee;i="6700,10204,11156"; a="38534422" X-IronPort-AV: E=Sophos;i="6.09,268,1716274800"; d="scan'208";a="38534422" Received: from orviesa003.jf.intel.com ([10.64.159.143]) by fmvoesa102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Aug 2024 15:13:09 -0700 X-CSE-ConnectionGUID: 1ddOgj/xQqe50JmXrzya0Q== X-CSE-MsgGUID: jVbftUq8SVq6ntpXp5x24g== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.09,268,1716274800"; d="scan'208";a="61465671" Received: from yjiang5-dev1.sc.intel.com ([172.25.103.134]) by orviesa003.jf.intel.com with ESMTP; 06 Aug 2024 15:13:08 -0700 From: Yunhong Jiang To: tglx@linutronix.de, mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com, x86@kernel.org, hpa@zytor.com, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, kys@microsoft.com, haiyangz@microsoft.com, wei.liu@kernel.org, decui@microsoft.com, rafael@kernel.org, lenb@kernel.org, kirill.shutemov@linux.intel.com Cc: linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-hyperv@vger.kernel.org, linux-acpi@vger.kernel.org, yunhong.jiang@linux.intel.com Subject: [PATCH 7/7] x86/hyperv: Use the ACPI wakeup mailbox for VTL2 guests when available Date: Tue, 6 Aug 2024 15:12:37 -0700 Message-Id: <20240806221237.1634126-8-yunhong.jiang@linux.intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240806221237.1634126-1-yunhong.jiang@linux.intel.com> References: <20240806221237.1634126-1-yunhong.jiang@linux.intel.com> Precedence: bulk X-Mailing-List: linux-acpi@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 The VTL2 in a TDX guest can boot utilizing the device tree instead of ACPI tables. When the ACPI wakeup mailbox is present in device tree, don't overwrite wakeup_secondary_cpu_64 so that the acpi_wakeup_cpu will be used to bring up the APs. Signed-off-by: Yunhong Jiang --- arch/x86/hyperv/hv_vtl.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/arch/x86/hyperv/hv_vtl.c b/arch/x86/hyperv/hv_vtl.c index a1eb5548bd4d..132d05fd9136 100644 --- a/arch/x86/hyperv/hv_vtl.c +++ b/arch/x86/hyperv/hv_vtl.c @@ -276,9 +276,10 @@ int __init hv_vtl_early_init(void) panic("XSAVE has to be disabled as it is not supported by this module.\n" "Please add 'noxsave' to the kernel command line.\n"); - if (!wakeup_mailbox_addr) + if (!wakeup_mailbox_addr) { real_mode_header = &hv_vtl_real_mode_header; - apic_update_callback(wakeup_secondary_cpu_64, hv_vtl_wakeup_secondary_cpu); + apic_update_callback(wakeup_secondary_cpu_64, hv_vtl_wakeup_secondary_cpu); + } return 0; }