linux-hyperv.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Yunhong Jiang <yunhong.jiang@linux.intel.com>
To: tglx@linutronix.de, mingo@redhat.com, bp@alien8.de,
	dave.hansen@linux.intel.com, x86@kernel.org, hpa@zytor.com,
	robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org,
	kys@microsoft.com, haiyangz@microsoft.com, wei.liu@kernel.org,
	decui@microsoft.com, rafael@kernel.org, lenb@kernel.org,
	kirill.shutemov@linux.intel.com
Cc: linux-kernel@vger.kernel.org, devicetree@vger.kernel.org,
	linux-hyperv@vger.kernel.org, linux-acpi@vger.kernel.org,
	yunhong.jiang@linux.intel.com
Subject: [PATCH 0/7] x86/acpi: Move ACPI MADT wakeup to generic code
Date: Tue,  6 Aug 2024 15:12:30 -0700	[thread overview]
Message-ID: <20240806221237.1634126-1-yunhong.jiang@linux.intel.com> (raw)

This set of patches add ACPI multiprocessor wakeup support to TDX VMs
booting with device tree instead of ACPI.

Historically, x86 platforms have booted secondary processors (APs) using
INIT followed by the start up IPI (SIPI) messages. However, TDX VMs
can't use this protocol because this protocol requires assistance from
VMMs while VMMs are not trusted by TDX guest.

ACPI specification version 6.4 introduced a new wakeup mailbox model to
address this issue. A "Multiprocessor Wakeup Structure" has been added to
an existing ACPI table (MADT). This structure provides the physical of a
"Multiprocessor Wakeup Mailbox Structure". Message written to the mailbox
structure steers the APs to the boot code.

With this new wakeup model, TDX VMs with ACPI support boot the APs
securely. However, TDX VMs with the device tree have no ACPI support and
still face the challenge.

To fix this challenge, either a new mechanism from scratch is
introduced, or the TDX VMs with device tree can utilize the ACPI wakeup
model.

By reusing the ACPI wakeup mailbox model, the Multiprocessor Wakeup Mailbox
Structure will be kept and the message mechanism will be the same as ACPI.
This will reduce maintenance effort in the long term.

The first patch moves the madt wakeup implementation to generic code.

The second/third patches add the mailbox support to the device tree.

The last four patches apply the mailbox support to the hyper-v TDX VMs
with device tree.

Yunhong Jiang (7):
  x86/acpi: Move ACPI MADT wakeup to generic code
  dt-bindings: x86: Add ACPI wakeup mailbox
  x86/dt: Support the ACPI multiprocessor wakeup for device tree
  x86/hyperv: Parse the ACPI wakeup mailbox
  x86/hyperv: Mark ACPI wakeup mailbox page as private
  x86/hyperv: Reserve real mode when ACPI wakeup mailbox is available
  x86/hyperv: Use the ACPI wakeup mailbox for VTL2 guests when available

 .../devicetree/bindings/x86/wakeup.yaml       | 41 ++++++++++++++++
 MAINTAINERS                                   |  3 ++
 arch/x86/Kconfig                              |  2 +-
 arch/x86/hyperv/hv_vtl.c                      | 43 +++++++++++++++--
 arch/x86/include/asm/acpi.h                   |  1 -
 arch/x86/include/asm/madt_wakeup.h            | 16 +++++++
 arch/x86/include/asm/mshyperv.h               |  3 ++
 arch/x86/kernel/Makefile                      |  1 +
 arch/x86/kernel/acpi/Makefile                 |  1 -
 arch/x86/kernel/cpu/mshyperv.c                |  2 +
 arch/x86/kernel/{acpi => }/madt_playdead.S    |  0
 arch/x86/kernel/{acpi => }/madt_wakeup.c      | 47 ++++++++++++++++++-
 drivers/hv/hv_common.c                        |  8 ++++
 13 files changed, 159 insertions(+), 9 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/x86/wakeup.yaml
 create mode 100644 arch/x86/include/asm/madt_wakeup.h
 rename arch/x86/kernel/{acpi => }/madt_playdead.S (100%)
 rename arch/x86/kernel/{acpi => }/madt_wakeup.c (87%)


base-commit: 9ebdc7589cbb5c976e6c8807cbe13f263d70d32c
-- 
2.25.1


             reply	other threads:[~2024-08-06 22:13 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-08-06 22:12 Yunhong Jiang [this message]
2024-08-06 22:12 ` [PATCH 1/7] x86/acpi: Move ACPI MADT wakeup to generic code Yunhong Jiang
2024-08-06 22:12 ` [PATCH 2/7] dt-bindings: x86: Add ACPI wakeup mailbox Yunhong Jiang
2024-08-06 23:38   ` Rob Herring (Arm)
2024-08-07 17:00     ` Yunhong Jiang
2024-08-07  5:57   ` Krzysztof Kozlowski
2024-08-07 16:56     ` Yunhong Jiang
2024-08-08  7:41       ` Krzysztof Kozlowski
2024-08-09 23:29         ` Yunhong Jiang
2024-08-06 22:12 ` [PATCH 3/7] x86/dt: Support the ACPI multiprocessor wakeup for device tree Yunhong Jiang
2024-08-07 16:50   ` Thomas Gleixner
2024-08-06 22:12 ` [PATCH 4/7] x86/hyperv: Parse the ACPI wakeup mailbox Yunhong Jiang
2024-08-06 22:12 ` [PATCH 5/7] x86/hyperv: Mark ACPI wakeup mailbox page as private Yunhong Jiang
2024-08-07 16:59   ` Thomas Gleixner
2024-08-09 23:17     ` Yunhong Jiang
2024-08-06 22:12 ` [PATCH 6/7] x86/hyperv: Reserve real mode when ACPI wakeup mailbox is available Yunhong Jiang
2024-08-07 17:33   ` Thomas Gleixner
2024-08-24  0:17     ` Yunhong Jiang
2024-08-06 22:12 ` [PATCH 7/7] x86/hyperv: Use the ACPI wakeup mailbox for VTL2 guests when available Yunhong Jiang

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=20240806221237.1634126-1-yunhong.jiang@linux.intel.com \
    --to=yunhong.jiang@linux.intel.com \
    --cc=bp@alien8.de \
    --cc=conor+dt@kernel.org \
    --cc=dave.hansen@linux.intel.com \
    --cc=decui@microsoft.com \
    --cc=devicetree@vger.kernel.org \
    --cc=haiyangz@microsoft.com \
    --cc=hpa@zytor.com \
    --cc=kirill.shutemov@linux.intel.com \
    --cc=krzk+dt@kernel.org \
    --cc=kys@microsoft.com \
    --cc=lenb@kernel.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-hyperv@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=rafael@kernel.org \
    --cc=robh@kernel.org \
    --cc=tglx@linutronix.de \
    --cc=wei.liu@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;
as well as URLs for NNTP newsgroup(s).