linux-coco.lists.linux.dev archive mirror
 help / color / mirror / Atom feed
From: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
To: Thomas Gleixner <tglx@linutronix.de>,
	Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	x86@kernel.org
Cc: "Rafael J. Wysocki" <rafael@kernel.org>,
	Peter Zijlstra <peterz@infradead.org>,
	Adrian Hunter <adrian.hunter@intel.com>,
	Kuppuswamy Sathyanarayanan
	<sathyanarayanan.kuppuswamy@linux.intel.com>,
	Elena Reshetova <elena.reshetova@intel.com>,
	Jun Nakajima <jun.nakajima@intel.com>,
	Rick Edgecombe  <rick.p.edgecombe@intel.com>,
	Tom Lendacky <thomas.lendacky@amd.com>,
	"Kalra, Ashish" <ashish.kalra@amd.com>,
	Sean Christopherson <seanjc@google.com>,
	"Huang, Kai" <kai.huang@intel.com>,
	Ard Biesheuvel <ardb@kernel.org>, Baoquan He <bhe@redhat.com>,
	"H. Peter Anvin" <hpa@zytor.com>,
	"Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>,
	"K. Y. Srinivasan" <kys@microsoft.com>,
	Haiyang Zhang <haiyangz@microsoft.com>,
	kexec@lists.infradead.org, linux-hyperv@vger.kernel.org,
	linux-acpi@vger.kernel.org, linux-coco@lists.linux.dev,
	linux-kernel@vger.kernel.org, Tao Liu <ltao@redhat.com>
Subject: [PATCHv11 04/19] cpu/hotplug, x86/acpi: Disable CPU offlining for ACPI MADT wakeup
Date: Tue, 28 May 2024 12:55:07 +0300	[thread overview]
Message-ID: <20240528095522.509667-5-kirill.shutemov@linux.intel.com> (raw)
In-Reply-To: <20240528095522.509667-1-kirill.shutemov@linux.intel.com>

ACPI MADT doesn't allow to offline CPU after it got woke up.

Currently CPU hotplug is prevented based on the confidential computing
attribute which is set for Intel TDX. But TDX is not the only possible
user of the wake up method. Any platform that uses ACPI MADT wakeup
method cannot offline CPU.

Disable CPU offlining on ACPI MADT wakeup enumeration.

The change has no visible effects for users: currently, TDX guest is the
only platform that uses the ACPI MADT wakeup method.

Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
Tested-by: Tao Liu <ltao@redhat.com>
---
 arch/x86/coco/core.c               |  1 -
 arch/x86/kernel/acpi/madt_wakeup.c |  3 +++
 include/linux/cc_platform.h        | 10 ----------
 kernel/cpu.c                       |  3 +--
 4 files changed, 4 insertions(+), 13 deletions(-)

