mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-05-22 02:27:36 +03:00
compact: workaround for GPL-only symbols on riscv from Linux 6.2
Since Linux 6.2, the implementation of flush_dcache_page on riscv references GPL-only symbol `PageHuge`, breaking the build of zfs. This patch uses existing mechanism to override flush_dcache_page, removing the call to `PageHuge`. According to comments in kernel, it is only used to do some check against HugeTLB pages, which only exist in userspace. ZFS uses flush_dcache_page only on kernel pages, thus this patch will not introduce any behaviour change. See also: torvalds/linux@d33deda, openzfs/zfs@589f59b Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Shengqi Chen <harry-chen@outlook.com> Closes #14974 Closes #15627
This commit is contained in:
@@ -42,8 +42,8 @@
|
||||
/*
|
||||
* Starting from Linux 5.13, flush_dcache_page() becomes an inline function
|
||||
* and under some configurations, may indirectly referencing GPL-only
|
||||
* cpu_feature_keys on powerpc. Override this function when it is detected
|
||||
* being GPL-only.
|
||||
* symbols, e.g., cpu_feature_keys on powerpc and PageHuge on riscv.
|
||||
* Override this function when it is detected being GPL-only.
|
||||
*/
|
||||
#if defined __powerpc__ && defined HAVE_FLUSH_DCACHE_PAGE_GPL_ONLY
|
||||
#include <linux/simd_powerpc.h>
|
||||
@@ -53,6 +53,17 @@
|
||||
clear_bit(PG_dcache_clean, &(page)->flags); \
|
||||
} while (0)
|
||||
#endif
|
||||
/*
|
||||
* For riscv implementation, the use of PageHuge can be safely removed.
|
||||
* Because it handles pages allocated by HugeTLB, while flush_dcache_page
|
||||
* in zfs module is only called on kernel pages.
|
||||
*/
|
||||
#if defined __riscv && defined HAVE_FLUSH_DCACHE_PAGE_GPL_ONLY
|
||||
#define flush_dcache_page(page) do { \
|
||||
if (test_bit(PG_dcache_clean, &(page)->flags)) \
|
||||
clear_bit(PG_dcache_clean, &(page)->flags); \
|
||||
} while (0)
|
||||
#endif
|
||||
|
||||
/*
|
||||
* 2.6.30 API change,
|
||||
|
||||
Reference in New Issue
Block a user