All of lore.kernel.org
 help / color / mirror / Atom feed
From: tip-bot for Ard Biesheuvel <tipbot@zytor.com>
To: linux-tip-commits@vger.kernel.org
Cc: tglx@linutronix.de, ard.biesheuvel@linaro.org, bp@alien8.de,
	dvlasenk@redhat.com, linux-kernel@vger.kernel.org,
	brgerst@gmail.com, mingo@kernel.org, peterz@infradead.org,
	hpa@zytor.com, torvalds@linux-foundation.org,
	matt@codeblueprint.co.uk
Subject: [tip:efi/core] efi/runtime-wrappers: Add a nonblocking version of QueryVariableInfo()
Date: Wed, 3 Feb 2016 03:31:43 -0800	[thread overview]
Message-ID: <tip-d3cac1f83c631b9fe5edaebcba49f6989bfff089@git.kernel.org> (raw)
In-Reply-To: <1454364428-494-4-git-send-email-matt@codeblueprint.co.uk>

Commit-ID:  d3cac1f83c631b9fe5edaebcba49f6989bfff089
Gitweb:     http://git.kernel.org/tip/d3cac1f83c631b9fe5edaebcba49f6989bfff089
Author:     Ard Biesheuvel <ard.biesheuvel@linaro.org>
AuthorDate: Mon, 1 Feb 2016 22:06:57 +0000
Committer:  Ingo Molnar <mingo@kernel.org>
CommitDate: Wed, 3 Feb 2016 11:31:03 +0100

efi/runtime-wrappers: Add a nonblocking version of QueryVariableInfo()

This introduces a new runtime wrapper for the
QueryVariableInfo() UEFI Runtime Service, which gives up
immediately rather than spins on failure to grab the efi_runtime
spinlock.

This is required in the non-blocking path of the efi-pstore
code.

Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: Matt Fleming <matt@codeblueprint.co.uk>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Brian Gerst <brgerst@gmail.com>
Cc: Denys Vlasenko <dvlasenk@redhat.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: linux-efi@vger.kernel.org
Link: http://lkml.kernel.org/r/1454364428-494-4-git-send-email-matt@codeblueprint.co.uk
Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
 drivers/firmware/efi/runtime-wrappers.c | 22 ++++++++++++++++++++++
 include/linux/efi.h                     |  1 +
 2 files changed, 23 insertions(+)

diff --git a/drivers/firmware/efi/runtime-wrappers.c b/drivers/firmware/efi/runtime-wrappers.c
index 228bbf9..e9f2867 100644
--- a/drivers/firmware/efi/runtime-wrappers.c
+++ b/drivers/firmware/efi/runtime-wrappers.c
@@ -230,6 +230,27 @@ static efi_status_t virt_efi_query_variable_info(u32 attr,
 	return status;
 }
 
+static efi_status_t
+virt_efi_query_variable_info_nonblocking(u32 attr,
+					 u64 *storage_space,
+					 u64 *remaining_space,
+					 u64 *max_variable_size)
+{
+	unsigned long flags;
+	efi_status_t status;
+
+	if (efi.runtime_version < EFI_2_00_SYSTEM_TABLE_REVISION)
+		return EFI_UNSUPPORTED;
+
+	if (!spin_trylock_irqsave(&efi_runtime_lock, flags))
+		return EFI_NOT_READY;
+
+	status = efi_call_virt(query_variable_info, attr, storage_space,
+			       remaining_space, max_variable_size);
+	spin_unlock_irqrestore(&efi_runtime_lock, flags);
+	return status;
+}
+
 static efi_status_t virt_efi_get_next_high_mono_count(u32 *count)
 {
 	unsigned long flags;
@@ -300,6 +321,7 @@ void efi_native_runtime_setup(void)
 	efi.get_next_high_mono_count = virt_efi_get_next_high_mono_count;
 	efi.reset_system = virt_efi_reset_system;
 	efi.query_variable_info = virt_efi_query_variable_info;
+	efi.query_variable_info_nonblocking = virt_efi_query_variable_info_nonblocking;
 	efi.update_capsule = virt_efi_update_capsule;
 	efi.query_capsule_caps = virt_efi_query_capsule_caps;
 }
