]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
patches for 4.4
authorSasha Levin <sashal@kernel.org>
Tue, 12 Mar 2019 02:39:06 +0000 (22:39 -0400)
committerSasha Levin <sashal@kernel.org>
Tue, 12 Mar 2019 02:39:06 +0000 (22:39 -0400)
Signed-off-by: Sasha Levin <sashal@kernel.org>
queue-4.4/revert-x86-platform-uv-use-efi_runtime_lock-to-seria.patch [new file with mode: 0644]
queue-4.4/series

diff --git a/queue-4.4/revert-x86-platform-uv-use-efi_runtime_lock-to-seria.patch b/queue-4.4/revert-x86-platform-uv-use-efi_runtime_lock-to-seria.patch
new file mode 100644 (file)
index 0000000..ed78ae5
--- /dev/null
@@ -0,0 +1,120 @@
+From 814e68c79b36901627b0c835aacc9003bb03c3ef Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Mon, 11 Mar 2019 20:28:23 -0400
+Subject: Revert "x86/platform/UV: Use efi_runtime_lock to serialise BIOS
+ calls"
+
+This reverts commit 7212e37cbdf99f48e4a6c689a42f4bda1ae69001.
+
+Hedi Berriche <hedi.berriche@hpe.com> notes:
+
+> In 4.4-stable efi_runtime_lock as defined in drivers/firmware/efi/runtime-wrappers.c
+> is a spinlock (given it predates commit dce48e351c0d) and commit
+>
+>         f331e766c4be x86/platform/UV: Use efi_runtime_lock to serialise BIOS calls
+>
+> which 7212e37cbdf9 is a backport of, needs it to be a semaphore.
+
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ arch/x86/include/asm/uv/bios.h          |  8 +-------
+ arch/x86/platform/uv/bios_uv.c          | 23 ++---------------------
+ drivers/firmware/efi/runtime-wrappers.c |  7 -------
+ 3 files changed, 3 insertions(+), 35 deletions(-)
+
+diff --git a/arch/x86/include/asm/uv/bios.h b/arch/x86/include/asm/uv/bios.h
+index 8b7594f2d48f..71605c7d5c5c 100644
+--- a/arch/x86/include/asm/uv/bios.h
++++ b/arch/x86/include/asm/uv/bios.h
+@@ -48,8 +48,7 @@ enum {
+       BIOS_STATUS_SUCCESS             =  0,
+       BIOS_STATUS_UNIMPLEMENTED       = -ENOSYS,
+       BIOS_STATUS_EINVAL              = -EINVAL,
+-      BIOS_STATUS_UNAVAIL             = -EBUSY,
+-      BIOS_STATUS_ABORT               = -EINTR,
++      BIOS_STATUS_UNAVAIL             = -EBUSY
+ };
+ /*
+@@ -112,9 +111,4 @@ extern long system_serial_number;
+ extern struct kobject *sgi_uv_kobj;   /* /sys/firmware/sgi_uv */
+-/*
+- * EFI runtime lock; cf. firmware/efi/runtime-wrappers.c for details
+- */
+-extern struct semaphore __efi_uv_runtime_lock;
+-
+ #endif /* _ASM_X86_UV_BIOS_H */
+diff --git a/arch/x86/platform/uv/bios_uv.c b/arch/x86/platform/uv/bios_uv.c
+index a45a1c5aabea..1584cbed0dce 100644
+--- a/arch/x86/platform/uv/bios_uv.c
++++ b/arch/x86/platform/uv/bios_uv.c
+@@ -28,8 +28,7 @@
+ static struct uv_systab uv_systab;
+-static s64 __uv_bios_call(enum uv_bios_cmd which, u64 a1, u64 a2, u64 a3,
+-                      u64 a4, u64 a5)
++s64 uv_bios_call(enum uv_bios_cmd which, u64 a1, u64 a2, u64 a3, u64 a4, u64 a5)
+ {
+       struct uv_systab *tab = &uv_systab;
+       s64 ret;
+@@ -44,19 +43,6 @@ static s64 __uv_bios_call(enum uv_bios_cmd which, u64 a1, u64 a2, u64 a3,
+                       a1, a2, a3, a4, a5);
+       return ret;
+ }
+-
+-s64 uv_bios_call(enum uv_bios_cmd which, u64 a1, u64 a2, u64 a3, u64 a4, u64 a5)
+-{
+-      s64 ret;
+-
+-      if (down_interruptible(&__efi_uv_runtime_lock))
+-              return BIOS_STATUS_ABORT;
+-
+-      ret = __uv_bios_call(which, a1, a2, a3, a4, a5);
+-      up(&__efi_uv_runtime_lock);
+-
+-      return ret;
+-}
+ EXPORT_SYMBOL_GPL(uv_bios_call);
+ s64 uv_bios_call_irqsave(enum uv_bios_cmd which, u64 a1, u64 a2, u64 a3,
+@@ -65,15 +51,10 @@ s64 uv_bios_call_irqsave(enum uv_bios_cmd which, u64 a1, u64 a2, u64 a3,
+       unsigned long bios_flags;
+       s64 ret;
+-      if (down_interruptible(&__efi_uv_runtime_lock))
+-              return BIOS_STATUS_ABORT;
+-
+       local_irq_save(bios_flags);
+-      ret = __uv_bios_call(which, a1, a2, a3, a4, a5);
++      ret = uv_bios_call(which, a1, a2, a3, a4, a5);
+       local_irq_restore(bios_flags);
+-      up(&__efi_uv_runtime_lock);
+-
+       return ret;
+ }
+diff --git a/drivers/firmware/efi/runtime-wrappers.c b/drivers/firmware/efi/runtime-wrappers.c
+index 906d0224f50d..228bbf910461 100644
+--- a/drivers/firmware/efi/runtime-wrappers.c
++++ b/drivers/firmware/efi/runtime-wrappers.c
+@@ -87,13 +87,6 @@ static DEFINE_SPINLOCK(efi_runtime_lock);
+  * context through efi_pstore_write().
+  */
+-/*
+- * Expose the EFI runtime lock to the UV platform
+- */
+-#ifdef CONFIG_X86_UV
+-extern struct semaphore __efi_uv_runtime_lock __alias(efi_runtime_lock);
+-#endif
+-
+ /*
+  * As per commit ef68c8f87ed1 ("x86: Serialize EFI time accesses on rtc_lock"),
+  * the EFI specification requires that callers of the time related runtime
+-- 
+2.19.1
+
index a95dfcc2477199fcf7c23739537647a22f3e7ff6..5a1941264a7a9af02284a7ac5bdb8a82e0691c0c 100644 (file)
@@ -116,3 +116,4 @@ input-elan_i2c-add-id-for-touchpad-found-in-lenovo-s21e-20.patch
 iscsi_ibft-fix-missing-break-in-switch-statement.patch
 futex-rt_mutex-restructure-rt_mutex_finish_proxy_lock.patch
 arm-dts-exynos-add-minimal-clkout-parameters-to-exynos3250-pmu.patch
+revert-x86-platform-uv-use-efi_runtime_lock-to-seria.patch