From patchwork Fri Oct 20 15:12:29 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Kirill A. Shutemov" X-Patchwork-Id: 15687 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:2010:b0:403:3b70:6f57 with SMTP id fe16csp1125277vqb; Fri, 20 Oct 2023 08:13:08 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHjlD0l26HxHqH6BlAZWFvOnFyAz0md9CuFPR8QohK6AZmKJ0rtJsODVEiYEM1tFrxszDUn X-Received: by 2002:a05:6358:60cc:b0:166:a6e3:cba5 with SMTP id i12-20020a05635860cc00b00166a6e3cba5mr1986854rwi.2.1697814788034; Fri, 20 Oct 2023 08:13:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1697814787; cv=none; d=google.com; s=arc-20160816; b=tiSM0de98QLwtrBAh4olNCZD+5rV+O7M4XnthW7iSCOmuIcBFENgNDTCsKWsvSZ6u9 mUgB61dDnRUGpMp9GYXZx0tW4QRmFskPz8QNBMetFzsLFxP12yazlo6/wC5dVAdSXcQ1 +M9e/8kh7SlaGtWZNASNsvhoZGuJgVp4XVRmBZRz7oWQ1ZuCmoxZ7u0NTISA9zofFdcL aOmO5dW6GksfP8rAjIzYVwxzVWi8Dv4FuUdLuamXJqo2oGdBU70VaLj5sRQhML9PvktW N3YGgyIOyLbVLmTjjpXO9rvxI711tRI/8CHG8XnQU0TbKbUDZGd6BXFQOROhrt5NZLpl r5FA== 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.37 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 snail.vger.email (snail.vger.email. [23.128.96.37]) by mx.google.com with ESMTPS id k29-20020a637b5d000000b00578c8ce14edsi2128380pgn.252.2023.10.20.08.13.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 Oct 2023 08:13:07 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) client-ip=23.128.96.37; 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.37 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 snail.vger.email (Postfix) with ESMTP id 543A682F7FA1; Fri, 20 Oct 2023 08:13:07 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1377649AbjJTPNB (ORCPT + 26 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 X-Spam-Status: No, score=-4.3 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net 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 (snail.vger.email [0.0.0.0]); Fri, 20 Oct 2023 08:13:07 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1780287838866100791 X-GMAIL-MSGID: 1780287838866100791 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