diff --git a/include/linux/efi.h b/include/linux/efi.h
index 8706e0a..ad1e177 100644
--- a/include/linux/efi.h
+++ b/include/linux/efi.h
@@ -849,6 +849,7 @@ extern struct efi {
 	efi_set_variable_t *set_variable;
 	efi_set_variable_t *set_variable_nonblocking;
 	efi_query_variable_info_t *query_variable_info;
+	efi_query_variable_info_t *query_variable_info_nonblocking;
 	efi_update_capsule_t *update_capsule;
 	efi_query_capsule_caps_t *query_capsule_caps;
 	efi_get_next_high_mono_count_t *get_next_high_mono_count;

  reply	other threads:[~2016-02-03 11:32 UTC|newest]

Thread overview: 67+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-02-01 22:06 [GIT PULL 00/14] EFI changes for v4.6 Matt Fleming
2016-02-01 22:06 ` [PATCH 01/14] efi: Expose non-blocking set_variable() wrapper to efivars Matt Fleming
2016-02-03 11:31   ` [tip:efi/core] " tip-bot for Ard Biesheuvel
2016-02-01 22:06 ` [PATCH 02/14] efi: Remove redundant efi_set_variable_nonblocking prototype Matt Fleming
2016-02-01 22:06   ` Matt Fleming
2016-02-03 11:31   ` [tip:efi/core] efi: Remove redundant efi_set_variable_nonblocking () prototype tip-bot for Ard Biesheuvel
2016-02-01 22:06 ` [PATCH 03/14] efi: runtime-wrappers: Add a nonblocking version of QueryVariableInfo Matt Fleming
2016-02-01 22:06   ` Matt Fleming
2016-02-03 11:31   ` tip-bot for Ard Biesheuvel [this message]
2016-02-01 22:06 ` [PATCH 04/14] efi: Add nonblocking option to efi_query_variable_store() Matt Fleming
2016-02-03 11:32   ` [tip:efi/core] " tip-bot for Ard Biesheuvel
2016-02-01 22:06 ` [PATCH 05/14] efi: runtime-wrappers: Remove out of date comment regarding in_nmi() Matt Fleming
2016-02-03 11:32   ` [tip:efi/core] efi/runtime-wrappers: " tip-bot for Ard Biesheuvel
2016-02-01 22:07 ` [PATCH 06/14] efi: runtime-wrapper: Get rid of the rtc_lock spinlock Matt Fleming
2016-02-01 22:07   ` Matt Fleming
2016-02-03 11:32   ` [tip:efi/core] efi: Runtime-wrapper: " tip-bot for Ard Biesheuvel
2016-02-01 22:07 ` [PATCH 07/14] efi: runtime-wrappers: Run UEFI Runtime Services with interrupts enabled Matt Fleming
2016-02-03  9:43   ` Ingo Molnar
2016-02-03  9:57     ` Ard Biesheuvel
2016-02-03  9:57       ` Ard Biesheuvel
2016-02-03 10:58       ` Ingo Molnar
2016-02-03 11:33         ` Ard Biesheuvel
2016-02-03 12:01           ` Matt Fleming
2016-02-04 13:58         ` [PATCH] efi: runtime-wrappers: run " Ard Biesheuvel
2016-02-08 15:16           ` Matt Fleming
2016-02-08 19:37           ` Andy Lutomirski
2016-02-09 16:52             ` Ard Biesheuvel
2016-02-09 16:52               ` Ard Biesheuvel
2016-02-11 16:03               ` Matt Fleming
2016-02-11 16:04             ` Matt Fleming
2016-02-01 22:07 ` [PATCH 08/14] efivars: Use to_efivar_entry Matt Fleming
2016-02-03 11:33   ` [tip:efi/core] " tip-bot for Geliang Tang
2016-02-01 22:07 ` [PATCH 09/14] x86/efi-bgrt: Don't ignore the BGRT if the 'valid' bit is 0 Matt Fleming
2016-02-03 11:33   ` [tip:efi/core] x86/efi/bgrt: " tip-bot for Môshe van der Sterre
2016-02-01 22:07 ` [PATCH 10/14] efi: Make checkpatch complain less about efi.h GUID additions Matt Fleming
2016-02-01 22:07   ` Matt Fleming
2016-02-03 10:33   ` Ingo Molnar
2016-02-03 10:33     ` Ingo Molnar
2016-02-03 10:44     ` Matt Fleming
2016-02-03 10:50       ` Ingo Molnar
2016-02-03 10:50         ` Ingo Molnar
2016-02-03 11:18         ` Matt Fleming
2016-02-03 11:27           ` Ingo Molnar
2016-02-03 11:27             ` Ingo Molnar
2016-02-03 11:09     ` Joe Perches
2016-02-01 22:07 ` [PATCH 11/14] x86/efi: Show actual ending addresses in efi_print_memmap Matt Fleming
2016-02-02  8:49   ` Laszlo Ersek
2016-02-03 11:33   ` [tip:efi/core] " tip-bot for Robert Elliott
2016-02-01 22:07 ` [PATCH 12/14] efi: Add NV memory attribute Matt Fleming
2016-02-02  8:54   ` Laszlo Ersek
2016-02-02  8:54     ` Laszlo Ersek
2016-02-03 11:34   ` [tip:efi/core] " tip-bot for Robert Elliott
2016-02-01 22:07 ` [PATCH 13/14] efi: Add Persistent Memory type name Matt Fleming
2016-02-02  8:56   ` Laszlo Ersek
2016-02-03 11:34   ` [tip:efi/core] " tip-bot for Robert Elliott
2016-02-01 22:07 ` [PATCH 14/14] x86/efi: Print size in binary units in efi_print_memmap Matt Fleming
2016-02-02  9:22   ` Laszlo Ersek
2016-02-03 10:40     ` Ingo Molnar
2016-02-03 11:28       ` Matt Fleming
2016-02-03 12:36         ` Andy Shevchenko
2016-02-03 15:25         ` Elliott, Robert (Persistent Memory)
2016-02-03 15:25           ` Elliott, Robert (Persistent Memory)
2016-02-09 12:20           ` Ingo Molnar
2016-02-09 12:53             ` Laszlo Ersek
2016-02-09 12:53               ` Laszlo Ersek
2016-02-09 13:14               ` Ingo Molnar
2016-02-09 13:14                 ` Ingo Molnar

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=tip-d3cac1f83c631b9fe5edaebcba49f6989bfff089@git.kernel.org \
    --to=tipbot@zytor.com \
    --cc=ard.biesheuvel@linaro.org \
    --cc=bp@alien8.de \
    --cc=brgerst@gmail.com \
    --cc=dvlasenk@redhat.com \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tip-commits@vger.kernel.org \
    --cc=matt@codeblueprint.co.uk \
    --cc=mingo@kernel.org \
    --cc=peterz@infradead.org \
    --cc=tglx@linutronix.de \
    --cc=torvalds@linux-foundation.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 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.