From 09b38c1f048e3932587f2978072992358615aab8 Mon Sep 17 00:00:00 2001 From: Tad Date: Fri, 6 Sep 2019 09:38:01 -0400 Subject: [PATCH] marlin/sailfish: fix MediaProvider using 100% CPU - by disabling mtp over functionfs - affects both GrapheneOS and LineageOS - might need to be applied to other devices [pid 2482] ppoll([{fd=42, events=POLLIN}, {fd=51, events=POLLIN}], 2, {tv_sec=0, tv_nsec=0}, NULL, 0) = 0 (Timeout) lrwx------ 1 u0_a13 u0_a13 64 2019-09-05 18:47 42 -> /dev/usb-ffs/mtp/ep0 lrwx------ 1 u0_a13 u0_a13 64 2019-09-05 18:47 51 -> anon_inode:[eventfd] https://forum.xda-developers.com/android/help/pixel2-help-diagnose-android-process-t3863274 https://bugs.chromium.org/p/chromium/issues/detail?id=947901 --- .../android_vendor_divested/divestos.mk | 5 +-- .../android_vendor_divested/module_blocker.mk | 1 - .../0001-Fix_MediaProvider_Deadlock.patch | 42 ++++++++++++++++++ .../0001-Fix_MediaProvider_Deadlock.patch | 44 +++++++++++++++++++ Scripts/LineageOS-15.1/Patch.sh | 3 ++ Scripts/LineageOS-16.0/Patch.sh | 3 ++ 6 files changed, 93 insertions(+), 5 deletions(-) create mode 100644 Patches/LineageOS-15.1/android_device_google_marlin/0001-Fix_MediaProvider_Deadlock.patch create mode 100644 Patches/LineageOS-16.0/android_device_google_marlin/0001-Fix_MediaProvider_Deadlock.patch diff --git a/Patches/Common/android_vendor_divested/divestos.mk b/Patches/Common/android_vendor_divested/divestos.mk index af3eb5ff..b0d0c1ba 100644 --- a/Patches/Common/android_vendor_divested/divestos.mk +++ b/Patches/Common/android_vendor_divested/divestos.mk @@ -15,8 +15,7 @@ PRODUCT_PROPERTY_OVERRIDES += \ ro.config.notification_sound=Pong.ogg \ ro.config.alarm_alert=Alarm_Buzzer.ogg \ keyguard.no_require_sim=true \ - ro.build.selinux=1 \ - ro.storage_manager.enabled=false + ro.build.selinux=1 # ro.control_privapp_permissions=log # ro.control_privapp_permissions=enforce @@ -25,6 +24,4 @@ PRODUCT_COPY_FILES += \ vendor/divested/prebuilts/etc/additional_fdroid_repos.xml:system/etc/org.fdroid.fdroid/additional_repos.xml #Include packages -#PRODUCT_PACKAGES += BlobBlocker -#PRODUCT_PACKAGES += ModuleBlocker include vendor/divested/packages.mk diff --git a/Patches/Common/android_vendor_divested/module_blocker.mk b/Patches/Common/android_vendor_divested/module_blocker.mk index 0a48a124..1816c3bb 100644 --- a/Patches/Common/android_vendor_divested/module_blocker.mk +++ b/Patches/Common/android_vendor_divested/module_blocker.mk @@ -31,7 +31,6 @@ LOCAL_OVERRIDES_PACKAGES := \ CtsShimPrebuilt \ CtsShimPrivPrebuilt \ Traceur \ - StorageManager \ PrintRecommendationService \ CompanionDeviceManager \ MusicFX diff --git a/Patches/LineageOS-15.1/android_device_google_marlin/0001-Fix_MediaProvider_Deadlock.patch b/Patches/LineageOS-15.1/android_device_google_marlin/0001-Fix_MediaProvider_Deadlock.patch new file mode 100644 index 00000000..92724a20 --- /dev/null +++ b/Patches/LineageOS-15.1/android_device_google_marlin/0001-Fix_MediaProvider_Deadlock.patch @@ -0,0 +1,42 @@ +diff --git a/init.common.usb.rc b/init.common.usb.rc +index 632b6495..23bdb19f 100644 +--- a/init.common.usb.rc ++++ b/init.common.usb.rc +@@ -12,18 +12,13 @@ on boot + write /sys/class/android_usb/android0/f_rndis_qc/rndis_transports BAM2BAM_IPA + write /sys/module/g_android/parameters/mtp_tx_req_len 131072 + write /sys/module/g_android/parameters/mtp_rx_req_len 131072 +- setprop sys.usb.ffs.max_write 524288 +- setprop sys.usb.ffs.max_read 524288 +- setprop sys.usb.mtp.device_type 3 + setprop sys.usb.rps_mask 0 + + on post-fs +- write /sys/class/android_usb/android0/f_ffs/aliases adb,mtp ++ write /sys/class/android_usb/android0/f_ffs/aliases adb + mkdir /dev/usb-ffs 0775 shell shell + mkdir /dev/usb-ffs/adb 0770 shell shell + mount functionfs adb /dev/usb-ffs/adb noatime uid=2000,gid=2000,no_disconnect=1 +- mkdir /dev/usb-ffs/mtp 0770 mtp mtp +- mount functionfs mtp /dev/usb-ffs/mtp noatime rmode=0770,fmode=0660,uid=1024,gid=1024,no_disconnect=1 + + on property:sys.usb.config=mtp + stop adbd +@@ -81,7 +76,7 @@ on property:sys.usb.config=ptp + write /sys/class/android_usb/android0/bDeviceClass 0 + write /sys/class/android_usb/android0/bDeviceSubClass 0 + write /sys/class/android_usb/android0/bDeviceProtocol 0 +- write /sys/class/android_usb/android0/functions mtp ++ write /sys/class/android_usb/android0/functions ${sys.usb.config} + write /sys/class/android_usb/android0/enable 1 + setprop sys.usb.state ${sys.usb.config} + +@@ -92,7 +87,7 @@ on property:sys.usb.config=ptp,adb + write /sys/class/android_usb/android0/bDeviceClass 0 + write /sys/class/android_usb/android0/bDeviceSubClass 0 + write /sys/class/android_usb/android0/bDeviceProtocol 0 +- write /sys/class/android_usb/android0/functions mtp,adb ++ write /sys/class/android_usb/android0/functions ${sys.usb.config} + write /sys/class/android_usb/android0/enable 1 + start adbd + setprop sys.usb.state ${sys.usb.config} diff --git a/Patches/LineageOS-16.0/android_device_google_marlin/0001-Fix_MediaProvider_Deadlock.patch b/Patches/LineageOS-16.0/android_device_google_marlin/0001-Fix_MediaProvider_Deadlock.patch new file mode 100644 index 00000000..ad91705c --- /dev/null +++ b/Patches/LineageOS-16.0/android_device_google_marlin/0001-Fix_MediaProvider_Deadlock.patch @@ -0,0 +1,44 @@ +diff --git a/init.common.usb.rc b/init.common.usb.rc +index 58743917..23bdb19f 100644 +--- a/init.common.usb.rc ++++ b/init.common.usb.rc +@@ -10,18 +10,15 @@ on boot + write /sys/class/android_usb/f_mass_storage/lun/nofua 1 + + write /sys/class/android_usb/android0/f_rndis_qc/rndis_transports BAM2BAM_IPA +- setprop sys.usb.mtp.device_type 3 ++ write /sys/module/g_android/parameters/mtp_tx_req_len 131072 ++ write /sys/module/g_android/parameters/mtp_rx_req_len 131072 + setprop sys.usb.rps_mask 0 + + on post-fs +- write /sys/class/android_usb/android0/f_ffs/aliases adb,mtp,ptp ++ write /sys/class/android_usb/android0/f_ffs/aliases adb + mkdir /dev/usb-ffs 0775 shell shell + mkdir /dev/usb-ffs/adb 0770 shell shell + mount functionfs adb /dev/usb-ffs/adb noatime uid=2000,gid=2000,no_disconnect=1 +- mkdir /dev/usb-ffs/mtp 0770 mtp mtp +- mkdir /dev/usb-ffs/ptp 0770 mtp mtp +- mount functionfs mtp /dev/usb-ffs/mtp rmode=0770,fmode=0660,uid=1024,gid=1024,no_disconnect=1 +- mount functionfs ptp /dev/usb-ffs/ptp rmode=0770,fmode=0660,uid=1024,gid=1024,no_disconnect=1 + + on property:sys.usb.config=mtp + stop adbd +@@ -79,7 +76,7 @@ on property:sys.usb.config=ptp + write /sys/class/android_usb/android0/bDeviceClass 0 + write /sys/class/android_usb/android0/bDeviceSubClass 0 + write /sys/class/android_usb/android0/bDeviceProtocol 0 +- write /sys/class/android_usb/android0/functions ptp ++ write /sys/class/android_usb/android0/functions ${sys.usb.config} + write /sys/class/android_usb/android0/enable 1 + setprop sys.usb.state ${sys.usb.config} + +@@ -90,7 +87,7 @@ on property:sys.usb.config=ptp,adb + write /sys/class/android_usb/android0/bDeviceClass 0 + write /sys/class/android_usb/android0/bDeviceSubClass 0 + write /sys/class/android_usb/android0/bDeviceProtocol 0 +- write /sys/class/android_usb/android0/functions ptp,adb ++ write /sys/class/android_usb/android0/functions ${sys.usb.config} + write /sys/class/android_usb/android0/enable 1 + start adbd + setprop sys.usb.state ${sys.usb.config} diff --git a/Scripts/LineageOS-15.1/Patch.sh b/Scripts/LineageOS-15.1/Patch.sh index 1965697b..48906a1e 100644 --- a/Scripts/LineageOS-15.1/Patch.sh +++ b/Scripts/LineageOS-15.1/Patch.sh @@ -196,6 +196,9 @@ if [ "$DOS_HOSTS_BLOCKING" = false ]; then echo "PRODUCT_PACKAGES += $DOS_HOSTS_ # #START OF DEVICE CHANGES # +enterAndClear "device/google/marlin"; +patch -p1 < "$DOS_PATCHES/android_device_google_marlin/0001-Fix_MediaProvider_Deadlock.patch"; #Fix MediaProvider using 100% CPU (due to broken ppoll on functionfs?) + enterAndClear "device/lge/g2-common"; sed -i '3itypeattribute hwaddrs misc_block_device_exception;' sepolicy/hwaddrs.te; diff --git a/Scripts/LineageOS-16.0/Patch.sh b/Scripts/LineageOS-16.0/Patch.sh index 93ca2d74..4d7f95b0 100644 --- a/Scripts/LineageOS-16.0/Patch.sh +++ b/Scripts/LineageOS-16.0/Patch.sh @@ -190,6 +190,9 @@ echo "PRODUCT_PACKAGES += vendor.lineage.trust@1.0-service" >> packages.mk; #All # #START OF DEVICE CHANGES # +enterAndClear "device/google/marlin"; +patch -p1 < "$DOS_PATCHES/android_device_google_marlin/0001-Fix_MediaProvider_Deadlock.patch"; #Fix MediaProvider using 100% CPU (due to broken ppoll on functionfs?) + enterAndClear "device/lge/g2-common"; sed -i '3itypeattribute hwaddrs misc_block_device_exception;' sepolicy/hwaddrs.te;