Received: by 2002:a05:7412:f690:b0:e2:908c:2ebd with SMTP id ej16csp1092019rdb; Fri, 20 Oct 2023 08:13:13 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHvdhSlMC35GlvUaR4+M5N2c3kbt3EPFSApBNYNUfKbC1+kT65D6o2zEbhx5SJg7iKswayq X-Received: by 2002:a17:902:7485:b0:1ca:7086:f009 with SMTP id h5-20020a170902748500b001ca7086f009mr1952633pll.61.1697814793544; Fri, 20 Oct 2023 08:13:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1697814793; cv=none; d=google.com; s=arc-20160816; b=0y0IZkNmlobcrJjzN/RFw1a0k5hbS3PPHEZ9zaAJRilxUP/6C6Xbo27jMnyLGDnh2t zr5ZZ1SbTyGVPGmc2CtaKlHYk+5IuIDFevflWWHnhO08eDxKYa1m938/mEDeKj4r9gyz eWS4snWz9HkXxL6E5sSrqKqMKNpwB+6crIdwYRsCLVhP+rvyNoHvFShOhczMm6i5sAhG Cxgmh6lB9LT94eIpsdJWc60mWAoUySwWjJitjv1uLlyDo9UUMrTfosuzGwgT4SuiS+GI rNcdTObu0A39yLfzPC5B84jvI6rdf4z6T71y8jJUac6EdwyTpZcO8I9PMc9lMVG1Sz68 Lmwg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=YMh1j6LXo+oiLXUxNdoEuRoOu/QTTd2inMRR4iYQyX4=; fh=OvJRnOqsMTm9XoNmEwebcqh9Ud7yh1CTeKAP84ols98=; b=oTk4cTMRmFvsSZ+LsvChrZqnADb87eGLBWfBJGhISTa55210lCaUV10m7Kl3s/uqpt SNgARtHynXJh9jDZrOWHpFHeqJRJJIQQLrBEiIUyvOJCC+n3BnTqS+bGlLU7WjWr0Jat DYbhY+YWP33j+s72Mr0oejdIA8QjD0LhI3AQx8Ks5C+D0hZgJk/O9Z7b0xqyNZseCsLF z/HQnSpHICuojFwlodO6oHKk71/tTGNJZeurj8QxrBhjvz3LSBMjl4SHRIRcmzbM73m3 lak40cI9LHC1hchO/oiI9u+thrInX5mWB2fKcsD7b1DD2QeRXwx6qaxcVVqyQtsHbckX y0nQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=kXBiHVlC; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from lipwig.vger.email (lipwig.vger.email. [23.128.96.33]) by mx.google.com with ESMTPS id z22-20020a1709028f9600b001c62cfff799si1944886plo.176.2023.10.20.08.13.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 Oct 2023 08:13:13 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) client-ip=23.128.96.33; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=kXBiHVlC; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by lipwig.vger.email (Postfix) with ESMTP id 8F89A82E17FB; Fri, 20 Oct 2023 08:13:09 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1377647AbjJTPNB (ORCPT + 99 others); Fri, 20 Oct 2023 11:13:01 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57506 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1377637AbjJTPM6 (ORCPT ); Fri, 20 Oct 2023 11:12:58 -0400 Received: from mgamail.intel.com (mgamail.intel.com [134.134.136.20]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EC9B5D65 for ; Fri, 20 Oct 2023 08:12:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1697814776; x=1729350776; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=U1LobsWM3Aw59qiHWBxCAWdYIVARSrv9M2Xk36B7ecs=; b=kXBiHVlCEH+T4RzWlFzFJxrnD+7RTcYZQv3ktwdYInK6UvajRd0cUwuw s6ktcKVtSHP6Meup7Ps+CQD6UfW1vJYe7ab+QUXhyPDCZV4XxoVdGDafa rp7hiXX2noQURW34G+XwyjxTHd1ElBYASkTXtFtFw5KcvqkkrRJWe2v+3 tTp+mykrkdyj6SCgNajJpdmr0mCtLQQm8+TWOi6Rd8gn6o++WraTQbory DdiTbR27TQdygrC4tTEcUUK7iy6kf59GxpokLHi/ZM+JCL9jMmnvIEsEK Klee/Q+3VcmpeIyUqasHswOmvcON0xwDyFlqa2JD/Y1Oj9Wa41KHfNJ0l Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10869"; a="376893611" X-IronPort-AV: E=Sophos;i="6.03,239,1694761200"; d="scan'208";a="376893611" Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Oct 2023 08:12:55 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10869"; a="761080246" X-IronPort-AV: E=Sophos;i="6.03,239,1694761200"; d="scan'208";a="761080246" Received: from dgutows1-mobl.ger.corp.intel.com (HELO box.shutemov.name) ([10.249.39.237]) by fmsmga007-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Oct 2023 08:12:49 -0700 Received: by box.shutemov.name (Postfix, from userid 1000) id DCD8210A1C7; Fri, 20 Oct 2023 18:12:44 +0300 (+03) From: "Kirill A. Shutemov" To: Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , x86@kernel.org Cc: "Rafael J. Wysocki" , Peter Zijlstra , Adrian Hunter , Kuppuswamy Sathyanarayanan , Elena Reshetova , Jun Nakajima , Rick Edgecombe , Tom Lendacky , "Kalra, Ashish" , Sean Christopherson , "Huang, Kai" , Baoquan He , kexec@lists.infradead.org, linux-coco@lists.linux.dev, linux-kernel@vger.kernel.org, "Kirill A. Shutemov" Subject: [PATCHv2 00/13] x86/tdx: Add kexec support Date: Fri, 20 Oct 2023 18:12:29 +0300 Message-ID: <20231020151242.1814-1-kirill.shutemov@linux.intel.com> X-Mailer: git-send-email 2.41.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-0.8 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lipwig.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (lipwig.vger.email [0.0.0.0]); Fri, 20 Oct 2023 08:13:09 -0700 (PDT) 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 all CPUs visible in the target kernel. It requires BIOS-side enabling. If it missing we fallback to booting 2nd kernel with single CPU. Please review. I would be glad for any feedback. v2: - Rework how unsharing hook ups into kexec codepath; - Rework kvmclock_disable() fix based on Sean's; - s/cpu_hotplug_not_supported()/cpu_hotplug_disable_offlining()/; - use play_dead_common() to implement acpi_mp_play_dead(); - cond_resched() in tdx_shared_memory_show(); - s/target kernel/second kernel/; - Update commit messages and comments; [1] https://lore.kernel.org/all/13356251.uLZWGnKmhe@kreacher Kirill A. Shutemov (13): x86/acpi: Extract ACPI MADT wakeup code into a separate file kernel/cpu: Add support for declaring CPU offlining not supported cpu/hotplug, x86/acpi: Disable CPU offlining for ACPI MADT wakeup x86/kvm: Do not try to disable kvmclock if it was not enabled x86/kexec: Keep CR4.MCE set during kexec for TDX guest x86/mm: Make x86_platform.guest.enc_status_change_*() return errno x86/mm: Return correct level from lookup_address() if pte is none x86/tdx: Account shared memory x86/tdx: Convert shared memory back to private on kexec x86/mm: Make e820_end_ram_pfn() cover E820_TYPE_ACPI ranges x86/acpi: Do not attempt to bring up secondary CPUs in kexec case x86/acpi: Rename fields in acpi_madt_multiproc_wakeup structure x86/acpi: Add support for CPU offlining for ACPI MADT wakeup method arch/x86/Kconfig | 7 + arch/x86/coco/core.c | 1 - arch/x86/coco/tdx/kexec.c | 0 arch/x86/coco/tdx/tdx.c | 205 +++++++++++++++++++- arch/x86/hyperv/ivm.c | 9 +- arch/x86/include/asm/acpi.h | 5 + arch/x86/include/asm/pgtable_types.h | 1 + arch/x86/include/asm/x86_init.h | 5 +- arch/x86/kernel/acpi/Makefile | 11 +- arch/x86/kernel/acpi/boot.c | 88 +-------- arch/x86/kernel/acpi/madt.S | 24 +++ arch/x86/kernel/acpi/madt_wakeup.c | 267 +++++++++++++++++++++++++++ arch/x86/kernel/crash.c | 4 + arch/x86/kernel/e820.c | 9 +- arch/x86/kernel/kvmclock.c | 12 +- arch/x86/kernel/reboot.c | 5 + arch/x86/kernel/relocate_kernel_64.S | 5 + arch/x86/kernel/x86_init.c | 4 +- arch/x86/mm/mem_encrypt_amd.c | 8 +- arch/x86/mm/pat/set_memory.c | 17 +- include/acpi/actbl2.h | 19 +- include/linux/cc_platform.h | 10 - include/linux/cpu.h | 2 + kernel/cpu.c | 12 +- 24 files changed, 586 insertions(+), 144 deletions(-) create mode 100644 arch/x86/coco/tdx/kexec.c create mode 100644 arch/x86/kernel/acpi/madt.S create mode 100644 arch/x86/kernel/acpi/madt_wakeup.c -- 2.41.0