From: Yasuaki Ishimatsu <isimatu.yasuaki-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
To: "linux-efi-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
<linux-efi-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
"linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
<linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>
Cc: Matthew Garrett
<matthew.garrett-05XSO3Yj/JvQT0dZR+AlfA@public.gmane.org>,
"matt.fleming-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org"
<matt.fleming-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>,
"jlee-IBi9RG/b67k@public.gmane.org"
<jlee-IBi9RG/b67k@public.gmane.org>,
"matt-HNK1S37rvNbeXh+fF434Mdi2O/JbrIOy@public.gmane.org"
<matt-HNK1S37rvNbeXh+fF434Mdi2O/JbrIOy@public.gmane.org>,
"richard-/L3Ra7n9ekc@public.gmane.org"
<richard-/L3Ra7n9ekc@public.gmane.org>,
"cxie-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org"
<cxie-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
Subject: [PATCH] x86, efi: add efi_whitelist_table to use all efi variable storage
Date: Fri, 22 Nov 2013 15:29:34 +0900 [thread overview]
Message-ID: <528EF9CE.2070305@jp.fujitsu.com> (raw)
In-Reply-To: <528EF87D.4050300-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
By following works, my system very often fails set_variable() to set new
variable to efi variable storage and shows "efivars: set_variable() failed:
status=-28" message.
- commit 68d929862e29a8b52a7f2f2f86a0600423b093cd
efi: be more paranoid about available space when creating variables
- commit 31ff2f20d9003e74991d135f56e503fe776c127c
efi: Distinguish between "remaining space" and actually used space
- commit 8c58bf3eec3b8fc8162fe557e9361891c20758f2
x86,efi: Implement efi_no_storage_paranoia parameter
- commit f8b8404337de4e2466e2e1139ea68b1f8295974f
Modify UEFI anti-bricking code
When booting my system, remaining space of efi variable storage is about
5KB. So there is no room that sets a new variable to the storage. On my
system, trigger of gc is when EFI_OUT_OF_RESOURCES occurs on pre OS
environment with UEFI. So if EFI_OUT_OF_RESOURCES occurs by the 5Kbyte
threshold, nvram storage cannot be used until EFI_OUT_OF_RESOURCES occurs
on pre OS environment with UEFI.
This patch adds whitelist. If a server is in the whitelist,
efi_no_storage_paranoia is set to true. And the system can use all efi
variable storage.
Signed-off-by: Yasuaki Ishimatsu <isimatu.yasuaki-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
CC: Matthew Garrett <matthew.garrett-05XSO3Yj/JvQT0dZR+AlfA@public.gmane.org>
CC: Richard Weinberger <richard-/L3Ra7n9ekc@public.gmane.org>
CC: Lee, Chun-Y <jlee-IBi9RG/b67k@public.gmane.org>
CC: Madper Xie <cxie-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
CC: Matt Fleming <matt.fleming-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
---
arch/x86/platform/efi/efi.c | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
diff --git a/arch/x86/platform/efi/efi.c b/arch/x86/platform/efi/efi.c
index c7e22ab..f9fad62 100644
--- a/arch/x86/platform/efi/efi.c
+++ b/arch/x86/platform/efi/efi.c
@@ -42,6 +42,7 @@
#include <linux/io.h>
#include <linux/reboot.h>
#include <linux/bcd.h>
+#include <linux/dmi.h>
#include <asm/setup.h>
#include <asm/efi.h>
@@ -116,6 +117,24 @@ static int __init setup_storage_paranoia(char *arg)
}
early_param("efi_no_storage_paranoia", setup_storage_paranoia);
+static struct dmi_system_id efi_whitelist_table[] __initdata = {
+ {
+ /* FUJITSU PRIMEQUEST */
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "PRIMEQUEST"),
+ },
+ },
+ {}
+};
+
+static int __init init_efi_no_storage_paranoia(void)
+{
+ if (dmi_check_system(efi_whitelist_table))
+ efi_no_storage_paranoia = true;
+ return 0;
+}
+late_initcall(init_efi_no_storage_paranoia);
static efi_status_t virt_efi_get_time(efi_time_t *tm, efi_time_cap_t *tc)
{
WARNING: multiple messages have this Message-ID (diff)
From: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
To: "linux-efi@vger.kernel.org" <linux-efi@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Cc: Matthew Garrett <matthew.garrett@nebula.com>,
"matt.fleming@intel.com" <matt.fleming@intel.com>,
"jlee@suse.com" <jlee@suse.com>,
"matt@console-pimps.org" <matt@console-pimps.org>,
"richard@nod.at" <richard@nod.at>,
"cxie@redhat.com" <cxie@redhat.com>
Subject: [PATCH] x86, efi: add efi_whitelist_table to use all efi variable storage
Date: Fri, 22 Nov 2013 15:29:34 +0900 [thread overview]
Message-ID: <528EF9CE.2070305@jp.fujitsu.com> (raw)
In-Reply-To: <528EF87D.4050300@jp.fujitsu.com>
By following works, my system very often fails set_variable() to set new
variable to efi variable storage and shows "efivars: set_variable() failed:
status=-28" message.
- commit 68d929862e29a8b52a7f2f2f86a0600423b093cd
efi: be more paranoid about available space when creating variables
- commit 31ff2f20d9003e74991d135f56e503fe776c127c
efi: Distinguish between "remaining space" and actually used space
- commit 8c58bf3eec3b8fc8162fe557e9361891c20758f2
x86,efi: Implement efi_no_storage_paranoia parameter
- commit f8b8404337de4e2466e2e1139ea68b1f8295974f
Modify UEFI anti-bricking code
When booting my system, remaining space of efi variable storage is about
5KB. So there is no room that sets a new variable to the storage. On my
system, trigger of gc is when EFI_OUT_OF_RESOURCES occurs on pre OS
environment with UEFI. So if EFI_OUT_OF_RESOURCES occurs by the 5Kbyte
threshold, nvram storage cannot be used until EFI_OUT_OF_RESOURCES occurs
on pre OS environment with UEFI.
This patch adds whitelist. If a server is in the whitelist,
efi_no_storage_paranoia is set to true. And the system can use all efi
variable storage.
Signed-off-by: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
CC: Matthew Garrett <matthew.garrett@nebula.com>
CC: Richard Weinberger <richard@nod.at>
CC: Lee, Chun-Y <jlee@suse.com>
CC: Madper Xie <cxie@redhat.com>
CC: Matt Fleming <matt.fleming@intel.com>
---
arch/x86/platform/efi/efi.c | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
diff --git a/arch/x86/platform/efi/efi.c b/arch/x86/platform/efi/efi.c
index c7e22ab..f9fad62 100644
--- a/arch/x86/platform/efi/efi.c
+++ b/arch/x86/platform/efi/efi.c
@@ -42,6 +42,7 @@
#include <linux/io.h>
#include <linux/reboot.h>
#include <linux/bcd.h>
+#include <linux/dmi.h>
#include <asm/setup.h>
#include <asm/efi.h>
@@ -116,6 +117,24 @@ static int __init setup_storage_paranoia(char *arg)
}
early_param("efi_no_storage_paranoia", setup_storage_paranoia);
+static struct dmi_system_id efi_whitelist_table[] __initdata = {
+ {
+ /* FUJITSU PRIMEQUEST */
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "PRIMEQUEST"),
+ },
+ },
+ {}
+};
+
+static int __init init_efi_no_storage_paranoia(void)
+{
+ if (dmi_check_system(efi_whitelist_table))
+ efi_no_storage_paranoia = true;
+ return 0;
+}
+late_initcall(init_efi_no_storage_paranoia);
static efi_status_t virt_efi_get_time(efi_time_t *tm, efi_time_cap_t *tc)
{
next prev parent reply other threads:[~2013-11-22 6:29 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-11-20 8:34 [PATCH] x86, efi: add no_bricked_efi whitelist Yasuaki Ishimatsu
2013-11-20 8:34 ` Yasuaki Ishimatsu
[not found] ` <528C740A.6010407-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
2013-11-20 8:54 ` Richard Weinberger
2013-11-20 8:54 ` Richard Weinberger
2013-11-21 9:25 ` Yasuaki Ishimatsu
2013-11-21 9:25 ` Yasuaki Ishimatsu
2013-11-20 16:02 ` Matthew Garrett
2013-11-20 16:02 ` Matthew Garrett
2013-11-21 9:35 ` Yasuaki Ishimatsu
2013-11-21 9:35 ` Yasuaki Ishimatsu
[not found] ` <528DD3E0.3050606-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
2013-11-21 20:12 ` Matthew Garrett
2013-11-21 20:12 ` Matthew Garrett
2013-11-22 0:00 ` Yasuaki Ishimatsu
2013-11-22 0:00 ` Yasuaki Ishimatsu
[not found] ` <528E9EB2.3060808-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
2013-11-22 0:03 ` Matthew Garrett
2013-11-22 0:03 ` Matthew Garrett
2013-11-22 6:23 ` Yasuaki Ishimatsu
2013-11-22 6:23 ` Yasuaki Ishimatsu
[not found] ` <528EF87D.4050300-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
2013-11-22 6:29 ` Yasuaki Ishimatsu [this message]
2013-11-22 6:29 ` [PATCH] x86, efi: add efi_whitelist_table to use all efi variable storage Yasuaki Ishimatsu
2013-11-22 17:47 ` Matthew Garrett
2013-11-22 17:47 ` Matthew Garrett
2013-12-03 3:20 ` Yasuaki Ishimatsu
2013-12-03 3:20 ` Yasuaki Ishimatsu
[not found] ` <529D4DF5.80502-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
2013-12-03 3:45 ` Matthew Garrett
2013-12-03 3:45 ` Matthew Garrett
[not found] ` <25e63f3b748741998d2b3e04bbc53064-jH1ztPcg5hENpgVgjDfI3Wu6+pknBqLbXA4E9RH9d+qIuWR1G4zioA@public.gmane.org>
2013-12-03 4:49 ` Yasuaki Ishimatsu
2013-12-03 4:49 ` Yasuaki Ishimatsu
2013-12-03 5:04 ` Matthew Garrett
[not found] ` <20131203050450.GA30967-1xO5oi07KQx4cg9Nei1l7Q@public.gmane.org>
2013-12-03 5:12 ` Yasuaki Ishimatsu
2013-12-03 5:12 ` Yasuaki Ishimatsu
2013-11-22 17:48 ` [PATCH] x86, efi: add no_bricked_efi whitelist Matthew Garrett
2013-11-22 17:48 ` Matthew Garrett
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=528EF9CE.2070305@jp.fujitsu.com \
--to=isimatu.yasuaki-+cum20s59erqfuhtdcdx3a@public.gmane.org \
--cc=cxie-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
--cc=jlee-IBi9RG/b67k@public.gmane.org \
--cc=linux-efi-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=matt-HNK1S37rvNbeXh+fF434Mdi2O/JbrIOy@public.gmane.org \
--cc=matt.fleming-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
--cc=matthew.garrett-05XSO3Yj/JvQT0dZR+AlfA@public.gmane.org \
--cc=richard-/L3Ra7n9ekc@public.gmane.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.