All of lore.kernel.org
 help / color / mirror / Atom feed
From: Javier Martinez Canillas <javierm@redhat.com>
To: linux-kernel@vger.kernel.org
Cc: linux-efi@vger.kernel.org, Brian Masney <bmasney@redhat.com>,
	Sebastian Andrzej Siewior <bigeasy@linutronix.de>,
	Al Stone <ahs3@redhat.com>, Peter Robinson <pbrobinson@gmail.com>,
	Robbie Harwood <rharwood@redhat.com>,
	Peter Jones <pjones@redhat.com>,
	Alexander Larsson <alexl@redhat.com>,
	Andrew Halaney <ahalaney@redhat.com>,
	Ard Biesheuvel <ardb@kernel.org>,
	linux-rt-users@vger.kernel.org,
	Javier Martinez Canillas <javierm@redhat.com>,
	Thomas Gleixner <tglx@linutronix.de>
Subject: [PATCH v2] efi: Allow to enable EFI runtime services by default on RT
Date: Thu, 31 Mar 2022 17:16:54 +0200	[thread overview]
Message-ID: <20220331151654.184433-1-javierm@redhat.com> (raw)

Commit d9f283ae71af ("efi: Disable runtime services on RT") disabled EFI
runtime services by default when the CONFIG_PREEMPT_RT option is enabled.

The rationale for that commit is that some EFI calls could take too much
time, leading to large latencies which is an issue for Real-Time kernels.

But a side effect of that change was that now is not possible anymore to
enable the EFI runtime services by default when CONFIG_PREEMPT_RT is set,
without passing an efi=runtime command line parameter to the kernel.

Instead, let's add a new EFI_DISABLE_RUNTIME boolean Kconfig option, that
would be set to n by default but to y if CONFIG_PREEMPT_RT is enabled.

That way, the current behaviour is preserved but gives users a mechanism
to enable the EFI runtimes services in their kernels if that is required.
For example, if the firmware could guarantee bounded time for EFI calls.

Also, having a separate boolean config could allow users to disable the
EFI runtime services by default even when CONFIG_PREEMPT_RT is not set.

Reported-by: Alexander Larsson <alexl@redhat.com>
Fixes: d9f283ae71af ("efi: Disable runtime services on RT")
Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
---

Changes in v2:
- Improve commit description to make clear the motivation for the change
  (Sebastian Andrzej Siewior).

 drivers/firmware/efi/Kconfig | 15 +++++++++++++++
 drivers/firmware/efi/efi.c   |  2 +-
 2 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/drivers/firmware/efi/Kconfig b/drivers/firmware/efi/Kconfig
index 2c3dac5ecb36..243882f5e5f9 100644
--- a/drivers/firmware/efi/Kconfig
+++ b/drivers/firmware/efi/Kconfig
@@ -284,3 +284,18 @@ config EFI_CUSTOM_SSDT_OVERLAYS
 
 	  See Documentation/admin-guide/acpi/ssdt-overlays.rst for more
 	  information.
+
+config EFI_DISABLE_RUNTIME
+	bool "Disable EFI runtime services support by default"
+	default y if PREEMPT_RT
+	help
+	  Allow to disable the EFI runtime services support by default. This can
+	  already be achieved by using the efi=noruntime option, but it could be
+	  useful to have this default without any kernel command line parameter.
+
+	  The EFI runtime services are disabled by default when PREEMPT_RT is
+	  enabled, because measurements have shown that some EFI functions calls
+	  might take too much time to complete, causing large latencies which is
+	  an issue for Real-Time kernels.
+
+	  This default can be overridden by using the efi=runtime option.
diff --git a/drivers/firmware/efi/efi.c b/drivers/firmware/efi/efi.c
index 5502e176d51b..ff57db8f8d05 100644
--- a/drivers/firmware/efi/efi.c
+++ b/drivers/firmware/efi/efi.c
@@ -66,7 +66,7 @@ struct mm_struct efi_mm = {
 
 struct workqueue_struct *efi_rts_wq;
 
-static bool disable_runtime = IS_ENABLED(CONFIG_PREEMPT_RT);
+static bool disable_runtime = IS_ENABLED(CONFIG_EFI_DISABLE_RUNTIME);
 static int __init setup_noefi(char *arg)
 {
 	disable_runtime = true;
-- 
2.35.1


             reply	other threads:[~2022-03-31 15:17 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-03-31 15:16 Javier Martinez Canillas [this message]
2022-03-31 16:26 ` [PATCH v2] efi: Allow to enable EFI runtime services by default on RT Ard Biesheuvel
2022-03-31 19:29   ` Ahmed S. Darwish
2022-03-31 22:19     ` Javier Martinez Canillas
2022-04-01  7:42       ` Sebastian Andrzej Siewior
2022-04-01  8:32         ` Javier Martinez Canillas
2022-04-01  8:34           ` Ard Biesheuvel
2022-04-01  8:38             ` Javier Martinez Canillas
2022-04-01  9:05             ` Sebastian Andrzej Siewior
2022-04-13 17:11               ` Ard Biesheuvel

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=20220331151654.184433-1-javierm@redhat.com \
    --to=javierm@redhat.com \
    --cc=ahalaney@redhat.com \
    --cc=ahs3@redhat.com \
    --cc=alexl@redhat.com \
    --cc=ardb@kernel.org \
    --cc=bigeasy@linutronix.de \
    --cc=bmasney@redhat.com \
    --cc=linux-efi@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-rt-users@vger.kernel.org \
    --cc=pbrobinson@gmail.com \
    --cc=pjones@redhat.com \
    --cc=rharwood@redhat.com \
    --cc=tglx@linutronix.de \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.