mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: "Huang, Kai" <kai.huang@intel.com>
To: "rafael@kernel.org" <rafael@kernel.org>
Cc: "kvm@vger.kernel.org" <kvm@vger.kernel.org>,
	"Hansen, Dave" <dave.hansen@intel.com>,
	"david@redhat.com" <david@redhat.com>,
	"bagasdotme@gmail.com" <bagasdotme@gmail.com>,
	"Luck, Tony" <tony.luck@intel.com>,
	"ak@linux.intel.com" <ak@linux.intel.com>,
	"kirill.shutemov@linux.intel.com"
	<kirill.shutemov@linux.intel.com>, "Christopherson,,
	Sean" <seanjc@google.com>, "mingo@redhat.com" <mingo@redhat.com>,
	"pbonzini@redhat.com" <pbonzini@redhat.com>,
	"tglx@linutronix.de" <tglx@linutronix.de>,
	"Yamahata, Isaku" <isaku.yamahata@intel.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"nik.borisov@suse.com" <nik.borisov@suse.com>,
	"hpa@zytor.com" <hpa@zytor.com>,
	"peterz@infradead.org" <peterz@infradead.org>,
	"Shahar, Sagi" <sagis@google.com>,
	"imammedo@redhat.com" <imammedo@redhat.com>,
	"bp@alien8.de" <bp@alien8.de>, "Gao, Chao" <chao.gao@intel.com>,
	"Brown, Len" <len.brown@intel.com>,
	"sathyanarayanan.kuppuswamy@linux.intel.com" 
	<sathyanarayanan.kuppuswamy@linux.intel.com>,
	"Huang, Ying" <ying.huang@intel.com>,
	"Williams, Dan J" <dan.j.williams@intel.com>,
	"x86@kernel.org" <x86@kernel.org>
Subject: Re: [PATCH v14 21/23] x86/virt/tdx: Handle TDX interaction with ACPI S3 and deeper states
Date: Wed, 18 Oct 2023 03:22:20 +0000	[thread overview]
Message-ID: <0d5769002692aa5e2ba157b0bd47526dc0b738fb.camel@intel.com> (raw)
In-Reply-To: <CAJZ5v0ifJ5G7yOidiADkbwvuttVAVhVx6eSoJqBDeacZiGXZDg@mail.gmail.com>

Hi Rafael,
Thanks for feedback!
> 


> > @@ -1427,6 +1429,22 @@ static int __init tdx_init(void)
> >                 return -ENODEV;
> >         }
> > 
> > +#define HIBERNATION_MSG                \
> > +       "Disable TDX due to hibernation is available. Use 'nohibernate'
command line to disable hibernation."
> 
> I'm not sure if this new symbol is really necessary.
> 
> The message could be as simple as "Initialization failed: Hibernation
> support is enabled" (assuming a properly defined pr_fmt()), because
> that carries enough information about the reason for the failure IMO.
> 
> How to address it can be documented elsewhere.


The last patch of this series is the documentation patch to add TDX host.  We
can add a sentence to suggest the user to use 'nohibernate' kernel command line
when one sees TDX gets disabled because of hibernation being available.

But isn't better to just provide such information together in the dmesg so the
user can immediately know how to resolve this issue? 

If user only sees "... failed: Hibernation support is enabled", then the user
will need additional knowledge to know where to look for the solution first, and
only after that, the user can know how to resolve this.

> 
> > +       /*
> > +        * Note hibernation_available() can vary when it is called at
> > +        * runtime as it checks secretmem_active() and cxl_mem_active()
> > +        * which can both vary at runtime.  But here at early_init() they
> > +        * both cannot return true, thus when hibernation_available()
> > +        * returns false here, hibernation is disabled by either
> > +        * 'nohibernate' or LOCKDOWN_HIBERNATION security lockdown,
> > +        * which are both permanent.
> > +        */
> 
> IIUC, the role of the comment is to document the fact that it is OK to
> use hiberation_available() here, because it cannot return "false"
> intermittently at this point, so I would just say "At this point,
> hibernation_available() indicates whether or not hibernation support
> has been permanently disabled", without going into all of the details
> (which are irrelevant IMO and may change in the future).


Agreed.  Will do.  Thanks.

> 
> > +       if (hibernation_available()) {
> > +               pr_err("initialization failed: %s\n", HIBERNATION_MSG);
> > +               return -ENODEV;
> > +       }
> > +
> >         err = register_memory_notifier(&tdx_memory_nb);
> >         if (err) {
> >                 pr_err("initialization failed: register_memory_notifier()
failed (%d)\n",
> > @@ -1442,6 +1460,11 @@ static int __init tdx_init(void)
> >                 return -ENODEV;
> >         }
> > 
> > +#ifdef CONFIG_ACPI
> > +       pr_info("Disable ACPI S3 suspend. Turn off TDX in the BIOS to use
ACPI S3.\n");
> > +       acpi_suspend_lowlevel = NULL;
> > +#endif
> 
> It would be somewhat nicer to have a helper for setting this pointer.
> 


OK.  Currently Xen PV dom0 also overrides the acpi_suspend_lowlevel.

Do you want the helper introduced now together with this series, or it is
acceptable to have a patch later after TDX gets merged to add a helper and
change both Xen and TDX code to use the helper?

Anyway, I suppose you mean we provide a helper in the ACPI code, and call that
helper here in TDX code.

Just in case you want the helper now, then I think it's better to have two
patches to do below ?

 1) A patch to introduce the helper, and change the Xen code to use it.
 2) The current TDX patch here, but change to use the new helper to set the
    acpi_suspend_lowlevel

