Re: [PATCHv11 18/19] x86/acpi: Add support for CPU offlining for ACPI MADT wakeup method

2024-06-18 Thread Kirill A. Shutemov
On Fri, Jun 14, 2024 at 09:06:30AM -0500, Tom Lendacky wrote: > On 6/13/24 09:56, Borislav Petkov wrote: > > On Thu, Jun 13, 2024 at 04:41:00PM +0300, Kirill A. Shutemov wrote: > > > It is easy enough to do. See the patch below. > > > > Thanks, will have a look. >

[PATCHv12 18/19] x86/acpi: Add support for CPU offlining for ACPI MADT wakeup method

2024-06-14 Thread Kirill A. Shutemov
to a single CPU. The change conforms to the approved ACPI spec change proposal. See the Link. Signed-off-by: Kirill A. Shutemov Link: https://lore.kernel.org/all/13356251.uLZWGnKmhe@kreacher Acked-by: Kai Huang Acked-by: Rafael J. Wysocki Reviewed-by: Kuppuswamy Sathyanarayanan Reviewed-by: Thomas

[PATCHv12 19/19] ACPI: tables: Print MULTIPROC_WAKEUP when MADT is parsed

2024-06-14 Thread Kirill A. Shutemov
When MADT is parsed, print MULTIPROC_WAKEUP information: ACPI: MP Wakeup (version[1], mailbox[0x7fffd000], reset[0x7fffe068]) This debug information will be very helpful during bring up. Signed-off-by: Kirill A. Shutemov Acked-by: Kai Huang Acked-by: Rafael J. Wysocki Reviewed-by: Baoquan He

[PATCHv12 17/19] x86/mm: Introduce kernel_ident_mapping_free()

2024-06-14 Thread Kirill A. Shutemov
() callback hooked up and the pgd_t to free. Signed-off-by: Kirill A. Shutemov Acked-by: Kai Huang Tested-by: Tao Liu --- arch/x86/include/asm/init.h | 3 ++ arch/x86/mm/ident_map.c | 73 + 2 files changed, 76 insertions(+) diff --git a/arch/x86/include/asm

[PATCHv12 16/19] x86/smp: Add smp_ops.stop_this_cpu() callback

2024-06-14 Thread Kirill A. Shutemov
If the helper is defined, it is called instead of halt() to stop the CPU at the end of stop_this_cpu() and on crash CPU shutdown. ACPI MADT will use it to hand over the CPU to BIOS in order to be able to wake it up again after kexec. Signed-off-by: Kirill A. Shutemov Acked-by: Kai Huang

[PATCHv12 15/19] x86/acpi: Do not attempt to bring up secondary CPUs in kexec case

2024-06-14 Thread Kirill A. Shutemov
it. This is safe as the booting kernel has the mailbox address cached already and acpi_wakeup_cpu() uses the cached value to bring up the secondary CPUs. Note: This is a Linux specific convention and not covered by the ACPI specification. Signed-off-by: Kirill A. Shutemov Acked-by: Rafael

[PATCHv12 11/19] x86/tdx: Convert shared memory back to private on kexec

2024-06-14 Thread Kirill A. Shutemov
conflicts with code that may access shared memory. Signed-off-by: Kirill A. Shutemov Reviewed-by: Rick Edgecombe Reviewed-by: Kai Huang Tested-by: Tao Liu --- arch/x86/coco/tdx/tdx.c | 94 +++ arch/x86/include/asm/pgtable.h| 5 ++ arch/x86/include/asm

[PATCHv12 14/19] x86/acpi: Rename fields in acpi_madt_multiproc_wakeup structure

2024-06-14 Thread Kirill A. Shutemov
utilized in the code thus far. Rename 'base_address' to 'mailbox_address' to clarify the kind of address it represents. In version 1, the structure includes the reset vector address. Clear and distinct naming helps to prevent any confusion. Signed-off-by: Kirill A. Shutemov Acked-by: Rafael J

[PATCHv12 13/19] x86/mm: Do not zap page table entries mapping unaccepted memory table during kdump.

2024-06-14 Thread Kirill A. Shutemov
stored with E820_TYPE_ACPI and passed between the kernels on kdump was getting zapped as the PMD entry mapping this is above the E820_TYPE_RAM range for the reserved crashkernel memory. Signed-off-by: Ashish Kalra Signed-off-by: Kirill A. Shutemov --- arch/x86/mm/init_64.c | 16 1

[PATCHv12 12/19] x86/mm: Make e820__end_ram_pfn() cover E820_TYPE_ACPI ranges

2024-06-14 Thread Kirill A. Shutemov
guest. TDX guest uses E820_TYPE_ACPI to store the unaccepted memory bitmap and pass it between the kernels on kexec. Signed-off-by: Kirill A. Shutemov Reviewed-by: Dave Hansen Tested-by: Tao Liu --- arch/x86/kernel/e820.c | 9 + 1 file changed, 5 insertions(+), 4 deletions(-) diff --git

[PATCHv12 09/19] x86/tdx: Account shared memory

2024-06-14 Thread Kirill A. Shutemov
it. Keep track of the number of shared pages. This will allow for cross-checking against the shared information in the direct mapping and reporting if the shared bit is lost. Memory conversion is slow and does not happen often. Global atomic is not going to be a bottleneck. Signed-off-by: Kirill

[PATCHv12 10/19] x86/mm: Add callbacks to prepare encrypted memory for kexec

2024-06-14 Thread Kirill A. Shutemov
. - enc_kexec_finish() unshares all existing shared memory, reverting it back to private. Signed-off-by: Kirill A. Shutemov Reviewed-by: Nikolay Borisov Reviewed-by: Kai Huang Tested-by: Tao Liu Signed-off-by: Kirill A. Shutemov --- arch/x86/include/asm/x86_init.h | 10 ++ arch/x86

[PATCHv12 07/19] x86/mm: Make x86_platform.guest.enc_status_change_*() return errno

