diff --git a/customization.cfg b/customization.cfg index 4ce92b0..17e08df 100644 --- a/customization.cfg +++ b/customization.cfg @@ -246,18 +246,18 @@ _NR_CPUS_value="" #### LEGACY OPTIONS #### -# Set to "true" to enable support for fsync, an experimental replacement for esync found in Valve Proton 4.11+ - https://steamcommunity.com/games/221410/announcements/detail/2957094910196249305 -# Can be enabled alongside _futex_waitv on 5.13+ to use it as a fallback for older Proton builds -_fsync="true" +# Upstreamed version of Fsync from Linux 5.16 for previous kernel versions - https://github.com/andrealmeid/futex_waitv_patches +# ! Only affect 5.13, 5.14 and 5.15 kernel branches. Safely ignored for 5.16 or newer ! +_fsync_backport="true" -# Set to "true" to enable backported patches to add support for the futex_waitv() syscall, a new interface for fsync. Upstream as of 5.16 and requires a wine/proton with builtin support for it - https://github.com/ValveSoftware/wine/pull/128 -# !! Disables futex2 interfaces support !! -# https://github.com/andrealmeid/futex_waitv_patches -_futex_waitv="true" +# Fsync legacy, known as FUTEX_WAIT_MULTIPLE (opcode 31) - previous version of fsync required for Valve Proton 4.11, 5.0 and 5.13 - https://steamcommunity.com/games/221410/announcements/detail/2957094910196249305 +_fsync_legacy="true" -# Set to "true" to enable support for futex2, an experimental interface that can be used by proton-tkg and proton 5.13 experimental through Fsync - Can be enabled alongside fsync to use it as a fallback +# Set to "true" to enable support for futex2, a DEPRECATED interface that can be used by proton-tkg and proton 5.13 experimental through Fsync - Can be enabled alongside fsync legacy to use it as a fallback # https://gitlab.collabora.com/tonyk/linux/-/tree/futex2-dev -_futex2="true" +# ! Only affect 5.10-5.14 kernel branches. Safely ignored for 5.15 or newer ! +# ! required _fsync_backport="false" ! +_fsync_futex2="false" # Set to "true" to add back missing symbol for AES-NI/AVX support on ZFS - This is a legacy option that can be ignored on 5.10+ kernels - https://github.com/NixOS/nixpkgs/blob/master/pkgs/os-specific/linux/kernel/export_kernel_fpu_functions.patch _zfsfix="true" diff --git a/linux-tkg-config/prepare b/linux-tkg-config/prepare index 5dcc4a9..4a40c22 100644 --- a/linux-tkg-config/prepare +++ b/linux-tkg-config/prepare @@ -1391,10 +1391,10 @@ _tkg_srcprep() { fi fi - # futex_waitv support + # fsync (futex_waitv) support tkgpatch="$srcdir/0007-v${_basekernel}-futex_waitv.patch" if [ -e "$tkgpatch" ]; then - if [ -z "$_futex_waitv" ]; then + if [ -z "$_fsync_backport" ]; then plain "" plain "Enable support for futex_waitv, backported patches for fsync from 5.16 Kernel" plain "! Will disable futex2 patchset !" @@ -1402,33 +1402,33 @@ _tkg_srcprep() { plain "https://github.com/ValveSoftware/wine/pull/128" read -rp "`echo $' > N/y : '`" CONDITION9; fi - if [[ "$CONDITION9" =~ [yY] ]] || [ "$_futex_waitv" = "true" ]; then - _msg="Patching futex_waitv support" + if [[ "$CONDITION9" =~ [yY] ]] || [ "$_fsync_backport" = "true" ]; then + _msg="Patching fsync support" _tkg_patcher - _futex2="false" + _fsync_futex2="false" fi else - _futex_waitv="false" + _fsync_backport="false" fi - # fsync support - if [[ $_kver > 515 ]] || [[ "$CONDITION9" =~ [yY] ]] || [ "$_futex_waitv" = "true" ]; then - tkgpatch="$srcdir/0007-v${_basekernel}-fsync1_via_futex_waitv.patch" + # fsync legacy support + if [[ $_kver > 515 ]] || [[ "$CONDITION9" =~ [yY] ]] || [ "$_fsync_backport" = "true" ]; then + tkgpatch="$srcdir/0007-v${_basekernel}-fsync_legacy_via_futex_waitv.patch" else - tkgpatch="$srcdir/0007-v${_basekernel}-fsync.patch" + tkgpatch="$srcdir/0007-v${_basekernel}-fsync_legacy.patch" fi if [ -e "$tkgpatch" ]; then - if [ -z "$_fsync" ]; then + if [ -z "$_fsync_legacy" ]; then plain "" - plain "Enable support for fsync, an experimental replacement for esync in Valve Proton 4.11+" + plain "Enable support for FUTEX_WAIT_MULTIPLE (opcode 31) - fsync legacy used in Valve Proton 4.11, 5.0 and 5.13" plain "https://steamcommunity.com/games/221410/announcements/detail/2957094910196249305" - if [[ "$CONDITION9" =~ [yY] ]] || [ "$_futex_waitv" = "true" ]; then + if [[ "$CONDITION9" =~ [yY] ]] || [ "$_fsync_backport" = "true" ]; then plain "Will be used as a fallback to futex_waitv on older Proton builds if enabled" fi read -rp "`echo $' > N/y : '`" CONDITION10; fi - if [[ "$CONDITION10" =~ [yY] ]] || [ "$_fsync" = "true" ]; then - _msg="Patching Fsync support" + if [[ "$CONDITION10" =~ [yY] ]] || [ "$_fsync_legacy" = "true" ]; then + _msg="Patching fsync legacy support" _tkg_patcher fi fi @@ -1436,15 +1436,15 @@ _tkg_srcprep() { # futex2 support tkgpatch="$srcdir/0007-v${_basekernel}-futex2_interface.patch" if [ -e "$tkgpatch" ]; then - if [ -z "$_futex2" ]; then + if [ -z "$_fsync_futex2" ]; then plain "" - plain "Enable support for futex2, an experimental replacement for esync and fsync in Valve Proton 5.13 experimental" - plain "Can be enabled alongside regular fsync patchset to have a fallback option" + plain "Enable support for futex2, a DEPRECATED replacement for esync and fsync in Valve Proton 5.13 experimental" + plain "Can be enabled alongside fsync legacy patchset to have a fallback option" plain "https://gitlab.collabora.com/tonyk/linux/-/tree/futex2-dev" plain "https://github.com/ValveSoftware/Proton/issues/4568" read -rp "`echo $' > N/y : '`" CONDITION11; fi - if [[ "$CONDITION11" =~ [yY] ]] || [ "$_futex2" = "true" ]; then + if [[ "$CONDITION11" =~ [yY] ]] || [ "$_fsync_futex2" = "true" ]; then _msg="Patching futex2 support" _tkg_patcher _enable "FUTEX2" diff --git a/linux-tkg-patches/5.10/0007-v5.10-fsync.patch b/linux-tkg-patches/5.10/0007-v5.10-fsync_legacy.patch similarity index 100% rename from linux-tkg-patches/5.10/0007-v5.10-fsync.patch rename to linux-tkg-patches/5.10/0007-v5.10-fsync_legacy.patch diff --git a/linux-tkg-patches/5.11/0007-v5.11-fsync.patch b/linux-tkg-patches/5.11/0007-v5.11-fsync_legacy.patch similarity index 100% rename from linux-tkg-patches/5.11/0007-v5.11-fsync.patch rename to linux-tkg-patches/5.11/0007-v5.11-fsync_legacy.patch diff --git a/linux-tkg-patches/5.12/0007-v5.12-fsync.patch b/linux-tkg-patches/5.12/0007-v5.12-fsync_legacy.patch similarity index 100% rename from linux-tkg-patches/5.12/0007-v5.12-fsync.patch rename to linux-tkg-patches/5.12/0007-v5.12-fsync_legacy.patch diff --git a/linux-tkg-patches/5.13/0007-v5.13-fsync.patch b/linux-tkg-patches/5.13/0007-v5.13-fsync_legacy.patch similarity index 100% rename from linux-tkg-patches/5.13/0007-v5.13-fsync.patch rename to linux-tkg-patches/5.13/0007-v5.13-fsync_legacy.patch diff --git a/linux-tkg-patches/5.13/0007-v5.13-fsync1_via_futex_waitv.patch b/linux-tkg-patches/5.13/0007-v5.13-fsync_legacy_via_futex_waitv.patch similarity index 100% rename from linux-tkg-patches/5.13/0007-v5.13-fsync1_via_futex_waitv.patch rename to linux-tkg-patches/5.13/0007-v5.13-fsync_legacy_via_futex_waitv.patch diff --git a/linux-tkg-patches/5.14/0007-v5.14-fsync.patch b/linux-tkg-patches/5.14/0007-v5.14-fsync_legacy.patch similarity index 100% rename from linux-tkg-patches/5.14/0007-v5.14-fsync.patch rename to linux-tkg-patches/5.14/0007-v5.14-fsync_legacy.patch diff --git a/linux-tkg-patches/5.14/0007-v5.14-fsync1_via_futex_waitv.patch b/linux-tkg-patches/5.14/0007-v5.14-fsync_legacy_via_futex_waitv.patch similarity index 100% rename from linux-tkg-patches/5.14/0007-v5.14-fsync1_via_futex_waitv.patch rename to linux-tkg-patches/5.14/0007-v5.14-fsync_legacy_via_futex_waitv.patch diff --git a/linux-tkg-patches/5.15/0007-v5.15-fsync.patch b/linux-tkg-patches/5.15/0007-v5.15-fsync_legacy.patch similarity index 100% rename from linux-tkg-patches/5.15/0007-v5.15-fsync.patch rename to linux-tkg-patches/5.15/0007-v5.15-fsync_legacy.patch diff --git a/linux-tkg-patches/5.15/0007-v5.15-fsync1_via_futex_waitv.patch b/linux-tkg-patches/5.15/0007-v5.15-fsync_legacy_via_futex_waitv.patch similarity index 100% rename from linux-tkg-patches/5.15/0007-v5.15-fsync1_via_futex_waitv.patch rename to linux-tkg-patches/5.15/0007-v5.15-fsync_legacy_via_futex_waitv.patch diff --git a/linux-tkg-patches/5.16/0007-v5.16-fsync1_via_futex_waitv.patch b/linux-tkg-patches/5.16/0007-v5.16-fsync_legacy_via_futex_waitv.patch similarity index 100% rename from linux-tkg-patches/5.16/0007-v5.16-fsync1_via_futex_waitv.patch rename to linux-tkg-patches/5.16/0007-v5.16-fsync_legacy_via_futex_waitv.patch diff --git a/linux-tkg-patches/5.17/0007-v5.17-fsync.patch b/linux-tkg-patches/5.17/0007-v5.17-fsync.patch deleted file mode 100644 index 4a8ddcd..0000000 --- a/linux-tkg-patches/5.17/0007-v5.17-fsync.patch +++ /dev/null @@ -1,165 +0,0 @@ -From b70e738f08403950aa3053c36b98c6b0eeb0eb90 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Andr=C3=A9=20Almeida?= -Date: Mon, 25 Oct 2021 09:49:42 -0300 -Subject: [PATCH] futex: Add entry point for FUTEX_WAIT_MULTIPLE (opcode 31) -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Add an option to wait on multiple futexes using the old interface, that -uses opcode 31 through futex() syscall. Do that by just translation the -old interface to use the new code. This allows old and stable versions -of Proton to still use fsync in new kernel releases. - -Signed-off-by: André Almeida ---- - include/uapi/linux/futex.h | 12 ++++++ - kernel/futex/core.c | 75 +++++++++++++++++++++++++++++++++++++- - 2 files changed, 86 insertions(+), 1 deletion(-) - -diff --git a/include/uapi/linux/futex.h b/include/uapi/linux/futex.h -index 2a06b99f9803..417c5d89b745 100644 ---- a/include/uapi/linux/futex.h -+++ b/include/uapi/linux/futex.h -@@ -22,6 +22,7 @@ - #define FUTEX_WAIT_REQUEUE_PI 11 - #define FUTEX_CMP_REQUEUE_PI 12 - #define FUTEX_LOCK_PI2 13 -+#define FUTEX_WAIT_MULTIPLE 31 - - #define FUTEX_PRIVATE_FLAG 128 - #define FUTEX_CLOCK_REALTIME 256 -@@ -68,6 +69,17 @@ struct futex_waitv { - __u32 __reserved; - }; - -+/** -+ * struct futex_wait_block - Block of futexes to be waited for -+ * @uaddr: User address of the futex -+ * @val: Futex value expected by userspace -+ * @bitset: Bitset for the optional bitmasked wakeup -+ */ -+struct futex_wait_block { -+ __u32 __user *uaddr; -+ __u32 val; -+ __u32 bitset; -+}; - - /* - * Support for robust futexes: the kernel cleans up held futexes at -diff --git a/kernel/futex/core.c b/kernel/futex/core.c -index 4a9e7ce3714a..c3f2e65afab8 100644 ---- a/kernel/futex/core.c -+++ b/kernel/futex/core.c -@@ -4012,6 +4012,7 @@ static __always_inline bool futex_cmd_has_timeout(u32 cmd) - case FUTEX_LOCK_PI2: - case FUTEX_WAIT_BITSET: - case FUTEX_WAIT_REQUEUE_PI: -+ case FUTEX_WAIT_MULTIPLE: - return true; - } - return false; -@@ -4024,13 +4025,79 @@ futex_init_timeout(u32 cmd, u32 op, struct timespec64 *ts, ktime_t *t) - return -EINVAL; - - *t = timespec64_to_ktime(*ts); -- if (cmd == FUTEX_WAIT) -+ if (cmd == FUTEX_WAIT || cmd == FUTEX_WAIT_MULTIPLE) - *t = ktime_add_safe(ktime_get(), *t); - else if (cmd != FUTEX_LOCK_PI && !(op & FUTEX_CLOCK_REALTIME)) - *t = timens_ktime_to_host(CLOCK_MONOTONIC, *t); - return 0; - } - -+/** -+ * futex_read_wait_block - Read an array of futex_wait_block from userspace -+ * @uaddr: Userspace address of the block -+ * @count: Number of blocks to be read -+ * -+ * This function creates and allocate an array of futex_q (we zero it to -+ * initialize the fields) and then, for each futex_wait_block element from -+ * userspace, fill a futex_q element with proper values. -+ */ -+inline struct futex_vector *futex_read_wait_block(u32 __user *uaddr, u32 count) -+{ -+ unsigned int i; -+ struct futex_vector *futexv; -+ struct futex_wait_block fwb; -+ struct futex_wait_block __user *entry = -+ (struct futex_wait_block __user *)uaddr; -+ -+ if (!count || count > FUTEX_WAITV_MAX) -+ return ERR_PTR(-EINVAL); -+ -+ futexv = kcalloc(count, sizeof(*futexv), GFP_KERNEL); -+ if (!futexv) -+ return ERR_PTR(-ENOMEM); -+ -+ for (i = 0; i < count; i++) { -+ if (copy_from_user(&fwb, &entry[i], sizeof(fwb))) { -+ kfree(futexv); -+ return ERR_PTR(-EFAULT); -+ } -+ -+ futexv[i].w.flags = FUTEX_32; -+ futexv[i].w.val = fwb.val; -+ futexv[i].w.uaddr = (uintptr_t) (fwb.uaddr); -+ futexv[i].q = futex_q_init; -+ } -+ -+ return futexv; -+} -+ -+int futex_wait_multiple(struct futex_vector *vs, unsigned int count, -+ struct hrtimer_sleeper *to); -+ -+int futex_opcode_31(ktime_t *abs_time, u32 __user *uaddr, int count) -+{ -+ int ret; -+ struct futex_vector *vs; -+ struct hrtimer_sleeper *to = NULL, timeout; -+ -+ to = futex_setup_timer(abs_time, &timeout, 0, 0); -+ -+ vs = futex_read_wait_block(uaddr, count); -+ -+ if (IS_ERR(vs)) -+ return PTR_ERR(vs); -+ -+ ret = futex_wait_multiple(vs, count, abs_time ? to : NULL); -+ kfree(vs); -+ -+ if (to) { -+ hrtimer_cancel(&to->timer); -+ destroy_hrtimer_on_stack(&to->timer); -+ } -+ -+ return ret; -+} -+ - SYSCALL_DEFINE6(futex, u32 __user *, uaddr, int, op, u32, val, - const struct __kernel_timespec __user *, utime, - u32 __user *, uaddr2, u32, val3) -@@ -4050,6 +4117,9 @@ SYSCALL_DEFINE6(futex, u32 __user *, uaddr, int, op, u32, val, - tp = &t; - } - -+ if (cmd == FUTEX_WAIT_MULTIPLE) -+ return futex_opcode_31(tp, uaddr, val); -+ - return do_futex(uaddr, op, val, tp, uaddr2, (unsigned long)utime, val3); - } - -@@ -4551,6 +4621,9 @@ SYSCALL_DEFINE6(futex_time32, u32 __user *, uaddr, int, op, u32, val, - tp = &t; - } - -+ if (cmd == FUTEX_WAIT_MULTIPLE) -+ return futex_opcode_31(tp, uaddr, val); -+ - return do_futex(uaddr, op, val, tp, uaddr2, (unsigned long)utime, val3); - } - #endif /* CONFIG_COMPAT_32BIT_TIME */ --- -2.33.1 - diff --git a/linux-tkg-patches/5.17/0007-v5.17-fsync1_via_futex_waitv.patch b/linux-tkg-patches/5.17/0007-v5.17-fsync_legacy_via_futex_waitv.patch similarity index 100% rename from linux-tkg-patches/5.17/0007-v5.17-fsync1_via_futex_waitv.patch rename to linux-tkg-patches/5.17/0007-v5.17-fsync_legacy_via_futex_waitv.patch diff --git a/linux-tkg-patches/5.18/0007-v5.18-fsync.patch b/linux-tkg-patches/5.18/0007-v5.18-fsync.patch deleted file mode 100644 index 4a8ddcd..0000000 --- a/linux-tkg-patches/5.18/0007-v5.18-fsync.patch +++ /dev/null @@ -1,165 +0,0 @@ -From b70e738f08403950aa3053c36b98c6b0eeb0eb90 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Andr=C3=A9=20Almeida?= -Date: Mon, 25 Oct 2021 09:49:42 -0300 -Subject: [PATCH] futex: Add entry point for FUTEX_WAIT_MULTIPLE (opcode 31) -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Add an option to wait on multiple futexes using the old interface, that -uses opcode 31 through futex() syscall. Do that by just translation the -old interface to use the new code. This allows old and stable versions -of Proton to still use fsync in new kernel releases. - -Signed-off-by: André Almeida ---- - include/uapi/linux/futex.h | 12 ++++++ - kernel/futex/core.c | 75 +++++++++++++++++++++++++++++++++++++- - 2 files changed, 86 insertions(+), 1 deletion(-) - -diff --git a/include/uapi/linux/futex.h b/include/uapi/linux/futex.h -index 2a06b99f9803..417c5d89b745 100644 ---- a/include/uapi/linux/futex.h -+++ b/include/uapi/linux/futex.h -@@ -22,6 +22,7 @@ - #define FUTEX_WAIT_REQUEUE_PI 11 - #define FUTEX_CMP_REQUEUE_PI 12 - #define FUTEX_LOCK_PI2 13 -+#define FUTEX_WAIT_MULTIPLE 31 - - #define FUTEX_PRIVATE_FLAG 128 - #define FUTEX_CLOCK_REALTIME 256 -@@ -68,6 +69,17 @@ struct futex_waitv { - __u32 __reserved; - }; - -+/** -+ * struct futex_wait_block - Block of futexes to be waited for -+ * @uaddr: User address of the futex -+ * @val: Futex value expected by userspace -+ * @bitset: Bitset for the optional bitmasked wakeup -+ */ -+struct futex_wait_block { -+ __u32 __user *uaddr; -+ __u32 val; -+ __u32 bitset; -+}; - - /* - * Support for robust futexes: the kernel cleans up held futexes at -diff --git a/kernel/futex/core.c b/kernel/futex/core.c -index 4a9e7ce3714a..c3f2e65afab8 100644 ---- a/kernel/futex/core.c -+++ b/kernel/futex/core.c -@@ -4012,6 +4012,7 @@ static __always_inline bool futex_cmd_has_timeout(u32 cmd) - case FUTEX_LOCK_PI2: - case FUTEX_WAIT_BITSET: - case FUTEX_WAIT_REQUEUE_PI: -+ case FUTEX_WAIT_MULTIPLE: - return true; - } - return false; -@@ -4024,13 +4025,79 @@ futex_init_timeout(u32 cmd, u32 op, struct timespec64 *ts, ktime_t *t) - return -EINVAL; - - *t = timespec64_to_ktime(*ts); -- if (cmd == FUTEX_WAIT) -+ if (cmd == FUTEX_WAIT || cmd == FUTEX_WAIT_MULTIPLE) - *t = ktime_add_safe(ktime_get(), *t); - else if (cmd != FUTEX_LOCK_PI && !(op & FUTEX_CLOCK_REALTIME)) - *t = timens_ktime_to_host(CLOCK_MONOTONIC, *t); - return 0; - } - -+/** -+ * futex_read_wait_block - Read an array of futex_wait_block from userspace -+ * @uaddr: Userspace address of the block -+ * @count: Number of blocks to be read -+ * -+ * This function creates and allocate an array of futex_q (we zero it to -+ * initialize the fields) and then, for each futex_wait_block element from -+ * userspace, fill a futex_q element with proper values. -+ */ -+inline struct futex_vector *futex_read_wait_block(u32 __user *uaddr, u32 count) -+{ -+ unsigned int i; -+ struct futex_vector *futexv; -+ struct futex_wait_block fwb; -+ struct futex_wait_block __user *entry = -+ (struct futex_wait_block __user *)uaddr; -+ -+ if (!count || count > FUTEX_WAITV_MAX) -+ return ERR_PTR(-EINVAL); -+ -+ futexv = kcalloc(count, sizeof(*futexv), GFP_KERNEL); -+ if (!futexv) -+ return ERR_PTR(-ENOMEM); -+ -+ for (i = 0; i < count; i++) { -+ if (copy_from_user(&fwb, &entry[i], sizeof(fwb))) { -+ kfree(futexv); -+ return ERR_PTR(-EFAULT); -+ } -+ -+ futexv[i].w.flags = FUTEX_32; -+ futexv[i].w.val = fwb.val; -+ futexv[i].w.uaddr = (uintptr_t) (fwb.uaddr); -+ futexv[i].q = futex_q_init; -+ } -+ -+ return futexv; -+} -+ -+int futex_wait_multiple(struct futex_vector *vs, unsigned int count, -+ struct hrtimer_sleeper *to); -+ -+int futex_opcode_31(ktime_t *abs_time, u32 __user *uaddr, int count) -+{ -+ int ret; -+ struct futex_vector *vs; -+ struct hrtimer_sleeper *to = NULL, timeout; -+ -+ to = futex_setup_timer(abs_time, &timeout, 0, 0); -+ -+ vs = futex_read_wait_block(uaddr, count); -+ -+ if (IS_ERR(vs)) -+ return PTR_ERR(vs); -+ -+ ret = futex_wait_multiple(vs, count, abs_time ? to : NULL); -+ kfree(vs); -+ -+ if (to) { -+ hrtimer_cancel(&to->timer); -+ destroy_hrtimer_on_stack(&to->timer); -+ } -+ -+ return ret; -+} -+ - SYSCALL_DEFINE6(futex, u32 __user *, uaddr, int, op, u32, val, - const struct __kernel_timespec __user *, utime, - u32 __user *, uaddr2, u32, val3) -@@ -4050,6 +4117,9 @@ SYSCALL_DEFINE6(futex, u32 __user *, uaddr, int, op, u32, val, - tp = &t; - } - -+ if (cmd == FUTEX_WAIT_MULTIPLE) -+ return futex_opcode_31(tp, uaddr, val); -+ - return do_futex(uaddr, op, val, tp, uaddr2, (unsigned long)utime, val3); - } - -@@ -4551,6 +4621,9 @@ SYSCALL_DEFINE6(futex_time32, u32 __user *, uaddr, int, op, u32, val, - tp = &t; - } - -+ if (cmd == FUTEX_WAIT_MULTIPLE) -+ return futex_opcode_31(tp, uaddr, val); -+ - return do_futex(uaddr, op, val, tp, uaddr2, (unsigned long)utime, val3); - } - #endif /* CONFIG_COMPAT_32BIT_TIME */ --- -2.33.1 - diff --git a/linux-tkg-patches/5.18/0007-v5.18-fsync1_via_futex_waitv.patch b/linux-tkg-patches/5.18/0007-v5.18-fsync_legacy_via_futex_waitv.patch similarity index 100% rename from linux-tkg-patches/5.18/0007-v5.18-fsync1_via_futex_waitv.patch rename to linux-tkg-patches/5.18/0007-v5.18-fsync_legacy_via_futex_waitv.patch diff --git a/linux-tkg-patches/5.19/0007-v5.19-fsync1_via_futex_waitv.patch b/linux-tkg-patches/5.19/0007-v5.19-fsync_legacy_via_futex_waitv.patch similarity index 100% rename from linux-tkg-patches/5.19/0007-v5.19-fsync1_via_futex_waitv.patch rename to linux-tkg-patches/5.19/0007-v5.19-fsync_legacy_via_futex_waitv.patch diff --git a/linux-tkg-patches/5.4/0007-v5.4-fsync.patch b/linux-tkg-patches/5.4/0007-v5.4-fsync_legacy.patch similarity index 100% rename from linux-tkg-patches/5.4/0007-v5.4-fsync.patch rename to linux-tkg-patches/5.4/0007-v5.4-fsync_legacy.patch diff --git a/linux-tkg-patches/5.7/0007-v5.7-fsync.patch b/linux-tkg-patches/5.7/0007-v5.7-fsync_legacy.patch similarity index 100% rename from linux-tkg-patches/5.7/0007-v5.7-fsync.patch rename to linux-tkg-patches/5.7/0007-v5.7-fsync_legacy.patch diff --git a/linux-tkg-patches/5.8/0007-v5.8-fsync.patch b/linux-tkg-patches/5.8/0007-v5.8-fsync_legacy.patch similarity index 100% rename from linux-tkg-patches/5.8/0007-v5.8-fsync.patch rename to linux-tkg-patches/5.8/0007-v5.8-fsync_legacy.patch diff --git a/linux-tkg-patches/5.9/0007-v5.9-fsync.patch b/linux-tkg-patches/5.9/0007-v5.9-fsync_legacy.patch similarity index 100% rename from linux-tkg-patches/5.9/0007-v5.9-fsync.patch rename to linux-tkg-patches/5.9/0007-v5.9-fsync_legacy.patch diff --git a/linux-tkg-patches/6.0/0007-v6.0-fsync1_via_futex_waitv.patch b/linux-tkg-patches/6.0/0007-v6.0-fsync_legacy_via_futex_waitv.patch similarity index 100% rename from linux-tkg-patches/6.0/0007-v6.0-fsync1_via_futex_waitv.patch rename to linux-tkg-patches/6.0/0007-v6.0-fsync_legacy_via_futex_waitv.patch diff --git a/linux-tkg-patches/6.1/0007-v6.1-fsync1_via_futex_waitv.patch b/linux-tkg-patches/6.1/0007-v6.1-fsync_legacy_via_futex_waitv.patch similarity index 100% rename from linux-tkg-patches/6.1/0007-v6.1-fsync1_via_futex_waitv.patch rename to linux-tkg-patches/6.1/0007-v6.1-fsync_legacy_via_futex_waitv.patch diff --git a/linux-tkg-patches/6.2/0007-v6.2-fsync1_via_futex_waitv.patch b/linux-tkg-patches/6.2/0007-v6.2-fsync_legacy_via_futex_waitv.patch similarity index 100% rename from linux-tkg-patches/6.2/0007-v6.2-fsync1_via_futex_waitv.patch rename to linux-tkg-patches/6.2/0007-v6.2-fsync_legacy_via_futex_waitv.patch