Not tested. Two patchs here :Linubie wrote: If someone has an idea how to patch the kernel, to let us participate in the testing please feel free to share your knowlegde.
From here :Ant P. wrote:What does this do, exactly? It doesn't seem to be related to fsync(2) at all.
As such, we're proposing changes to the Linux kernel[lkml.org] to extend the futex() system call to expose
what we think is the needed extra bit of core functionality needed to support optimal thread pool synchronization.
Proton 4.11 includes the fsync patchset, which will leverage this new Linux kernel functionality to replace esync
when supported. For more technical details, refer to the link to the proposed kernel changes above.

Code: Select all
~/.steam/steam/compatibilitytools.d/Code: Select all
fsync: up and running
Linubie wrote:There is also a compiled version of proton available.
https://github.com/GloriousEggroll/prot ... m/releases
You only need to unpack your downloaded version into
and choose the version you want to test in steam setting.Code: Select all
~/.steam/steam/compatibilitytools.d/
There's no kernel option for fsync (not right now anyway), you just need the patch and you're done (it makes no kconfig changes). I just used the patch given by archlinux (futex-wait-multiple-5.2.1.patch) and it still works on 5.4.6 alongside my custom configs.hedmo wrote:can someone tell me what kernel option i need tog get this working on my custom config?
IonenIonen wrote:There's no kernel option for fsync (not right now anyway), you just need the patch and you're done (it makes no kconfig changes). I just used the patch given by archlinux (futex-wait-multiple-5.2.1.patch) and it still works on 5.4.6.hedmo wrote:can someone tell me what kernel option i need tog get this working on my custom config?
Personally using normal wine-staging (from gentoo) + rebased tkg staging fsync patch + a few other handpicked patches, and it's working great (don't want to bother with proton, and I am so done with esync). Using wine-tkg/eggroll/proton directly is a simpler solution though, I need to sort out the patches myself with new versions.
Code: Select all
wine-tkg/eggroll/proton Do you have a rebased patch that would work for wine-staging 4.21 or 5.0? I tried the 4.13 one that's available here but it seems like it isn't compatible:Ionen wrote:There's no kernel option for fsync (not right now anyway), you just need the patch and you're done (it makes no kconfig changes). I just used the patch given by archlinux (futex-wait-multiple-5.2.1.patch) and it still works on 5.4.6 alongside my custom configs.hedmo wrote:can someone tell me what kernel option i need tog get this working on my custom config?
Personally using normal wine-staging (from gentoo) + rebased tkg staging fsync patch + a few other handpicked patches, and it's working great (don't want to use proton, but I am so done with esync). Using wine-tkg/eggroll/proton directly is a simpler solution though, I need to sort out the patches myself with new versions.
I still have the one I used for wine-staging-4.21 that been working great (WINEFSYNC=1 to enable), probably not be a hard fix but it doesn't apply on 5.0 (was planning to look into that much later). Can always check tkg patches instead but the staging patch need to be rebased to work with gentoo's ebuild due to the way it applies staging patches, mine should apply 100% cleanly with wine-staging-4.21.ebuild as a user patch, unless want wine-vanilla.Mappy wrote:Do you have a rebased patch that would work for wine-staging 4.21 or 5.0?
Thank you, it works great. Do you have a guide I could read to learn how to rebase a patch myself? Or would you by any chance consider maintaining a repo for your patches? I would like to be able to use fsync with future updates, but if it's too much of a bother then don't worry about it.Ionen wrote:I still have the one I used for wine-staging-4.21 that been working great (WINEFSYNC=1 to enable), probably not be a hard fix but it doesn't apply on 5.0 (was planning to look into that much later). Can always check tkg patches instead but the staging patch need to be rebased to work with gentoo's ebuild due to the way it applies staging patches, mine should apply 100% cleanly with wine-staging-4.21.ebuild as a user patch, unless want wine-vanilla.Mappy wrote:Do you have a rebased patch that would work for wine-staging 4.21 or 5.0?
It's nothing that need actual work. Just need a wine tree with staging patches applied with --no-autoconf then use fuzz (-F) for fsync patches (it could potentially produce wrong results but well, it works).Mappy wrote:Thank you, it works great. Do you have a guide I could read to learn how to rebase a patch myself? Or would you by any chance consider maintaining a repo for your patches? I would like to be able to use fsync with future updates, but if it's too much of a bother then don't worry about it.
Code: Select all
WINEVER=5.8 # update as needed
./wine-staging-${WINEVER}/patches/patchinstall.sh DESTDIR=wine-${WINEVER} --no-autoconf --all &&
cp -a wine-${WINEVER} wine-fsync &&
patch -d wine-fsync -p1 -F 3 --no-backup-if-mismatch < fsync-staging.patch &&
patch -d wine-fsync -p1 -F 3 --no-backup-if-mismatch < fsync-staging-no_alloc_handle.patch &&
diff -Naur wine-${WINEVER} wine-fsync > wine-staging-fsync.patchWould love to get those patches. I use the zen-kernel and would like to do some testing. Every patch I found was either for an old version or custom wine-xxxx that incompatible with wine-staging.Update 2020-10-19: not released yet but looking at commits wine-staging-5.20 is bringing back esync, and wine-tkg has new fsync-unix patches
The fsync-unix-staging.patch from here works for me using Ionen's script. Just replace the fsync-staging.patch and fsync-staging-no_alloc_handle.patch lines with it.TechwoIf wrote:Would love to get those patches. I use the zen-kernel and would like to do some testing. Every patch I found was either for an old version or custom wine-xxxx that incompatible with wine-staging.Update 2020-10-19: not released yet but looking at commits wine-staging-5.20 is bringing back esync, and wine-tkg has new fsync-unix patches
Thank you for the info. I downloaded fsync-unix-staging.patch to /etc/portage/patches/app-emulation/wine-staging-5.20 and emerge -1av wine-staging. Turns out fsync-staging-no_alloc_handle.patch is no longer needed.Mappy wrote:
The fsync-unix-staging.patch from here works for me using Ionen's script. Just replace the fsync-staging.patch and fsync-staging-no_alloc_handle.patch lines with it.
While using esync or fsync can give a noticeable boost on cpu-bound games, using fsync over esync is almost identical performance as far as I'm aware. But esync is more like a hack that use an absurd amount of file descriptors in unintended ways, so fsync would be a better long term solution (or at least if kernel gets support officially added).TechwoIf wrote:Wine-staging 5.20(without the fsync patch) does have esync enable and shows it in the output. I get about 50% to 100% performance increase in Elder Scrolls Online. Was hoping to get fsync working and get a bit more on top of that.
Code: Select all
* Applying wine-5.9-Revert-makedep-Install-also-generated-typelib-for-in.patch ... [ ok ]
* Applying fsync-wine-staging-6.0-rc2.patch ...
(...)
patching file include/wine/server_protocol.h
Hunk #1 succeeded at 5347 (offset -87 lines).
Hunk #2 FAILED at 5801.
Hunk #3 FAILED at 6087.
Hunk #4 FAILED at 6371.
(...)
Code: Select all
* Applying wine-5.9-Revert-makedep-Install-also-generated-typelib-for-in.patch ... [ ok ]
* Running eautoreconf in '/var/tmp/portage/app-emulation/wine-staging-9999/work/wine-9999' ...
* Running autoconf --force ... [ ok ]
* Running autoheader ... [ ok ]
* Running elibtoolize in: wine-9999/
* server/protocol.def was patched; running tools/make_requests
include/wine/server_protocol.h updated
include/wine/server_protocol.h updated
server/trace.c updated
server/request.h updated
>>> Source prepared.