[RFC PATCH v2 8/9] x86: AMD changes for EFI stub DRTM launch support

Sergii Dmytruk posted 9 patches 7 months, 2 weeks ago
[RFC PATCH v2 8/9] x86: AMD changes for EFI stub DRTM launch support
Posted by Sergii Dmytruk 7 months, 2 weeks ago
From: Ross Philipson <ross.philipson@oracle.com>

* Only do the TXT setup steps if this is a TXT launch not an SKINIT one.
* Initialize boot params address for SKINIT.

Signed-off-by: Ross Philipson <ross.philipson@oracle.com>
Signed-off-by: Sergii Dmytruk <sergii.dmytruk@3mdeb.com>
---
 drivers/firmware/efi/libstub/x86-stub.c | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/drivers/firmware/efi/libstub/x86-stub.c b/drivers/firmware/efi/libstub/x86-stub.c
index bfa36466a79c..0453be1ba58d 100644
--- a/drivers/firmware/efi/libstub/x86-stub.c
+++ b/drivers/firmware/efi/libstub/x86-stub.c
@@ -798,15 +798,21 @@ static bool efi_secure_launch_update_boot_params(struct slr_table *slrt,
 						 struct boot_params *boot_params)
 {
 	struct slr_entry_intel_info *txt_info;
+	struct slr_entry_amd_info *skinit_info;
 	struct slr_entry_policy *policy;
 	bool updated = false;
 	int i;
 
 	txt_info = slr_next_entry_by_tag(slrt, NULL, SLR_ENTRY_INTEL_INFO);
-	if (!txt_info)
-		return false;
+	if (txt_info)
+		txt_info->boot_params_addr = (u64)boot_params;
+
+	skinit_info = slr_next_entry_by_tag(slrt, NULL, SLR_ENTRY_AMD_INFO);
+	if (skinit_info)
+		skinit_info->boot_params_addr = (u64)boot_params;
 
-	txt_info->boot_params_addr = (u64)boot_params;
+	if (!txt_info && !skinit_info)
+		return false;
 
 	policy = slr_next_entry_by_tag(slrt, NULL, SLR_ENTRY_ENTRY_POLICY);
 	if (!policy)
-- 
2.49.0
Re: [RFC PATCH v2 8/9] x86: AMD changes for EFI stub DRTM launch support
Posted by Ard Biesheuvel 7 months, 1 week ago
On Thu, 1 May 2025 at 00:45, Sergii Dmytruk <sergii.dmytruk@3mdeb.com> wrote:
>
> From: Ross Philipson <ross.philipson@oracle.com>
>
> * Only do the TXT setup steps if this is a TXT launch not an SKINIT one.
> * Initialize boot params address for SKINIT.
>
> Signed-off-by: Ross Philipson <ross.philipson@oracle.com>
> Signed-off-by: Sergii Dmytruk <sergii.dmytruk@3mdeb.com>

Acked-by: Ard Biesheuvel <ardb@kernel.org>

> ---
>  drivers/firmware/efi/libstub/x86-stub.c | 12 +++++++++---
>  1 file changed, 9 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/firmware/efi/libstub/x86-stub.c b/drivers/firmware/efi/libstub/x86-stub.c
> index bfa36466a79c..0453be1ba58d 100644
> --- a/drivers/firmware/efi/libstub/x86-stub.c
> +++ b/drivers/firmware/efi/libstub/x86-stub.c
> @@ -798,15 +798,21 @@ static bool efi_secure_launch_update_boot_params(struct slr_table *slrt,
>                                                  struct boot_params *boot_params)
>  {
>         struct slr_entry_intel_info *txt_info;
> +       struct slr_entry_amd_info *skinit_info;
>         struct slr_entry_policy *policy;
>         bool updated = false;
>         int i;
>
>         txt_info = slr_next_entry_by_tag(slrt, NULL, SLR_ENTRY_INTEL_INFO);
> -       if (!txt_info)
> -               return false;
> +       if (txt_info)
> +               txt_info->boot_params_addr = (u64)boot_params;
> +
> +       skinit_info = slr_next_entry_by_tag(slrt, NULL, SLR_ENTRY_AMD_INFO);
> +       if (skinit_info)
> +               skinit_info->boot_params_addr = (u64)boot_params;
>
> -       txt_info->boot_params_addr = (u64)boot_params;
> +       if (!txt_info && !skinit_info)
> +               return false;
>
>         policy = slr_next_entry_by_tag(slrt, NULL, SLR_ENTRY_ENTRY_POLICY);
>         if (!policy)
> --
> 2.49.0
>