2024-06-14 Thread Kirill A. Shutemov
TDX is going to have more than one reason to fail enc_status_change_prepare(). Change the callback to return errno instead of assuming -EIO; enc_status_change_finish() changed too to keep the interface symmetric. Signed-off-by: Kirill A. Shutemov Reviewed-by: Dave Hansen Reviewed-by: Kai Huang

[PATCHv12 08/19] x86/mm: Return correct level from lookup_address() if pte is none

2024-06-14 Thread Kirill A. Shutemov
of the VA covered by one PGD entry in 5-level paging mode. Update comments for lookup_address() and lookup_address_in_pgd() to reflect changes in the interface. Signed-off-by: Kirill A. Shutemov Reviewed-by: Rick Edgecombe Reviewed-by: Baoquan He Reviewed-by: Dave Hansen Tested-by: Tao Liu -

[PATCHv12 05/19] x86/relocate_kernel: Use named labels for less confusion

2024-06-14 Thread Kirill A. Shutemov
From: Borislav Petkov That identity_mapped() functions was loving that "1" label to the point of completely confusing its readers. Use named labels in each place for clarity. No functional changes. Signed-off-by: Borislav Petkov (AMD) Signed-off-by: Kirill A. Shutemov --- arch/

[PATCHv12 06/19] x86/kexec: Keep CR4.MCE set during kexec for TDX guest

2024-06-14 Thread Kirill A. Shutemov
and avoid raising any #VEs. The change doesn't affect non-TDX-guest environments. Signed-off-by: Kirill A. Shutemov --- 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

[PATCHv12 01/19] x86/acpi: Extract ACPI MADT wakeup code into a separate file

2024-06-14 Thread Kirill A. Shutemov
In order to prepare for the expansion of support for the ACPI MADT wakeup method, move the relevant code into a separate file. Introduce a new configuration option to clearly indicate dependencies without the use of ifdefs. There have been no functional changes. Signed-off-by: Kirill

[PATCHv12 02/19] x86/apic: Mark acpi_mp_wake_* variables as __ro_after_init

2024-06-14 Thread Kirill A. Shutemov
acpi_mp_wake_mailbox_paddr and acpi_mp_wake_mailbox initialized once during ACPI MADT init and never changed. Signed-off-by: Kirill A. Shutemov Acked-by: Kai Huang Acked-by: Rafael J. Wysocki Reviewed-by: Baoquan He Reviewed-by: Thomas Gleixner Tested-by: Tao Liu --- arch/x86/kernel/acpi

[PATCHv12 04/19] cpu/hotplug, x86/acpi: Disable CPU offlining for ACPI MADT wakeup

2024-06-14 Thread Kirill A. Shutemov
. 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 Acked-by: Rafael J. Wysocki Reviewed-by: Thomas Gleixner Tested-by: Tao Liu

[PATCHv12 03/19] cpu/hotplug: Add support for declaring CPU offlining not supported

2024-06-14 Thread Kirill A. Shutemov
CC_ATTR_HOTPLUG_DISABLED for ACPI MADT wakeup method. Signed-off-by: Kirill A. Shutemov Reviewed-by: Thomas Gleixner Tested-by: Tao Liu --- include/linux/cpuhplock.h | 2 ++ kernel/cpu.c | 13 - 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/include/linux/cpuhplock.h b

[PATCHv12 00/19] x86/tdx: Add kexec support

2024-06-14 Thread Kirill A. Shutemov
ted memory table during kdump. Borislav Petkov (1): x86/relocate_kernel: Use named labels for less confusion Kirill A. Shutemov (17): x86/acpi: Extract ACPI MADT wakeup code into a separate file x86/apic: Mark acpi_mp_wake_* variables as __ro_after_init cpu/hotplug: Add supp

Re: [PATCHv11 18/19] x86/acpi: Add support for CPU offlining for ACPI MADT wakeup method

2024-06-13 Thread Kirill A. Shutemov
UMIP| \ -DISABLE_ENQCMD) +#define DISABLED_MASK16 (DISABLE_PKU|DISABLE_OSPKE|DISABLE_UMIP|DISABLE_ENQCMD) #define DISABLED_MASK170 #define DISABLED_MASK18(DISABLE_IBT) #define DISABLED_MASK19(DISABLE_SEV_SNP) -- Kiryl Shutsemau / Kirill A. Shutemov

Re: [PATCHv11 18/19] x86/acpi: Add support for CPU offlining for ACPI MADT wakeup method

2024-06-12 Thread Kirill A. Shutemov
On Tue, Jun 11, 2024 at 09:46:53PM +0200, Borislav Petkov wrote: > On Tue, Jun 11, 2024 at 06:47:05PM +0300, Kirill A. Shutemov wrote: > > Borislav, given this code deduplication effort is not trivial, maybe we > > can do it as a separate patchset on top of this one? > > Sur

Re: [PATCHv11 05/19] x86/relocate_kernel: Use named labels for less confusion

2024-06-12 Thread Kirill A. Shutemov
On Tue, Jun 11, 2024 at 11:26:17AM -0700, H. Peter Anvin wrote: > On 6/4/24 08:21, Kirill A. Shutemov wrote: > > > > From b45fe48092abad2612c2bafbb199e4de80c99545 Mon Sep 17 00:00:00 2001 > > From: "Kirill A. Shutemov" > > Date: Fri, 10 Feb 2023 12:53:11

Re: [PATCHv11 18/19] x86/acpi: Add support for CPU offlining for ACPI MADT wakeup method

2024-06-11 Thread Kirill A. Shutemov
On Mon, Jun 10, 2024 at 05:01:55PM +0300, Kirill A. Shutemov wrote: > On Mon, Jun 10, 2024 at 03:40:20PM +0200, Borislav Petkov wrote: > > On Fri, Jun 07, 2024 at 06:14:28PM +0300, Kirill A. Shutemov wrote: > > > I was able to address this issue by switching cpa_lock to a mute

Re: [PATCHv11 18/19] x86/acpi: Add support for CPU offlining for ACPI MADT wakeup method

