From 614b125dd6602724a9460bd4c292f4c3a263af7d Mon Sep 17 00:00:00 2001 From: Sasha Levin Date: Mon, 11 Mar 2019 22:39:06 -0400 Subject: [PATCH] patches for 4.4 Signed-off-by: Sasha Levin --- ...orm-uv-use-efi_runtime_lock-to-seria.patch | 120 ++++++++++++++++++ queue-4.4/series | 1 + 2 files changed, 121 insertions(+) create mode 100644 queue-4.4/revert-x86-platform-uv-use-efi_runtime_lock-to-seria.patch 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 index 00000000000..ed78ae59c3b --- /dev/null +++ b/queue-4.4/revert-x86-platform-uv-use-efi_runtime_lock-to-seria.patch @@ -0,0 +1,120 @@ +From 814e68c79b36901627b0c835aacc9003bb03c3ef Mon Sep 17 00:00:00 2001 +From: Sasha Levin +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 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 +--- + 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 + diff --git a/queue-4.4/series b/queue-4.4/series index a95dfcc2477..5a1941264a7 100644 --- a/queue-4.4/series +++ b/queue-4.4/series @@ -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 -- 2.47.2