I made the incremental diff to cover above based on this patch (see below,
compile tested only).  And the TDX part change will be split out as mentioned
above.

Do you have any comments?

diff --git a/arch/x86/include/asm/acpi.h b/arch/x86/include/asm/acpi.h
index c8a7fc23f63c..e71bff60d647 100644
--- a/arch/x86/include/asm/acpi.h
+++ b/arch/x86/include/asm/acpi.h
@@ -60,8 +60,10 @@ static inline void acpi_disable_pci(void)
        acpi_noirq_set();
 }
 
-/* Low-level suspend routine. */
-extern int (*acpi_suspend_lowlevel)(void);
+typedef int (*acpi_suspend_lowlevel_t)(void);
+
+/* Set up low-level suspend routine. */
+void acpi_set_suspend_lowlevel(acpi_suspend_lowlevel_t func);
 
 /* Physical address to resume after wakeup */
 unsigned long acpi_get_wakeup_address(void);
diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c
index 2a0ea38955df..95be371305c6 100644
--- a/arch/x86/kernel/acpi/boot.c
+++ b/arch/x86/kernel/acpi/boot.c
@@ -779,11 +779,17 @@ int (*__acpi_register_gsi)(struct device *dev, u32 gsi,
 void (*__acpi_unregister_gsi)(u32 gsi) = NULL;
 
 #ifdef CONFIG_ACPI_SLEEP
-int (*acpi_suspend_lowlevel)(void) = x86_acpi_suspend_lowlevel;
+static int (*acpi_suspend_lowlevel)(void) = x86_acpi_suspend_lowlevel;
 #else
-int (*acpi_suspend_lowlevel)(void);
+static int (*acpi_suspend_lowlevel)(void);
 #endif
 
+/* To override the default acpi_suspend_lowlevel */
+void acpi_set_suspend_lowlevel(acpi_suspend_lowlevel_t func)
+{
+       acpi_suspend_lowlevel = func;
+}
+
 /*
  * success: return IRQ number (>=0)
  * failure: return < 0
diff --git a/arch/x86/virt/vmx/tdx/tdx.c b/arch/x86/virt/vmx/tdx/tdx.c
index 38ec6815a42a..c8586bee4650 100644
--- a/arch/x86/virt/vmx/tdx/tdx.c
+++ b/arch/x86/virt/vmx/tdx/tdx.c
@@ -1565,7 +1565,7 @@ static int __init tdx_init(void)
 
 #ifdef CONFIG_ACPI
        pr_info("Disable ACPI S3 suspend. Turn off TDX in the BIOS to use ACPI
S3.\n");
-       acpi_suspend_lowlevel = NULL;
+       acpi_set_suspend_lowlevel(NULL);
 #endif
 
        /*
diff --git a/include/xen/acpi.h b/include/xen/acpi.h
index b1e11863144d..81a1b6ee8fc2 100644
--- a/include/xen/acpi.h
+++ b/include/xen/acpi.h
@@ -64,7 +64,7 @@ static inline void xen_acpi_sleep_register(void)
                acpi_os_set_prepare_extended_sleep(
                        &xen_acpi_notify_hypervisor_extended_sleep);
 
-               acpi_suspend_lowlevel = xen_acpi_suspend_lowlevel;
+               acpi_set_suspend_lowlevel(xen_acpi_suspend_lowlevel);
        }
 }
 #else


> 

  reply	other threads:[~2023-10-18  3:22 UTC|newest]

Thread overview: 51+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-10-17 10:14 [PATCH v14 00/23] TDX host kernel support Kai Huang
2023-10-17 10:14 ` [PATCH v14 01/23] x86/virt/tdx: Detect TDX during kernel boot Kai Huang
2023-10-17 13:24   ` Kuppuswamy Sathyanarayanan
2023-10-17 10:14 ` [PATCH v14 02/23] x86/tdx: Define TDX supported page sizes as macros Kai Huang
2023-10-17 10:14 ` [PATCH v14 03/23] x86/virt/tdx: Make INTEL_TDX_HOST depend on X86_X2APIC Kai Huang
2023-10-17 10:14 ` [PATCH v14 04/23] x86/cpu: Detect TDX partial write machine check erratum Kai Huang
2023-10-17 10:14 ` [PATCH v14 05/23] x86/virt/tdx: Handle SEAMCALL no entropy error in common code Kai Huang
2023-10-17 13:34   ` Kuppuswamy Sathyanarayanan
2023-10-17 10:14 ` [PATCH v14 06/23] x86/virt/tdx: Add SEAMCALL error printing for module initialization Kai Huang
2023-10-17 13:37   ` Kuppuswamy Sathyanarayanan
2023-10-18  6:27     ` Huang, Kai
2023-10-18  7:40   ` Nikolay Borisov
2023-10-18  8:26     ` Huang, Kai
2023-10-18 14:17   ` Kuppuswamy Sathyanarayanan
2023-10-17 10:14 ` [PATCH v14 07/23] x86/virt/tdx: Add skeleton to enable TDX on demand Kai Huang
2023-10-17 14:24   ` Kuppuswamy Sathyanarayanan
2023-10-18  6:51     ` Huang, Kai
2023-10-18 13:56       ` Dave Hansen
2023-10-18 19:55         ` Huang, Kai
2023-10-18  7:57   ` Nikolay Borisov
2023-10-18  8:29     ` Huang, Kai
2023-10-18  8:39       ` Nikolay Borisov
2023-10-18  8:57         ` Huang, Kai
2023-10-18  9:14   ` Nikolay Borisov
2023-10-18  9:17     ` Huang, Kai
2023-10-17 10:14 ` [PATCH v14 08/23] x86/virt/tdx: Get information about TDX module and TDX-capable memory Kai Huang
2023-10-17 10:14 ` [PATCH v14 09/23] x86/virt/tdx: Use all system memory when initializing TDX module as TDX memory Kai Huang
2023-10-17 10:14 ` [PATCH v14 10/23] x86/virt/tdx: Add placeholder to construct TDMRs to cover all TDX memory regions Kai Huang
2023-10-17 10:14 ` [PATCH v14 11/23] x86/virt/tdx: Fill out " Kai Huang
2023-10-17 10:14 ` [PATCH v14 12/23] x86/virt/tdx: Allocate and set up PAMTs for TDMRs Kai Huang
2023-10-24  5:53   ` Nikolay Borisov
2023-10-24 10:49     ` Huang, Kai
2023-10-24 13:31       ` Nikolay Borisov
2023-10-17 10:14 ` [PATCH v14 13/23] x86/virt/tdx: Designate reserved areas for all TDMRs Kai Huang
2023-10-17 10:14 ` [PATCH v14 14/23] x86/virt/tdx: Configure TDX module with the TDMRs and global KeyID Kai Huang
2023-10-17 10:14 ` [PATCH v14 15/23] x86/virt/tdx: Configure global KeyID on all packages Kai Huang
2023-10-17 10:14 ` [PATCH v14 16/23] x86/virt/tdx: Initialize all TDMRs Kai Huang
2023-10-17 10:14 ` [PATCH v14 17/23] x86/kexec: Flush cache of TDX private memory Kai Huang
2023-10-17 10:14 ` [PATCH v14 18/23] x86/virt/tdx: Keep TDMRs when module initialization is successful Kai Huang
2023-10-17 10:14 ` [PATCH v14 19/23] x86/virt/tdx: Improve readability of module initialization error handling Kai Huang
2023-10-17 10:14 ` [PATCH v14 20/23] x86/kexec(): Reset TDX private memory on platforms with TDX erratum Kai Huang
2023-10-17 10:14 ` [PATCH v14 21/23] x86/virt/tdx: Handle TDX interaction with ACPI S3 and deeper states Kai Huang
2023-10-17 10:53   ` Rafael J. Wysocki
2023-10-18  3:22     ` Huang, Kai [this message]
2023-10-18 10:15       ` Rafael J. Wysocki
2023-10-18 10:51         ` Huang, Kai
2023-10-18 10:53           ` Rafael J. Wysocki
2023-10-19 20:45             ` Huang, Kai
2023-10-24 10:46               ` Huang, Kai
2023-10-17 10:14 ` [PATCH v14 22/23] x86/mce: Improve error log of kernel space TDX #MC due to erratum Kai Huang
2023-10-17 10:14 ` [PATCH v14 23/23] Documentation/x86: Add documentation for TDX host support Kai Huang

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=0d5769002692aa5e2ba157b0bd47526dc0b738fb.camel@intel.com \
    --to=kai.huang@intel.com \
    --cc=ak@linux.intel.com \
    --cc=bagasdotme@gmail.com \
    --cc=bp@alien8.de \
    --cc=chao.gao@intel.com \
    --cc=dan.j.williams@intel.com \
    --cc=dave.hansen@intel.com \
    --cc=david@redhat.com \
    --cc=hpa@zytor.com \
    --cc=imammedo@redhat.com \
    --cc=isaku.yamahata@intel.com \
    --cc=kirill.shutemov@linux.intel.com \
    --cc=kvm@vger.kernel.org \
    --cc=len.brown@intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=nik.borisov@suse.com \
    --cc=pbonzini@redhat.com \
    --cc=peterz@infradead.org \
    --cc=rafael@kernel.org \
    --cc=sagis@google.com \
    --cc=sathyanarayanan.kuppuswamy@linux.intel.com \
    --cc=seanjc@google.com \
    --cc=tglx@linutronix.de \
    --cc=tony.luck@intel.com \
    --cc=x86@kernel.org \
    --cc=ying.huang@intel.com \
    /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

Powered by JetHome