2024-06-10 Thread Kirill A. Shutemov
On Mon, Jun 10, 2024 at 03:40:20PM +0200, Borislav Petkov wrote: > On Fri, Jun 07, 2024 at 06:14:28PM +0300, Kirill A. Shutemov wrote: > > I was able to address this issue by switching cpa_lock to a mutex. > > However, this solution will only work if the callers for set_memory &

Re: [PATCHv11 18/19] x86/acpi: Add support for CPU offlining for ACPI MADT wakeup method

2024-06-07 Thread Kirill A. Shutemov
__flush_tlb_all(); + preempt_enable(); out: return retval; @@ -2551,7 +2553,9 @@ int __init kernel_unmap_pages_in_pgd(pgd_t *pgd, unsigned long address, WARN_ONCE(num_online_cpus() > 1, "Don't call after initializing SMP"); retval = __change_page_attr_set_clr(, 1); + preempt_disable(); __flush_tlb_all(); + preempt_enable(); return retval; } -- Kiryl Shutsemau / Kirill A. Shutemov

Re: [PATCHv11.1 11/19] x86/tdx: Convert shared memory back to private on kexec

2024-06-06 Thread Kirill A. Shutemov
On Wed, Jun 05, 2024 at 06:24:19PM +0200, Borislav Petkov wrote: > On Wed, Jun 05, 2024 at 03:21:42PM +0300, Kirill A. Shutemov wrote: > > If a page can be accessed via private mapping is determined by the > > presence in Secure EPT. This state persist across kexec. > >

Re: [PATCHv11 11/19] x86/tdx: Convert shared memory back to private on kexec

