mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: "tip-bot2 for Kirill A. Shutemov" <tip-bot2@linutronix.de>
To: linux-tip-commits@vger.kernel.org
Cc: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>,
	"Borislav Petkov (AMD)" <bp@alien8.de>,
	x86@kernel.org, linux-kernel@vger.kernel.org
Subject: [tip: x86/cc] x86/kexec: Keep CR4.MCE set during kexec for TDX guest
Date: Tue, 18 Jun 2024 14:01:42 -0000	[thread overview]
Message-ID: <171871930225.10875.13385118574589510822.tip-bot2@tip-bot2> (raw)
In-Reply-To: <20240614095904.1345461-7-kirill.shutemov@linux.intel.com>

The following commit has been merged into the x86/cc branch of tip:

Commit-ID:     de60613173dfd75a10f6aa8e001bbcafa242e623
Gitweb:        https://git.kernel.org/tip/de60613173dfd75a10f6aa8e001bbcafa242e623
Author:        Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
AuthorDate:    Fri, 14 Jun 2024 12:58:51 +03:00
Committer:     Borislav Petkov (AMD) <bp@alien8.de>
CommitterDate: Mon, 17 Jun 2024 17:45:50 +02:00

x86/kexec: Keep CR4.MCE set during kexec for TDX guest

TDX guests run with MCA enabled (CR4.MCE=1b) from the very start. If
that bit is cleared during CR4 register reprogramming during boot or kexec
flows, a #VE exception will be raised which the guest kernel cannot handle.

Therefore, make sure the CR4.MCE setting is preserved over kexec too and avoid
raising any #VEs.

Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
Link: https://lore.kernel.org/r/20240614095904.1345461-7-kirill.shutemov@linux.intel.com
---
 arch/x86/kernel/relocate_kernel_64.S | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

diff --git a/arch/x86/kernel/relocate_kernel_64.S b/arch/x86/kernel/relocate_kernel_64.S
index 8b8922d..042c9a0 100644
--- a/arch/x86/kernel/relocate_kernel_64.S
+++ b/arch/x86/kernel/relocate_kernel_64.S
@@ -5,6 +5,8 @@
  */
 
 #include <linux/linkage.h>
+#include <linux/stringify.h>
+#include <asm/alternative.h>
 #include <asm/page_types.h>
 #include <asm/kexec.h>
 #include <asm/processor-flags.h>
@@ -145,14 +147,15 @@ SYM_CODE_START_LOCAL_NOALIGN(identity_mapped)
 	 * Set cr4 to a known state:
 	 *  - physical address extension enabled
 	 *  - 5-level paging, if it was enabled before
+	 *  - Machine check exception on TDX guest, if it was enabled before.
+	 *    Clearing MCE might not be allowed in TDX guests, depending on setup.
+	 *
+	 * Use R13 that contains the original CR4 value, read in relocate_kernel().
+	 * PAE is always set in the original CR4.
 	 */
-	movl	$X86_CR4_PAE, %eax
-	testq	$X86_CR4_LA57, %r13
-	jz	.Lno_la57
-	orl	$X86_CR4_LA57, %eax
-.Lno_la57:
-
-	movq	%rax, %cr4
+	andl	$(X86_CR4_PAE | X86_CR4_LA57), %r13d
+	ALTERNATIVE "", __stringify(orl $X86_CR4_MCE, %r13d), X86_FEATURE_TDX_GUEST
+	movq	%r13, %cr4
 
 	/* Flush the TLB (needed?) */
 	movq	%r9, %cr3

  reply	other threads:[~2024-06-18 14:01 UTC|newest]

