--- /dev/null
+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
+