2024-06-05 Thread Kirill A. Shutemov
On Tue, Jun 04, 2024 at 09:27:59AM -0700, Dave Hansen wrote: > On 5/28/24 02:55, Kirill A. Shutemov wrote: > > +/* Stop new private<->shared conversions */ > > +static void tdx_kexec_begin(bool crash) > > +{ > > + /* > > +* Crash kernel reaches he

Re: [PATCHv11.1 11/19] x86/tdx: Convert shared memory back to private on kexec

2024-06-05 Thread Kirill A. Shutemov
On Tue, Jun 04, 2024 at 08:05:54PM +0200, Borislav Petkov wrote: > On Tue, Jun 04, 2024 at 07:14:00PM +0300, Kirill A. Shutemov wrote: > > /* > > * If tdx_enc_status_changed() fails, it leaves memory > >

Re: [PATCHv11 09/19] x86/tdx: Account shared memory

2024-06-04 Thread Kirill A. Shutemov
On Tue, Jun 04, 2024 at 09:08:25AM -0700, Dave Hansen wrote: > On 5/28/24 02:55, Kirill A. Shutemov wrote: > > Keep track of the number of shared pages. This will allow for > > cross-checking against the shared information in the direct mapping > > and reporting if t

Re: [PATCHv11.1 11/19] x86/tdx: Convert shared memory back to private on kexec

2024-06-04 Thread Kirill A. Shutemov
On Tue, Jun 04, 2024 at 08:47:22AM -0700, Dave Hansen wrote: > On 6/4/24 08:32, Kirill A. Shutemov wrote: > > What about the comment below? > > > > /* > > * One possible reason for the failure is if kexec raced > >

Re: [PATCHv11.1 11/19] x86/tdx: Convert shared memory back to private on kexec

2024-06-04 Thread Kirill A. Shutemov
On Mon, Jun 03, 2024 at 10:37:54AM +0200, Borislav Petkov wrote: > On Sun, Jun 02, 2024 at 05:23:03PM +0300, Kirill A. Shutemov wrote: > > + /* > > +* The only thing one can do at this point on failure > > +* is pa

Re: [PATCHv11 05/19] x86/relocate_kernel: Use named labels for less confusion

2024-06-04 Thread Kirill A. Shutemov
e above can simply be: > > > > andl $(X86_CR4_PAE | X86_CR4_LA54), %r13 > > movq %r13, %cr4 > > > > %r13 is dead afterwards, and the PAE bit *will* be set in %r13 anyway. > > Yeah, with a proper comment. The testing of bits is not really needed. I think

[PATCHv11.1 11/19] x86/tdx: Convert shared memory back to private on kexec

2024-06-02 Thread Kirill A. Shutemov
conflicts with code that may access shared memory. Signed-off-by: Kirill A. Shutemov Reviewed-by: Rick Edgecombe Reviewed-by: Kai Huang Tested-by: Tao Liu --- arch/x86/coco/tdx/tdx.c | 90 +++ arch/x86/include/asm/pgtable.h| 5 ++ arch/x86/include/asm

Re: [PATCHv11 11/19] x86/tdx: Convert shared memory back to private on kexec

2024-06-02 Thread Kirill A. Shutemov
On Fri, May 31, 2024 at 05:14:42PM +0200, Borislav Petkov wrote: > On Tue, May 28, 2024 at 12:55:14PM +0300, Kirill A. Shutemov wrote: > > +static void tdx_kexec_finish(void) > > +{ > > + unsigned long addr, end; > > + long found = 0, shared; > > + >

[PATCHv11.2 10/19] x86/mm: Add callbacks to prepare encrypted memory for kexec

2024-06-02 Thread Kirill A. Shutemov
. - enc_kexec_finish() unshares all existing shared memory, reverting it back to private. Signed-off-by: Kirill A. Shutemov Reviewed-by: Nikolay Borisov Reviewed-by: Kai Huang Tested-by: Tao Liu Signed-off-by: Kirill A. Shutemov --- arch/x86/include/asm/x86_init.h | 12 arch

Re: [PATCHv11.1 10/19] x86/mm: Add callbacks to prepare encrypted memory for kexec

2024-06-02 Thread Kirill A. Shutemov
Please disregard this. I failed to fold changes :/ -- Kiryl Shutsemau / Kirill A. Shutemov

[PATCHv11.1 10/19] x86/mm: Add callbacks to prepare encrypted memory for kexec

2024-06-02 Thread Kirill A. Shutemov
. - enc_kexec_finish() unshares all existing shared memory, reverting it back to private. Signed-off-by: Kirill A. Shutemov Reviewed-by: Nikolay Borisov Reviewed-by: Kai Huang Tested-by: Tao Liu --- arch/x86/include/asm/x86_init.h | 9 + arch/x86/kernel/crash.c | 12

Re: [PATCHv11 05/19] x86/relocate_kernel: Use named labels for less confusion

2024-05-29 Thread Kirill A. Shutemov
On Wed, May 29, 2024 at 01:47:50PM +0300, Nikolay Borisov wrote: > > > On 28.05.24 г. 12:55 ч., Kirill A. Shutemov wrote: > > From: Borislav Petkov > > > > That identity_mapped() functions was loving that "1" label to the point > > of completely confu

[PATCHv11 07/19] x86/mm: Make x86_platform.guest.enc_status_change_*() return errno

2024-05-28 Thread Kirill A. Shutemov
TDX is going to have more than one reason to fail enc_status_change_prepare(). Change the callback to return errno instead of assuming -EIO; enc_status_change_finish() changed too to keep the interface symmetric. Signed-off-by: Kirill A. Shutemov Reviewed-by: Dave Hansen Reviewed-by: Kai Huang

[PATCHv11 14/19] x86/acpi: Rename fields in acpi_madt_multiproc_wakeup structure

2024-05-28 Thread Kirill A. Shutemov
utilized in the code thus far. Rename 'base_address' to 'mailbox_address' to clarify the kind of address it represents. In version 1, the structure includes the reset vector address. Clear and distinct naming helps to prevent any confusion. Signed-off-by: Kirill A. Shutemov Reviewed-by: Kai Huang

[PATCHv11 12/19] x86/mm: Make e820__end_ram_pfn() cover E820_TYPE_ACPI ranges

2024-05-28 Thread Kirill A. Shutemov
guest. TDX guest uses E820_TYPE_ACPI to store the unaccepted memory bitmap and pass it between the kernels on kexec. Signed-off-by: Kirill A. Shutemov Reviewed-by: Dave Hansen Tested-by: Tao Liu --- arch/x86/kernel/e820.c | 9 + 1 file changed, 5 insertions(+), 4 deletions(-) diff --git

[PATCHv11 17/19] x86/mm: Introduce kernel_ident_mapping_free()

2024-05-28 Thread Kirill A. Shutemov
() callback hooked up and the pgd_t to free. Signed-off-by: Kirill A. Shutemov Acked-by: Kai Huang Tested-by: Tao Liu --- arch/x86/include/asm/init.h | 3 ++ arch/x86/mm/ident_map.c | 73 + 2 files changed, 76 insertions(+) diff --git a/arch/x86/include/asm

[PATCHv11 10/19] x86/mm: Add callbacks to prepare encrypted memory for kexec

2024-05-28 Thread Kirill A. Shutemov
. - enc_kexec_finish() unshares all existing shared memory, reverting it back to private. Signed-off-by: Kirill A. Shutemov Reviewed-by: Nikolay Borisov Reviewed-by: Kai Huang Tested-by: Tao Liu --- arch/x86/include/asm/x86_init.h | 9 + arch/x86/kernel/crash.c | 12

[PATCHv11 09/19] x86/tdx: Account shared memory

2024-05-28 Thread Kirill A. Shutemov
it. Keep track of the number of shared pages. This will allow for cross-checking against the shared information in the direct mapping and reporting if the shared bit is lost. Signed-off-by: Kirill A. Shutemov Reviewed-by: Kai Huang Tested-by: Tao Liu --- arch/x86/coco/tdx/tdx.c | 7 +++ 1 file

[PATCHv11 19/19] ACPI: tables: Print MULTIPROC_WAKEUP when MADT is parsed

2024-05-28 Thread Kirill A. Shutemov
When MADT is parsed, print MULTIPROC_WAKEUP information: ACPI: MP Wakeup (version[1], mailbox[0x7fffd000], reset[0x7fffe068]) This debug information will be very helpful during bring up. Signed-off-by: Kirill A. Shutemov Reviewed-by: Baoquan He Reviewed-by: Kuppuswamy Sathyanarayanan Acked

[PATCHv11 18/19] x86/acpi: Add support for CPU offlining for ACPI MADT wakeup method

2024-05-28 Thread Kirill A. Shutemov
CPU. The change conforms to the approved ACPI spec change proposal. See the Link. Signed-off-by: Kirill A. Shutemov Link: https://lore.kernel.org/all/13356251.uLZWGnKmhe@kreacher Acked-by: Kai Huang Reviewed-by: Kuppuswamy Sathyanarayanan Reviewed-by: Thomas Gleixner Tested-by: Tao Liu

[PATCHv11 16/19] x86/smp: Add smp_ops.stop_this_cpu() callback

2024-05-28 Thread Kirill A. Shutemov
If the helper is defined, it is called instead of halt() to stop the CPU at the end of stop_this_cpu() and on crash CPU shutdown. ACPI MADT will use it to hand over the CPU to BIOS in order to be able to wake it up again after kexec. Signed-off-by: Kirill A. Shutemov Acked-by: Kai Huang

[PATCHv11 15/19] x86/acpi: Do not attempt to bring up secondary CPUs in kexec case

2024-05-28 Thread Kirill A. Shutemov
it. This is safe as the booting kernel has the mailbox address cached already and acpi_wakeup_cpu() uses the cached value to bring up the secondary CPUs. Note: This is a Linux specific convention and not covered by the ACPI specification. Signed-off-by: Kirill A. Shutemov Reviewed-by: Kai

[PATCHv11 04/19] cpu/hotplug, x86/acpi: Disable CPU offlining for ACPI MADT wakeup

2024-05-28 Thread Kirill A. Shutemov
. 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 Reviewed-by: Thomas Gleixner Tested-by: Tao Liu --- arch/x86/coco/core.c

[PATCHv11 02/19] x86/apic: Mark acpi_mp_wake_* variables as __ro_after_init

2024-05-28 Thread Kirill A. Shutemov
acpi_mp_wake_mailbox_paddr and acpi_mp_wake_mailbox initialized once during ACPI MADT init and never changed. Signed-off-by: Kirill A. Shutemov Acked-by: Kai Huang Reviewed-by: Baoquan He Reviewed-by: Thomas Gleixner Tested-by: Tao Liu --- arch/x86/kernel/acpi/madt_wakeup.c | 4 ++-- 1 file

[PATCHv11 13/19] x86/mm: Do not zap page table entries mapping unaccepted memory table during kdump.

2024-05-28 Thread Kirill A. Shutemov
stored with E820_TYPE_ACPI and passed between the kernels on kdump was getting zapped as the PMD entry mapping this is above the E820_TYPE_RAM range for the reserved crashkernel memory. Signed-off-by: Ashish Kalra Signed-off-by: Kirill A. Shutemov --- arch/x86/mm/init_64.c | 16 1

[PATCHv11 11/19] x86/tdx: Convert shared memory back to private on kexec

2024-05-28 Thread Kirill A. Shutemov
conflicts with code that may access shared memory. Signed-off-by: Kirill A. Shutemov Reviewed-by: Rick Edgecombe Reviewed-by: Kai Huang Tested-by: Tao Liu --- arch/x86/coco/tdx/tdx.c | 69 +++ arch/x86/include/asm/pgtable.h| 5 +++ arch/x86/include/asm

[PATCHv11 05/19] x86/relocate_kernel: Use named labels for less confusion

2024-05-28 Thread Kirill A. Shutemov
From: Borislav Petkov That identity_mapped() functions was loving that "1" label to the point of completely confusing its readers. Use named labels in each place for clarity. No functional changes. Signed-off-by: Borislav Petkov (AMD) Signed-off-by: Kirill A. Shutemov --- arch/

[PATCHv11 08/19] x86/mm: Return correct level from lookup_address() if pte is none

2024-05-28 Thread Kirill A. Shutemov
of the VA covered by one PGD entry in 5-level paging mode. Update comments for lookup_address() and lookup_address_in_pgd() to reflect changes in the interface. Signed-off-by: Kirill A. Shutemov Reviewed-by: Rick Edgecombe Reviewed-by: Baoquan He Reviewed-by: Dave Hansen Tested-by: Tao Liu -

[PATCHv11 06/19] x86/kexec: Keep CR4.MCE set during kexec for TDX guest

2024-05-28 Thread Kirill A. Shutemov
and avoid raising any #VEs. The change doesn't affect non-TDX-guest environments. Signed-off-by: Kirill A. Shutemov --- arch/x86/kernel/relocate_kernel_64.S | 16 ++-- 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/arch/x86/kernel/relocate_kernel_64.S b/arch/x86/kernel

[PATCHv11 03/19] cpu/hotplug: Add support for declaring CPU offlining not supported

2024-05-28 Thread Kirill A. Shutemov
CC_ATTR_HOTPLUG_DISABLED for ACPI MADT wakeup method. Signed-off-by: Kirill A. Shutemov Reviewed-by: Thomas Gleixner Tested-by: Tao Liu --- include/linux/cpu.h | 2 ++ kernel/cpu.c| 13 - 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/include/linux/cpu.h b/include/linux/cpu.h

[PATCHv11 01/19] x86/acpi: Extract ACPI MADT wakeup code into a separate file

2024-05-28 Thread Kirill A. Shutemov
In order to prepare for the expansion of support for the ACPI MADT wakeup method, move the relevant code into a separate file. Introduce a new configuration option to clearly indicate dependencies without the use of ifdefs. There have been no functional changes. Signed-off-by: Kirill

[PATCHv11 00/19] x86/tdx: Add kexec support

2024-05-28 Thread Kirill A. Shutemov
nel/second kernel/; - Update commit messages and comments; Ashish Kalra (1): x86/mm: Do not zap page table entries mapping unaccepted memory table during kdump. Borislav Petkov (1): x86/relocate_kernel: Use named labels for less confusion Kirill A. Shutemov (17): x86/acpi: Extract ACPI M

Re: [PATCHv10 10/18] x86/tdx: Convert shared memory back to private on kexec

2024-05-08 Thread Kirill A. Shutemov
On Wed, May 08, 2024 at 02:04:22PM +0200, Borislav Petkov wrote: > On Mon, May 06, 2024 at 06:37:19PM +0300, Kirill A. Shutemov wrote: > > "second kernel" is nomenclature kexec folks are using, but okay. > > And the "third kernel" is the one which got kexec-ed

Re: [PATCHv10 10/18] x86/tdx: Convert shared memory back to private on kexec

2024-05-06 Thread Kirill A. Shutemov
On Sun, May 05, 2024 at 02:13:19PM +0200, Borislav Petkov wrote: > On Tue, Apr 09, 2024 at 02:30:02PM +0300, Kirill A. Shutemov wrote: > > TDX guests allocate shared buffers to perform I/O. It is done by > > allocating pages normally from the buddy allocator and converting the

Re: [PATCHv10.1 09/18] x86/mm: Adding callbacks to prepare encrypted memory for kexec

2024-05-06 Thread Kirill A. Shutemov
down(void) > > #ifdef CONFIG_X86_64 > > x86_platform.iommu_shutdown(); > > #endif > > + > > + if (kexec_in_progress) > > + x86_platform.guest.enc_kexec_unshare_mem(); > > ... but they're split here. > > And I don't know why and nothing tells me... I do. See comment just above enc_kexec_stop_conversion() call. Do you want also comment for enc_kexec_unshare_mem() ? -- Kiryl Shutsemau / Kirill A. Shutemov ___ kexec mailing list kexec@lists.infradead.org http://lists.infradead.org/mailman/listinfo/kexec

Re: [PATCHv10 05/18] x86/kexec: Keep CR4.MCE set during kexec for TDX guest

2024-04-30 Thread Kirill A. Shutemov
On Tue, Apr 30, 2024 at 03:03:23PM +0200, Borislav Petkov wrote: > On Tue, Apr 09, 2024 at 02:29:57PM +0300, Kirill A. Shutemov wrote: > > +1: > > + testq $X86_CR4_MCE, %r13 > > + jz 1f > > + ALTERNATIVE "", __stringify(orl $X86_CR4_MCE, %ea

Re: [PATCHv10 05/18] x86/kexec: Keep CR4.MCE set during kexec for TDX guest

2024-04-29 Thread Kirill A. Shutemov
On Mon, Apr 29, 2024 at 04:45:08PM +0200, Borislav Petkov wrote: > On Mon, Apr 29, 2024 at 04:17:38PM +0300, Kirill A. Shutemov wrote: > > As I mentioned above, clearing CR4.MCE triggers #VE. It is quirk of the > > platform. > > You mean when identity_mapped() runs as part

Re: [PATCHv10 06/18] x86/mm: Make x86_platform.guest.enc_status_change_*() return errno

2024-04-29 Thread Kirill A. Shutemov
On Sun, Apr 28, 2024 at 07:25:57PM +0200, Borislav Petkov wrote: > On Tue, Apr 09, 2024 at 02:29:58PM +0300, Kirill A. Shutemov wrote: > > TDX is going to have more than one reason to fail > > enc_status_change_prepare(). > > > > Change the callback to return err

Re: [PATCHv10 05/18] x86/kexec: Keep CR4.MCE set during kexec for TDX guest

2024-04-29 Thread Kirill A. Shutemov
On Sun, Apr 28, 2024 at 07:11:11PM +0200, Borislav Petkov wrote: > On Tue, Apr 09, 2024 at 06:26:05PM +0300, Kirill A. Shutemov wrote: > > From 6be428e3b1c6fb494b2c48ba6a7c133514a0b2b4 Mon Sep 17 00:00:00 2001 > > From: "Kirill A. Shutemov" > > Date: Fri, 10 Feb

Re: [PATCHv10 04/18] cpu/hotplug, x86/acpi: Disable CPU offlining for ACPI MADT wakeup

2024-04-24 Thread Kirill A. Shutemov
On Wed, Apr 24, 2024 at 03:50:52PM +0200, Borislav Petkov wrote: > On Wed, Apr 24, 2024 at 11:38:42AM +0300, Kirill A. Shutemov wrote: > > It was wrong from beginning. If ACPI MADT wake up method is used on the > > platform, we cannot handle offline, regardless if it is TDX or n

Re: [PATCHv10 04/18] cpu/hotplug, x86/acpi: Disable CPU offlining for ACPI MADT wakeup

2024-04-24 Thread Kirill A. Shutemov
MADT is the only wakeup method supported in TDX guests. But offline is broken is because of ACPI MADT, not because of TDX. -- Kiryl Shutsemau / Kirill A. Shutemov ___ kexec mailing list kexec@lists.infradead.org http://lists.infradead.org/mailman/listinfo/kexec

Re: [PATCHv10 03/18] cpu/hotplug: Add support for declaring CPU offlining not supported

2024-04-19 Thread Kirill A. Shutemov
On Thu, Apr 18, 2024 at 04:37:09PM +0200, Borislav Petkov wrote: > On Tue, Apr 09, 2024 at 02:29:55PM +0300, Kirill A. Shutemov wrote: > > +/* Declare CPU offlining not supported */ > > +void cpu_hotplug_disable_offlining(void) > > +{ > > + cpu_maps_update_begin();

Re: [PATCHv10 01/18] x86/acpi: Extract ACPI MADT wakeup code into a separate file

2024-04-19 Thread Kirill A. Shutemov
On Thu, Apr 18, 2024 at 06:03:24PM +0200, Borislav Petkov wrote: > On Tue, Apr 09, 2024 at 02:29:53PM +0300, Kirill A. Shutemov wrote: > > diff --git a/arch/x86/kernel/acpi/Makefile b/arch/x86/kernel/acpi/Makefile > > index fc17b3f136fe..8c7329c88a75 100644 > > --- a/arch/x86

Re: [PATCHv10 05/18] x86/kexec: Keep CR4.MCE set during kexec for TDX guest

2024-04-09 Thread Kirill A. Shutemov
On Tue, Apr 09, 2024 at 07:22:24AM -0700, Sean Christopherson wrote: > On Tue, Apr 09, 2024, Kirill A. Shutemov wrote: > > Depending on setup, TDX guests might be allowed to clear CR4.MCE. > > Attempt to clear it leads to #VE. > > > > Use alternatives to keep the flag

Re: [PATCHv9 00/17] x86/tdx: Add kexec support

2024-04-07 Thread Kirill A. Shutemov
yl Shutsemau / Kirill A. Shutemov ___ kexec mailing list kexec@lists.infradead.org http://lists.infradead.org/mailman/listinfo/kexec

Re: [PATCHv9 05/17] x86/kexec: Keep CR4.MCE set during kexec for TDX guest

2024-04-04 Thread Kirill A. Shutemov
On Thu, Apr 04, 2024 at 10:40:34AM +1300, Huang, Kai wrote: > > > On 3/04/2024 4:42 am, Kirill A. Shutemov wrote: > > On Fri, Mar 29, 2024 at 06:48:21PM +0200, Kirill A. Shutemov wrote: > > > On Fri, Mar 29, 2024 at 11:21:32PM +0800, Xiaoyao Li wrote: > > &g

Re: [PATCHv9 05/17] x86/kexec: Keep CR4.MCE set during kexec for TDX guest

2024-04-02 Thread Kirill A. Shutemov
On Fri, Mar 29, 2024 at 06:48:21PM +0200, Kirill A. Shutemov wrote: > On Fri, Mar 29, 2024 at 11:21:32PM +0800, Xiaoyao Li wrote: > > On 3/25/2024 6:38 PM, Kirill A. Shutemov wrote: > > > TDX guests are not allowed to clear CR4.MCE. Attempt to clear it leads > > > to #VE

Re: [PATCHv9 05/17] x86/kexec: Keep CR4.MCE set during kexec for TDX guest

2024-03-29 Thread Kirill A. Shutemov
On Fri, Mar 29, 2024 at 11:21:32PM +0800, Xiaoyao Li wrote: > On 3/25/2024 6:38 PM, Kirill A. Shutemov wrote: > > TDX guests are not allowed to clear CR4.MCE. Attempt to clear it leads > > to #VE. > > Will we consider making it more safe and compatible for futu

Re: [PATCH v2 2/3] x86/mm: Do not zap page table entries mapping unaccepted memory table during kdump.

2024-03-21 Thread Kirill A. Shutemov
the reserved crashkernel memory. > > Signed-off-by: Ashish Kalra Acked-by: Kirill A. Shutemov I guess it would be better if I take this patch into my kexec patchset. I guess I just got lucky not to step onto the issue. -- Kiryl Shutsemau / Kirill A. Shutemov __

Re: [PATCHv8 00/17, CORRECTED] x86/tdx: Add kexec support

2024-03-06 Thread Kirill A. Shutemov
On Tue, Feb 27, 2024 at 11:24:35PM +0200, Kirill A. Shutemov wrote: > The patchset adds bits and pieces to get kexec (and crashkernel) work on > TDX guest. > > The last patch implements CPU offlining according to the approved ACPI > spec change poposal[1]. It unlocks kexec with a

Re: [PATCHv8 17/17] ACPI: tables: Print MULTIPROC_WAKEUP when MADT is parsed

2024-02-28 Thread Kirill A. Shutemov
On Wed, Feb 28, 2024 at 11:08:38AM +1300, Huang, Kai wrote: > > > On 28/02/2024 10:24 am, Kirill A. Shutemov wrote: > > When MADT is parsed, print MULTIPROC_WAKEUP information: > > > > ACPI: MP Wakeup (version[1], mailbox[0x7fffd000], reset[0x7fffe068]) >

Re: [PATCHv8 00/16] x86/tdx: Add kexec support

2024-02-27 Thread Kirill A. Shutemov
Please disregard. I've sent old patches by mistake. -- Kiryl Shutsemau / Kirill A. Shutemov ___ kexec mailing list kexec@lists.infradead.org http://lists.infradead.org/mailman/listinfo/kexec

Re: [PATCHv7 10/16] x86/tdx: Convert shared memory back to private on kexec

2024-02-26 Thread Kirill A. Shutemov
On Sun, Feb 25, 2024 at 04:58:46PM +0200, Kirill A. Shutemov wrote: > On Fri, Feb 23, 2024 at 11:39:07AM -0800, Dave Hansen wrote: > > On 2/12/24 02:44, Kirill A. Shutemov wrote: > > > +static void tdx_kexec_stop_conversion(bool crash) > > > +{ > > > + /* S

Re: [PATCHv7 08/16] x86/tdx: Account shared memory

2024-02-25 Thread Kirill A. Shutemov
On Fri, Feb 23, 2024 at 11:08:18AM -0800, Dave Hansen wrote: > On 2/12/24 02:44, Kirill A. Shutemov wrote: > > The kernel will convert all shared memory back to private during kexec. > > The direct mapping page tables will provide information on which memory > > is shared. >

Re: [PATCHv7 10/16] x86/tdx: Convert shared memory back to private on kexec

2024-02-25 Thread Kirill A. Shutemov
On Fri, Feb 23, 2024 at 11:39:07AM -0800, Dave Hansen wrote: > On 2/12/24 02:44, Kirill A. Shutemov wrote: > > +static void tdx_kexec_stop_conversion(bool crash) > > +{ > > + /* Stop new private<->shared conversions */ > > + conversion_allowed = false; >

Re: [PATCHv7 07/16] x86/mm: Return correct level from lookup_address() if pte is none

2024-02-22 Thread Kirill A. Shutemov
On Thu, Feb 22, 2024 at 07:01:41PM +0800, Baoquan He wrote: > On 02/21/24 at 04:15pm, Kirill A. Shutemov wrote: > > On Wed, Feb 21, 2024 at 10:37:29AM +0800, Baoquan He wrote: > > > > diff --git a/arch/x86/mm/pat/set_memory.c b/arch/x86/mm/pat/set_memory.c > > > >

Re: [PATCH 2/2] x86/snp: Convert shared memory back to private on kexec

2024-02-22 Thread Kirill A. Shutemov
> > + * conversions_in_progress. > > +*/ > > + barrier(); > > This should be smp_wmb(). > Why? -- Kiryl Shutsemau / Kirill A. Shutemov ___ kexec mailing list kexec@lists.infradead.org http://lists.infradead.org/mailman/listinfo/kexec

Re: [PATCHv7 07/16] x86/mm: Return correct level from lookup_address() if pte is none

2024-02-21 Thread Kirill A. Shutemov
> > * > > - * Note: We return pud and pmd either when the entry is marked large > > - * or when the present bit is not set. Otherwise we would return a > > - * pointer to a nonexisting mapping. > > + * Note: the function returns p4d, pud and pmd either when the entry

Re: [PATCH 1/2] x86/mm: Do not zap PMD entry mapping unaccepted memory table during kdump.

2024-02-20 Thread Kirill A. Shutemov
> + E820_TYPE_ACPI)) > set_pmd_init(pmd, __pmd(0), init); > continue; Why do you single out phys_pmd_init()? I think it has to be addressed for all page table levels as we do for E820_TYPE_RAM and E820_TYPE_RESERVED_KERN. --

Re: [PATCHv7 07/16] x86/mm: Return correct level from lookup_address() if pte is none

2024-02-20 Thread Kirill A. Shutemov
pud and pmd either when the entry is marked + * large or when the present bit is not set. Otherwise it returns NULL. */ pte_t *lookup_address(unsigned long address, unsigned int *level) { -- Kiryl Shutsemau / Kirill A. Shutemov ___ kexec mailing list kexec@lists.infradead.org http://lists.infradead.org/mailman/listinfo/kexec

Re: [PATCHv7 07/16] x86/mm: Return correct level from lookup_address() if pte is none

2024-02-19 Thread Kirill A. Shutemov
On Mon, Feb 19, 2024 at 01:12:32PM +0800, Baoquan He wrote: > On 02/12/24 at 12:44pm, Kirill A. Shutemov wrote: > > lookup_address() only returns correct page table level for the entry if > > the entry is not none. > > > > Make the helper to always return correct 'lev

Re: [PATCHv7 01/16] x86/acpi: Extract ACPI MADT wakeup code into a separate file

2024-02-19 Thread Kirill A. Shutemov
viewed-by: Baoquan He Thanks! >From 23b7f9856a3d6b91c702def1e03872a60ae07d0e Mon Sep 17 00:00:00 2001 From: "Kirill A. Shutemov" Date: Mon, 19 Feb 2024 11:58:19 +0200 Subject: [PATCH] ACPI: tables: Print MULTIPROC_WAKEUP when MADT is parse When MADT is parsed, print MULTIPROC_WAKEU

Re: [PATCHv6 00/16] x86/tdx: Add kexec support

2024-01-30 Thread Kirill A. Shutemov
On Tue, Jan 30, 2024 at 03:59:34PM +0100, Paolo Bonzini wrote: > On Tue, Jan 30, 2024 at 3:34 PM Kirill A. Shutemov > wrote: > > > > On Tue, Jan 30, 2024 at 02:43:15PM +0100, Paolo Bonzini wrote: > > > On 1/24/24 13:55, Kirill A. Shutemov wrote: > > > > T

Re: [PATCHv6 00/16] x86/tdx: Add kexec support

2024-01-30 Thread Kirill A. Shutemov
On Tue, Jan 30, 2024 at 02:43:15PM +0100, Paolo Bonzini wrote: > On 1/24/24 13:55, Kirill A. Shutemov wrote: > > The patchset adds bits and pieces to get kexec (and crashkernel) work on > > TDX guest. > > > > The last patch implements CPU offlining according to the ap

Re: [PATCHv6 10/16] x86/tdx: Convert shared memory back to private on kexec

2024-01-29 Thread Kirill A. Shutemov
On Mon, Jan 29, 2024 at 07:09:37AM -0600, Kalra, Ashish wrote: > Hello Kirill, > > On 1/29/2024 4:36 AM, Kirill A. Shutemov wrote: > > On Mon, Jan 29, 2024 at 04:24:09AM -0600, Kalra, Ashish wrote: > > > In case of SNP and crash/kdump case, we need to prevent th

Re: [PATCHv6 10/16] x86/tdx: Convert shared memory back to private on kexec

2024-01-29 Thread Kirill A. Shutemov
st.enc_kexec_unshare_mem(); + } + crash_save_cpu(regs, safe_smp_processor_id()); } -- Kiryl Shutsemau / Kirill A. Shutemov ___ kexec mailing list kexec@lists.infradead.org http://lists.infradead.org/mailman/listinfo/kexec