Thread overview: 75+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-06-14  9:58 [PATCHv12 00/19] x86/tdx: Add kexec support Kirill A. Shutemov
2024-06-14  9:58 ` [PATCHv12 01/19] x86/acpi: Extract ACPI MADT wakeup code into a separate file Kirill A. Shutemov
2024-06-18 14:01   ` [tip: x86/cc] " tip-bot2 for Kirill A. Shutemov
2024-06-14  9:58 ` [PATCHv12 02/19] x86/apic: Mark acpi_mp_wake_* variables as __ro_after_init Kirill A. Shutemov
2024-06-18 14:01   ` [tip: x86/cc] " tip-bot2 for Kirill A. Shutemov
2024-06-14  9:58 ` [PATCHv12 03/19] cpu/hotplug: Add support for declaring CPU offlining not supported Kirill A. Shutemov
2024-06-18 14:01   ` [tip: x86/cc] " tip-bot2 for Kirill A. Shutemov
2024-06-14  9:58 ` [PATCHv12 04/19] cpu/hotplug, x86/acpi: Disable CPU offlining for ACPI MADT wakeup Kirill A. Shutemov
2024-06-18 14:01   ` [tip: x86/cc] " tip-bot2 for Kirill A. Shutemov
2024-06-14  9:58 ` [PATCHv12 05/19] x86/relocate_kernel: Use named labels for less confusion Kirill A. Shutemov
2024-06-18 14:01   ` [tip: x86/cc] " tip-bot2 for Borislav Petkov
2024-06-14  9:58 ` [PATCHv12 06/19] x86/kexec: Keep CR4.MCE set during kexec for TDX guest Kirill A. Shutemov
2024-06-18 14:01   ` tip-bot2 for Kirill A. Shutemov [this message]
2024-06-14  9:58 ` [PATCHv12 07/19] x86/mm: Make x86_platform.guest.enc_status_change_*() return errno Kirill A. Shutemov
2024-06-18 14:01   ` [tip: x86/cc] x86/mm: Make x86_platform.guest.enc_status_change_*() return an error tip-bot2 for Kirill A. Shutemov
2024-06-14  9:58 ` [PATCHv12 08/19] x86/mm: Return correct level from lookup_address() if pte is none Kirill A. Shutemov
2024-06-18 14:01   ` [tip: x86/cc] " tip-bot2 for Kirill A. Shutemov
2024-06-14  9:58 ` [PATCHv12 09/19] x86/tdx: Account shared memory Kirill A. Shutemov
2024-06-18 14:01   ` [tip: x86/cc] " tip-bot2 for Kirill A. Shutemov
2024-06-14  9:58 ` [PATCHv12 10/19] x86/mm: Add callbacks to prepare encrypted memory for kexec Kirill A. Shutemov
2024-06-18 14:01   ` [tip: x86/cc] " tip-bot2 for Kirill A. Shutemov
2024-06-14  9:58 ` [PATCHv12 11/19] x86/tdx: Convert shared memory back to private on kexec Kirill A. Shutemov
2024-06-18 14:01   ` [tip: x86/cc] " tip-bot2 for Kirill A. Shutemov
2024-06-14  9:58 ` [PATCHv12 12/19] x86/mm: Make e820__end_ram_pfn() cover E820_TYPE_ACPI ranges Kirill A. Shutemov
2024-06-18 14:01   ` [tip: x86/cc] " tip-bot2 for Kirill A. Shutemov
2024-06-14  9:58 ` [PATCHv12 13/19] x86/mm: Do not zap page table entries mapping unaccepted memory table during kdump Kirill A. Shutemov
2024-06-18 14:01   ` [tip: x86/cc] " tip-bot2 for Ashish Kalra
2024-06-14  9:58 ` [PATCHv12 14/19] x86/acpi: Rename fields in acpi_madt_multiproc_wakeup structure Kirill A. Shutemov
2024-06-18 14:01   ` [tip: x86/cc] x86/acpi: Rename fields in the " tip-bot2 for Kirill A. Shutemov
2024-06-14  9:59 ` [PATCHv12 15/19] x86/acpi: Do not attempt to bring up secondary CPUs in kexec case Kirill A. Shutemov
2024-06-18 14:01   ` [tip: x86/cc] x86/acpi: Do not attempt to bring up secondary CPUs in the " tip-bot2 for Kirill A. Shutemov
2024-06-14  9:59 ` [PATCHv12 16/19] x86/smp: Add smp_ops.stop_this_cpu() callback Kirill A. Shutemov
2024-06-18 14:01   ` [tip: x86/cc] " tip-bot2 for Kirill A. Shutemov
2024-06-14  9:59 ` [PATCHv12 17/19] x86/mm: Introduce kernel_ident_mapping_free() Kirill A. Shutemov
2024-06-18 14:01   ` [tip: x86/cc] " tip-bot2 for Kirill A. Shutemov
2024-06-14  9:59 ` [PATCHv12 18/19] x86/acpi: Add support for CPU offlining for ACPI MADT wakeup method Kirill A. Shutemov
2024-06-14  9:59 ` [PATCHv12 19/19] ACPI: tables: Print MULTIPROC_WAKEUP when MADT is parsed Kirill A. Shutemov
2024-06-18 14:01   ` [tip: x86/cc] " tip-bot2 for Kirill A. Shutemov
2024-06-17 21:13 ` [PATCH v8 0/2] x86/snp: Add kexec support Ashish Kalra
2024-06-17 21:15   ` [PATCH v8 1/2] x86/boot/compressed: Skip Video Memory access in Decompressor for SEV-ES/SNP Ashish Kalra
2024-06-19 10:22     ` Borislav Petkov
2024-06-17 21:15   ` [PATCH v8 2/2] x86/snp: Convert shared memory back to private on kexec Ashish Kalra
2024-06-20 22:22 ` [PATCH v9 0/3] x86/snp: Add kexec support Ashish Kalra
2024-06-20 22:23   ` [PATCH v9 1/3] x86/sev: Move SEV compilation units Ashish Kalra
2024-06-20 22:23   ` [PATCH v9 2/3] x86/boot: Skip video memory access in the decompressor for SEV-ES/SNP Ashish Kalra
2024-06-24 15:03     ` Tom Lendacky
2024-06-20 22:23   ` [PATCH v9 3/3] x86/snp: Convert shared memory back to private on kexec Ashish Kalra
2024-06-24 15:18     ` Tom Lendacky
2024-06-24 18:26     ` Borislav Petkov
2024-06-24 20:57       ` Kalra, Ashish
2024-06-25  3:59         ` Borislav Petkov
2024-06-28  4:27           ` Kalra, Ashish
2024-06-28 14:01             ` Tom Lendacky
2024-06-28 19:14               ` Kalra, Ashish
2024-06-28 20:33       ` Kalra, Ashish
2024-06-24 18:21 ` [PATCH v10 0/2] x86/snp: Add kexec support Ashish Kalra
2024-06-24 18:21   ` [PATCH v10 1/2] x86/boot: Skip video memory access in the decompressor for SEV-ES/SNP Ashish Kalra
2024-06-24 18:22   ` [PATCH v10 2/2] Subject: [PATCH v9 3/3] x86/snp: Convert shared memory back to private on kexec Ashish Kalra
2024-07-02 19:56 ` [PATCH v11 0/3] x86/snp: Add kexec support Ashish Kalra
2024-07-02 19:57   ` [PATCH v11 1/3] x86/boot: Skip video memory access in the decompressor for SEV-ES/SNP Ashish Kalra
2024-07-02 19:57   ` [PATCH v11 2/3] x86/mm: refactor __set_clr_pte_enc() Ashish Kalra
2024-07-05 14:26     ` Borislav Petkov
2024-07-02 19:58   ` [PATCH v11 3/3] x86/snp: Convert shared memory back to private on kexec Ashish Kalra
2024-07-05 14:28     ` Borislav Petkov
2024-07-05 14:29     ` Borislav Petkov
2024-07-10 20:12       ` Kalra, Ashish
2024-07-30 19:20 ` [PATCH v12 0/3] x86/snp: Add kexec support Ashish Kalra
2024-07-30 19:21   ` [PATCH v12 1/3] x86/boot: Skip video memory access in the decompressor for SEV-ES/SNP Ashish Kalra
2024-07-30 19:21   ` [PATCH v12 2/3] x86/mm: refactor __set_clr_pte_enc() Ashish Kalra
2024-07-30 19:22   ` [PATCH v12 3/3] x86/snp: Convert shared memory back to private on kexec Ashish Kalra
2024-08-01 19:14 ` [PATCH v13 0/3] x86/snp: Add kexec support Ashish Kalra
2024-08-01 19:14   ` [PATCH v13 1/3] x86/boot: Skip video memory access in the decompressor for SEV-ES/SNP Ashish Kalra
2024-08-01 19:14   ` [PATCH v13 2/3] x86/mm: refactor __set_clr_pte_enc() Ashish Kalra
2024-10-28 16:15     ` Tom Lendacky
2024-08-01 19:14   ` [PATCH v13 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=171871930225.10875.13385118574589510822.tip-bot2@tip-bot2 \
    --to=tip-bot2@linutronix.de \
    --cc=bp@alien8.de \
    --cc=kirill.shutemov@linux.intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tip-commits@vger.kernel.org \
    --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

all inboxes | Powered by JetHome®