diff --git a/arch/x86/coco/core.c b/arch/x86/coco/core.c
index b31ef2424d19..0f81f70aca82 100644
--- a/arch/x86/coco/core.c
+++ b/arch/x86/coco/core.c
@@ -29,7 +29,6 @@ static bool noinstr intel_cc_platform_has(enum cc_attr attr)
 {
 	switch (attr) {
 	case CC_ATTR_GUEST_UNROLL_STRING_IO:
-	case CC_ATTR_HOTPLUG_DISABLED:
 	case CC_ATTR_GUEST_MEM_ENCRYPT:
 	case CC_ATTR_MEM_ENCRYPT:
 		return true;
diff --git a/arch/x86/kernel/acpi/madt_wakeup.c b/arch/x86/kernel/acpi/madt_wakeup.c
index cf79ea6f3007..d222be8d7a07 100644
--- a/arch/x86/kernel/acpi/madt_wakeup.c
+++ b/arch/x86/kernel/acpi/madt_wakeup.c
@@ -1,5 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0-or-later
 #include <linux/acpi.h>
+#include <linux/cpu.h>
 #include <linux/io.h>
 #include <asm/apic.h>
 #include <asm/barrier.h>
@@ -76,6 +77,8 @@ int __init acpi_parse_mp_wake(union acpi_subtable_headers *header,
 
 	acpi_mp_wake_mailbox_paddr = mp_wake->base_address;
 
+	cpu_hotplug_disable_offlining();
+
 	apic_update_callback(wakeup_secondary_cpu_64, acpi_wakeup_cpu);
 
 	return 0;
diff --git a/include/linux/cc_platform.h b/include/linux/cc_platform.h
index 60693a145894..caa4b4430634 100644
--- a/include/linux/cc_platform.h
+++ b/include/linux/cc_platform.h
@@ -81,16 +81,6 @@ enum cc_attr {
 	 */
 	CC_ATTR_GUEST_SEV_SNP,
 
-	/**
-	 * @CC_ATTR_HOTPLUG_DISABLED: Hotplug is not supported or disabled.
-	 *
-	 * The platform/OS is running as a guest/virtual machine does not
-	 * support CPU hotplug feature.
-	 *
-	 * Examples include TDX Guest.
-	 */
-	CC_ATTR_HOTPLUG_DISABLED,
-
 	/**
 	 * @CC_ATTR_HOST_SEV_SNP: AMD SNP enabled on the host.
 	 *
diff --git a/kernel/cpu.c b/kernel/cpu.c
index 4c15b478e2bc..a609385c7f99 100644
--- a/kernel/cpu.c
+++ b/kernel/cpu.c
@@ -1481,8 +1481,7 @@ static int cpu_down_maps_locked(unsigned int cpu, enum cpuhp_state target)
 	 * If the platform does not support hotplug, report it explicitly to
 	 * differentiate it from a transient offlining failure.
 	 */
-	if (cc_platform_has(CC_ATTR_HOTPLUG_DISABLED) ||
-	    cpu_hotplug_offline_disabled)
+	if (cpu_hotplug_offline_disabled)
 		return -EOPNOTSUPP;
 	if (cpu_hotplug_disabled)
 		return -EBUSY;
-- 
2.43.0


  parent reply	other threads:[~2024-05-28  9:55 UTC|newest]

Thread overview: 115+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-05-28  9:55 [PATCHv11 00/19] x86/tdx: Add kexec support Kirill A. Shutemov
2024-05-28  9:55 ` [PATCHv11 01/19] x86/acpi: Extract ACPI MADT wakeup code into a separate file Kirill A. Shutemov
2024-05-28 13:47   ` Borislav Petkov
2024-05-28  9:55 ` [PATCHv11 02/19] x86/apic: Mark acpi_mp_wake_* variables as __ro_after_init Kirill A. Shutemov
2024-05-28  9:55 ` [PATCHv11 03/19] cpu/hotplug: Add support for declaring CPU offlining not supported Kirill A. Shutemov
2024-05-28  9:55 ` Kirill A. Shutemov [this message]
2024-05-28  9:55 ` [PATCHv11 05/19] x86/relocate_kernel: Use named labels for less confusion Kirill A. Shutemov
2024-05-29 10:47   ` Nikolay Borisov
2024-05-29 11:17     ` Kirill A. Shutemov
2024-05-29 11:28       ` Borislav Petkov
2024-05-29 12:33         ` Andrew Cooper
2024-05-29 15:15           ` Borislav Petkov
2024-06-04  0:24       ` H. Peter Anvin
2024-06-04  9:15         ` Borislav Petkov
2024-06-04 15:21           ` Kirill A. Shutemov
2024-06-04 17:57             ` Borislav Petkov
2024-06-11 18:26             ` H. Peter Anvin
2024-06-12  9:22               ` Kirill A. Shutemov
2024-06-12 23:06                 ` Andrew Cooper
2024-06-12 23:25                   ` H. Peter Anvin
2024-06-03 14:43     ` H. Peter Anvin
2024-06-12 12:10       ` Nikolay Borisov
2024-06-03 22:43     ` H. Peter Anvin
2024-05-28  9:55 ` [PATCHv11 06/19] x86/kexec: Keep CR4.MCE set during kexec for TDX guest Kirill A. Shutemov
2024-05-28 11:12   ` Huang, Kai
2024-05-29 11:39   ` Nikolay Borisov
2024-05-28  9:55 ` [PATCHv11 07/19] x86/mm: Make x86_platform.guest.enc_status_change_*() return errno Kirill A. Shutemov
2024-05-28  9:55 ` [PATCHv11 08/19] x86/mm: Return correct level from lookup_address() if pte is none Kirill A. Shutemov
2024-05-28  9:55 ` [PATCHv11 09/19] x86/tdx: Account shared memory Kirill A. Shutemov
2024-06-04 16:08   ` Dave Hansen
2024-06-04 16:24     ` Kirill A. Shutemov
2024-05-28  9:55 ` [PATCHv11 10/19] x86/mm: Add callbacks to prepare encrypted memory for kexec Kirill A. Shutemov
2024-05-29 10:42   ` Borislav Petkov
2024-06-02 12:39     ` [PATCHv11.1 " Kirill A. Shutemov
2024-06-02 12:42       ` Kirill A. Shutemov
2024-06-02 12:44     ` [PATCHv11.2 " Kirill A. Shutemov
2024-06-04 16:16   ` [PATCHv11 " Dave Hansen
2024-05-28  9:55 ` [PATCHv11 11/19] x86/tdx: Convert shared memory back to private on kexec Kirill A. Shutemov
2024-05-31 15:14   ` Borislav Petkov
2024-05-31 17:34     ` Kalra, Ashish
2024-05-31 18:06       ` Borislav Petkov
2024-06-02 14:20     ` Kirill A. Shutemov
2024-06-02 14:23     ` [PATCHv11.1 " Kirill A. Shutemov
2024-06-03  8:37       ` Borislav Petkov
2024-06-04 15:32         ` Kirill A. Shutemov
2024-06-04 15:47           ` Dave Hansen
2024-06-04 16:14             ` Kirill A. Shutemov
2024-06-04 18:05               ` Borislav Petkov
2024-06-05 12:21                 ` Kirill A. Shutemov
2024-06-05 16:24                   ` Borislav Petkov
2024-06-06 12:39                     ` Kirill A. Shutemov
2024-06-04 16:27   ` [PATCHv11 " Dave Hansen
2024-06-05 12:43     ` Kirill A. Shutemov
2024-06-05 16:05       ` Dave Hansen
2024-05-28  9:55 ` [PATCHv11 12/19] x86/mm: Make e820__end_ram_pfn() cover E820_TYPE_ACPI ranges Kirill A. Shutemov
2024-05-28  9:55 ` [PATCHv11 13/19] x86/mm: Do not zap page table entries mapping unaccepted memory table during kdump Kirill A. Shutemov
2024-05-28  9:55 ` [PATCHv11 14/19] x86/acpi: Rename fields in acpi_madt_multiproc_wakeup structure Kirill A. Shutemov
2024-05-28  9:55 ` [PATCHv11 15/19] x86/acpi: Do not attempt to bring up secondary CPUs in kexec case Kirill A. Shutemov
2024-05-28  9:55 ` [PATCHv11 16/19] x86/smp: Add smp_ops.stop_this_cpu() callback Kirill A. Shutemov
2024-05-28  9:55 ` [PATCHv11 17/19] x86/mm: Introduce kernel_ident_mapping_free() Kirill A. Shutemov
2024-05-28  9:55 ` [PATCHv11 18/19] x86/acpi: Add support for CPU offlining for ACPI MADT wakeup method Kirill A. Shutemov
2024-06-03  8:39   ` Borislav Petkov
2024-06-07 15:14     ` Kirill A. Shutemov
2024-06-10 13:40       ` Borislav Petkov
2024-06-10 14:01         ` Kirill A. Shutemov
2024-06-11 15:47           ` Kirill A. Shutemov
2024-06-11 19:46             ` Borislav Petkov
2024-06-12  9:24               ` Kirill A. Shutemov
2024-06-12  9:29                 ` Borislav Petkov
2024-06-13 13:41                   ` Kirill A. Shutemov
2024-06-13 14:56                     ` Borislav Petkov
2024-06-14 14:06                       ` Tom Lendacky
2024-06-18 12:20                         ` Kirill A. Shutemov
2024-06-21 13:38                     ` Borislav Petkov
2024-05-28  9:55 ` [PATCHv11 19/19] ACPI: tables: Print MULTIPROC_WAKEUP when MADT is parsed Kirill A. Shutemov
2024-05-28 10:01 ` [PATCHv11 00/19] x86/tdx: Add kexec support Rafael J. Wysocki
2024-05-30 23:36 ` [PATCH v7 0/3] x86/snp: " Ashish Kalra
2024-05-30 23:36   ` [PATCH v7 1/3] efi/x86: Fix EFI memory map corruption with kexec Ashish Kalra
2024-05-31  9:12     ` Alexander Kuleshov
2024-06-03  8:56     ` Borislav Petkov
2024-06-03 13:06       ` Kalra, Ashish
2024-06-03 13:39         ` Mike Rapoport
2024-06-03 14:01           ` Kalra, Ashish
2024-06-03 14:46             ` Borislav Petkov
2024-06-03 15:31               ` Mike Rapoport
2024-06-03 16:48                 ` Kalra, Ashish
2024-06-03 16:57                   ` Borislav Petkov
2024-06-03 17:08                     ` Kalra, Ashish
2024-06-03 17:12                       ` Borislav Petkov
2024-06-04 22:12                         ` Kalra, Ashish
2024-06-04 22:35                         ` Kalra, Ashish
2024-06-05  1:48                           ` Dave Young
2024-06-05  1:52                             ` Dave Young
2024-06-05  1:58                               ` Dave Young
2024-06-05  2:08                                 ` Kalra, Ashish
2024-06-05  2:28                                   ` Dave Young
2024-06-05 11:09                                     ` Borislav Petkov
2024-06-06  1:52                                       ` Dave Young
2024-06-05  2:14                             ` Kalra, Ashish
2024-06-03 17:05                   ` Kalra, Ashish
2024-06-03 17:10                     ` Borislav Petkov
2024-06-04  1:23                 ` Dave Young
2024-06-04  9:43                   ` Borislav Petkov
2024-06-04 11:09                     ` Dave Young
2024-06-04 18:02                       ` Borislav Petkov
2024-06-05  2:53                         ` Dave Young
2024-06-05  7:42                           ` Borislav Petkov
2024-06-05  8:17                             ` Ard Biesheuvel
2024-06-05 11:15                               ` Borislav Petkov
2024-06-03 15:29             ` Mike Rapoport
2024-06-03 16:56               ` Kalra, Ashish
2024-06-03 17:41                 ` Mike Rapoport
2024-05-30 23:37   ` [PATCH v7 2/3] x86/boot/compressed: Skip Video Memory access in Decompressor for SEV-ES/SNP Ashish Kalra
2024-06-05 20:14     ` Borislav Petkov
2024-05-30 23:37   ` [PATCH v7 3/3] x86/snp: Convert shared memory back to private on kexec Ashish Kalra

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240528095522.509667-5-kirill.shutemov@linux.intel.com \
    --to=kirill.shutemov@linux.intel.com \
    --cc=adrian.hunter@intel.com \
    --cc=ardb@kernel.org \
    --cc=ashish.kalra@amd.com \
    --cc=bhe@redhat.com \
    --cc=bp@alien8.de \
    --cc=dave.hansen@linux.intel.com \
    --cc=elena.reshetova@intel.com \
    --cc=haiyangz@microsoft.com \
    --cc=hpa@zytor.com \
    --cc=jun.nakajima@intel.com \
    --cc=kai.huang@intel.com \
    --cc=kexec@lists.infradead.org \
    --cc=kys@microsoft.com \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-coco@lists.linux.dev \
    --cc=linux-hyperv@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=ltao@redhat.com \
    --cc=mingo@redhat.com \
    --cc=peterz@infradead.org \
    --cc=rafael@kernel.org \
    --cc=rick.p.edgecombe@intel.com \
    --cc=sathyanarayanan.kuppuswamy@linux.intel.com \
    --cc=seanjc@google.com \
    --cc=tglx@linutronix.de \
    --cc=thomas.lendacky@amd.com \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).