From 4dc14eb9c0a14753c521a057668befe14aefd45e Mon Sep 17 00:00:00 2001 From: Mykola Grymalyuk Date: Wed, 2 Nov 2022 20:19:41 -0600 Subject: [PATCH] Work-around Ivy/Haswell idle KP --- CHANGELOG.md | 2 ++ resources/sys_patch.py | 6 +++++- resources/sys_patch_helpers.py | 19 +++++++++++++++++++ 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e7d72b25b..17fd1daeb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,8 @@ - AMD Polaris and legacy GCN cannot be mixed in the same system - Legacy GCN support will be prioritized when both are present - AMD Polaris GPU can still be used headless for rendering with legacy GCN (ex. [macOS: Prefer External GPU option](https://support.apple.com/en-ca/HT208544)) + - Disables unsupported `mediaanalysisd` on Ivy Bridge and Haswell + - Alleviates kernel panic on Ivy Bridge and Haswell when on prolonged idle - Work-around MacPro6,1 and Lilu race condition - Ensure Model and Board ID are set correctly before Lilu loads - Increment Binaries: diff --git a/resources/sys_patch.py b/resources/sys_patch.py index 3d29a9def..e95049911 100644 --- a/resources/sys_patch.py +++ b/resources/sys_patch.py @@ -511,8 +511,12 @@ class PatchSysVolume: else: print(f"- Running Process:\n{process}") utilities.process_status(subprocess.run(process, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True)) - if "AMD Legacy GCN" in required_patches or "AMD Legacy Polaris" in required_patches: + + if any(x in required_patches for x in ["AMD Legacy GCN", "AMD Legacy Polaris"]): sys_patch_helpers.sys_patch_helpers(self.constants).disable_window_server_caching() + if any(x in required_patches for x in ["Nvidia Kepler", "Intel Ivy Bridge", "Intel Haswell"]): + sys_patch_helpers.sys_patch_helpers(self.constants).disable_mediaanalysisd() + self.write_patchset(required_patches) def preflight_checks(self, required_patches, source_files_path): diff --git a/resources/sys_patch_helpers.py b/resources/sys_patch_helpers.py index 9fafc45ff..6d3f0a6ad 100644 --- a/resources/sys_patch_helpers.py +++ b/resources/sys_patch_helpers.py @@ -138,8 +138,27 @@ class sys_patch_helpers: # corrupted Opaque shaders. # To work-around this, we disable WindowServer caching # And force macOS into properly generating the Opaque shaders + if self.constants.detected_os < os_data.os_data.ventura: + return print("- Disabling WindowServer Caching") # Invoke via 'bash -c' to resolve pathing utilities.elevated(["bash", "-c", "rm -rf /private/var/folders/*/*/*/WindowServer/com.apple.WindowServer"]) # Disable writing to WindowServer folder utilities.elevated(["bash", "-c", "chflags uchg /private/var/folders/*/*/*/WindowServer"]) + + def disable_mediaanalysisd(self): + # On macOS Ventura, mediaanalysisd now hard locks the system when + # it runs in the background processing photos. The purpose is to + # build a database of keywords per image, however uses Metal 2 + # features that are unsupported on Metal 1 + # Thus, we write lock mediaanalysisd's defaults file to avoid it + # from finding the Photo Library + if self.constants.detected_os < os_data.os_data.ventura: + return + print("- Disabling mediaanalysisd") + media_pathing = Path("~/Library/Preferences/com.apple.mediaanalysisd.plist").expanduser() + if media_pathing.exists(): + utilities.elevated(["rm", "-f", media_pathing]) + utilities.elevated(["touch", media_pathing]) + # Write lock the file + utilities.elevated(["chflags", "uchg", media_pathing]) \ No newline at end of file