--- /dev/null
+From 7f1e2fc493480086fbb375f4f6d33cb93fc069d6 Mon Sep 17 00:00:00 2001
+From: Dawei Li <set_pte_at@outlook.com>
+Date: Sat, 9 Mar 2024 18:24:07 +0800
+Subject: openrisc: Use asm-generic's version of fix_to_virt() & virt_to_fix()
+
+From: Dawei Li <set_pte_at@outlook.com>
+
+commit 7f1e2fc493480086fbb375f4f6d33cb93fc069d6 upstream.
+
+Openrisc's implementation of fix_to_virt() & virt_to_fix() share same
+functionality with ones of asm generic.
+
+Plus, generic version of fix_to_virt() can trap invalid index at compile
+time.
+
+Thus, Replace the arch-specific implementations with asm generic's ones.
+
+Signed-off-by: Dawei Li <set_pte_at@outlook.com>
+Signed-off-by: Stafford Horne <shorne@gmail.com>
+Cc: Guenter Roeck <linux@roeck-us.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ arch/openrisc/include/asm/fixmap.h | 31 +------------------------------
+ 1 file changed, 1 insertion(+), 30 deletions(-)
+
+--- a/arch/openrisc/include/asm/fixmap.h
++++ b/arch/openrisc/include/asm/fixmap.h
+@@ -39,35 +39,6 @@ enum fixed_addresses {
+ extern void __set_fixmap(enum fixed_addresses idx,
+ phys_addr_t phys, pgprot_t flags);
+
+-#define __fix_to_virt(x) (FIXADDR_TOP - ((x) << PAGE_SHIFT))
+-#define __virt_to_fix(x) ((FIXADDR_TOP - ((x)&PAGE_MASK)) >> PAGE_SHIFT)
+-
+-/*
+- * 'index to address' translation. If anyone tries to use the idx
+- * directly without tranlation, we catch the bug with a NULL-deference
+- * kernel oops. Illegal ranges of incoming indices are caught too.
+- */
+-static __always_inline unsigned long fix_to_virt(const unsigned int idx)
+-{
+- /*
+- * this branch gets completely eliminated after inlining,
+- * except when someone tries to use fixaddr indices in an
+- * illegal way. (such as mixing up address types or using
+- * out-of-range indices).
+- *
+- * If it doesn't get removed, the linker will complain
+- * loudly with a reasonably clear error message..
+- */
+- if (idx >= __end_of_fixed_addresses)
+- BUG();
+-
+- return __fix_to_virt(idx);
+-}
+-
+-static inline unsigned long virt_to_fix(const unsigned long vaddr)
+-{
+- BUG_ON(vaddr >= FIXADDR_TOP || vaddr < FIXADDR_START);
+- return __virt_to_fix(vaddr);
+-}
++#include <asm-generic/fixmap.h>
+
+ #endif