Re: [PATCHv6 16/16] x86/acpi: Add support for CPU offlining for ACPI MADT wakeup method

2024-01-27 Thread Kirill A. Shutemov
+ > > + if (!timeout) > Nit: IMO, since you are dumping failure error message (not timeout > message), you can use non zero acpi_mp_wake_mailbox->command > check. But it is up to you. I think my version is pretty idiomatic. The same pattern used in other places. For instance,

Re: [PATCHv5 10/16] x86/tdx: Convert shared memory back to private on kexec

2024-01-16 Thread Kirill A. Shutemov
On Tue, Jan 16, 2024 at 10:28:22AM +0300, Kirill A. Shutemov wrote: > > > @@ -809,12 +823,25 @@ static bool tdx_enc_status_changed(unsigned long > > > vaddr, int numpages, bool enc) > > > static int tdx_enc_status_change_prepare(unsigned long

Re: [PATCHv5 10/16] x86/tdx: Convert shared memory back to private on kexec

2024-01-16 Thread Kirill A. Shutemov
On Tue, Jan 16, 2024 at 10:01:47AM +0200, Nikolay Borisov wrote: > > > On 16.01.24 г. 9:28 ч., Kirill A. Shutemov wrote: > > > > > > > @@ -41,6 +44,9 @@ > > > >static atomic_long_t nr_shared; > > > > +static atomic_t conversions_in_pr

Re: [PATCHv5 10/16] x86/tdx: Convert shared memory back to private on kexec

2024-01-15 Thread Kirill A. Shutemov
On Mon, Jan 15, 2024 at 12:53:42PM +0200, Nikolay Borisov wrote: > > > On 23.12.23 г. 1:52 ч., Kirill A. Shutemov wrote: > > TDX guests allocate shared buffers to perform I/O. It is done by > > allocating pages normally from the buddy allocator and converti

Re: [PATCHv5 16/16] x86/acpi: Add support for CPU offlining for ACPI MADT wakeup method

2024-01-15 Thread Kirill A. Shutemov
On Mon, Jan 15, 2024 at 03:19:43PM +0200, Nikolay Borisov wrote: > > + /* Switch to identity mapping */ > > + movq%rsi, %rax > > + movq%rax, %cr3 > > nit: Can't you move directly to cr3 For some reason, I thought I couldn't. Will fix. -- Kiryl Shutse

Re: [PATCHv4 05/14] x86/kvm: Do not try to disable kvmclock if it was not enabled

2024-01-04 Thread Kirill A. Shutemov
On Wed, Dec 13, 2023 at 09:22:34AM -0800, Sean Christopherson wrote: > On Tue, Dec 12, 2023, Kirill A. Shutemov wrote: > > On Tue, Dec 05, 2023 at 03:45:01AM +0300, Kirill A. Shutemov wrote: > > > kvm_guest_cpu_offline() tries to disable kvmclock regardless if it is >

  1   2   3   >