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: 817142 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: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: 817141 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: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: 817140 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: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: 817139 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; }