From b058b0088f70ae4527ffe0890b8cd2afd6c96152 Mon Sep 17 00:00:00 2001 From: Roy Luo Date: Wed, 8 Feb 2023 19:38:32 +0000 Subject: [PATCH 1/8] Add shell command to send vendor command to GL852G Bug: 261923350 Bug: 340665903 Test: adb shell cmd android.hardware.usb.IUsb/default hub-vendor-cmd Change-Id: I83b56d28cfd89dfaf51fce88f97020196402f972 Signed-off-by: Roy Luo --- usb/usb/Android.bp | 1 + usb/usb/Usb.cpp | 115 +++++++++++++++++- usb/usb/Usb.h | 5 +- usb/usb/android.hardware.usb-service-i2c11.rc | 2 +- usb/usb/android.hardware.usb-service-i2c6.rc | 2 +- 5 files changed, 121 insertions(+), 4 deletions(-) diff --git a/usb/usb/Android.bp b/usb/usb/Android.bp index 3be3369..e70985c 100644 --- a/usb/usb/Android.bp +++ b/usb/usb/Android.bp @@ -40,6 +40,7 @@ cc_binary { "libbinder", "libhidlbase", "liblog", + "libusbhost", "libutils", "libhardware", "android.hardware.thermal@1.0", diff --git a/usb/usb/Usb.cpp b/usb/usb/Usb.cpp index b2b49b6..3944372 100644 --- a/usb/usb/Usb.cpp +++ b/usb/usb/Usb.cpp @@ -23,10 +23,12 @@ #include #include #include +#include #include #include #include #include +#include #include #include #include @@ -37,6 +39,7 @@ #include #include #include +#include #include "Usb.h" @@ -58,6 +61,8 @@ using android::hardware::google::pixel::getStatsService; using android::hardware::google::pixel::PixelAtoms::VendorUsbPortOverheat; using android::hardware::google::pixel::reportUsbPortOverheat; using android::hardware::google::pixel::usb::getI2cClientPath; +using android::String8; +using android::Vector; namespace aidl { namespace android { @@ -116,6 +121,12 @@ void queryVersionHelper(android::hardware::usb::Usb *usb, AltModeData::DisplayPortAltModeData constructAltModeData(string hpd, string pin_assignment, string link_status, string vdo); +#define CTRL_TRANSFER_TIMEOUT_MSEC 1000 +#define GL852G_VENDOR_ID 0x05e3 +#define GL852G_PRODUCT_ID1 0x0608 +#define GL852G_PRODUCT_ID2 0x0610 +#define GL852G_VENDOR_CMD_REQ 0xe3 + ScopedAStatus Usb::enableUsbData(const string& in_portName, bool in_enable, int64_t in_transactionId) { bool result = true; @@ -853,7 +864,7 @@ Status getPortStatusHelper(android::hardware::usb::Usb *usb, PortRole currentRole; currentRole.set(PortPowerRole::NONE); - if (getCurrentRoleHelper(port.first, port.second, ¤tRole) == Status::SUCCESS){ + if (getCurrentRoleHelper(port.first, port.second, ¤tRole) == Status::SUCCESS) { (*currentPortStatus)[i].currentPowerRole = currentRole.get(); } else { ALOGE("Error while retrieving portNames"); @@ -1939,6 +1950,108 @@ void Usb::shutdownDisplayPortPoll(bool force) { } } +struct hub_vendor_cmd { + // wValue filed of standard device request + int value; + // wIndex field of standard device request + int index; + // Output pipe to shell command + int out; + // Whether the hub is found + bool found; +}; + +static int usbDeviceAdded(const char *devname, void* client_data) { + struct hub_vendor_cmd *cmd = (struct hub_vendor_cmd *)client_data; + uint16_t vendorId, productId; + struct usb_device *device = usb_device_open(devname); + + if (!device) { + dprintf(cmd->out, "usb_device_open failed\n"); + return 0; + } + + // The vendor cmd only applies to USB Hubs of Genesys Logic, Inc. + // The request field of vendor cmd is fixed to 0xe3. + vendorId = usb_device_get_vendor_id(device); + productId = usb_device_get_product_id(device); + if (vendorId == GL852G_VENDOR_ID && + (productId == GL852G_PRODUCT_ID1 || productId == GL852G_PRODUCT_ID2)) { + int ret = usb_device_control_transfer( + device, USB_DIR_OUT | USB_TYPE_VENDOR, + GL852G_VENDOR_CMD_REQ, cmd->value, cmd->index, NULL, 0, + CTRL_TRANSFER_TIMEOUT_MSEC); + dprintf(cmd->out, "Vendor cmd %s (wValue %x, wIndex %x, return %d)\n", + ret? "failed" : "succeeded", cmd->value, cmd->index, ret); + // Stop iterating through usb devices once the hub is found. + cmd->found = true; + return 1; + } + + return 0; +} + +static int usbDiscoveryDone(void *client_data) +{ + struct hub_vendor_cmd *cmd = (struct hub_vendor_cmd *)client_data; + + dprintf(cmd->out, "Done USB discovery, hub %s found\n", + cmd->found ? "is" : "not"); + + return 1; +} + +static status_t sendHubVendorCmd(int out, Vector& args) { + if (args.size() < 3) { + dprintf(out, "Incorrect number of argument supplied\n"); + return ::android::UNKNOWN_ERROR; + } + struct hub_vendor_cmd cmd = { + .value = std::stoi(args[1].c_str(), NULL, 16), + .index = std::stoi(args[2].c_str(), NULL, 16), + .out = out, + .found = false + }; + + struct usb_host_context *ctx; + ctx = usb_host_init(); + if (!ctx) { + dprintf(out, "usb_host_init failed\n"); + return ::android::UNKNOWN_ERROR; + } + + usb_host_run(ctx, usbDeviceAdded, NULL, usbDiscoveryDone, &cmd); + usb_host_cleanup(ctx); + + return ::android::NO_ERROR; +} + +status_t Usb::handleShellCommand(int in, int out, int err, const char** argv, + uint32_t argc) { + uid_t uid = AIBinder_getCallingUid(); + if (uid != AID_ROOT && uid != AID_SHELL) { + return ::android::PERMISSION_DENIED; + } + + Vector utf8Args; + utf8Args.setCapacity(argc); + for (uint32_t i = 0; i < argc; i++) { + utf8Args.push(String8(argv[i])); + } + + if (argc >= 1) { + if (!utf8Args[0].compare(String8("hub-vendor-cmd"))) { + return sendHubVendorCmd(out, utf8Args); + } + } + + dprintf(out, "usage: adb shell cmd hub-vendor-cmd VALUE INDEX\n" + " VALUE wValue field in hex format, e.g. f321\n" + " INDEX wIndex field in hex format, e.g. f321\n"); + + return ::android::NO_ERROR; +} + } // namespace usb } // namespace hardware } // namespace android diff --git a/usb/usb/Usb.h b/usb/usb/Usb.h index 4ac6a44..91eea4f 100644 --- a/usb/usb/Usb.h +++ b/usb/usb/Usb.h @@ -55,6 +55,7 @@ using ::android::hardware::google::pixel::usb::ZoneInfo; using ::android::hardware::thermal::V2_0::TemperatureType; using ::android::hardware::thermal::V2_0::ThrottlingSeverity; using ::android::sp; +using ::android::status_t; using ::ndk::ScopedAStatus; using ::std::shared_ptr; using ::std::string; @@ -97,7 +98,7 @@ struct Usb : public BnUsb { ScopedAStatus enableUsbDataWhileDocked(const string& in_portName, int64_t in_transactionId) override; ScopedAStatus limitPowerTransfer(const string& in_portName, bool in_limit, - int64_t in_transactionId) override; + int64_t in_transactionId) override; ScopedAStatus resetUsbPort(const string& in_portName, int64_t in_transactionId) override; Status getDisplayPortUsbPathHelper(string *path); @@ -108,6 +109,8 @@ struct Usb : public BnUsb { void setupDisplayPortPoll(); void shutdownDisplayPortPollHelper(); void shutdownDisplayPortPoll(bool force); + status_t handleShellCommand(int in, int out, int err, const char** argv, + uint32_t argc) override; std::shared_ptr<::aidl::android::hardware::usb::IUsbCallback> mCallback; // Protects mCallback variable diff --git a/usb/usb/android.hardware.usb-service-i2c11.rc b/usb/usb/android.hardware.usb-service-i2c11.rc index 76e3e60..ba3e657 100644 --- a/usb/usb/android.hardware.usb-service-i2c11.rc +++ b/usb/usb/android.hardware.usb-service-i2c11.rc @@ -1,7 +1,7 @@ service vendor.usb /vendor/bin/hw/android.hardware.usb-service class hal user system - group system shell wakelock + group system shell wakelock usb capabilities WAKE_ALARM BLOCK_SUSPEND on post-fs diff --git a/usb/usb/android.hardware.usb-service-i2c6.rc b/usb/usb/android.hardware.usb-service-i2c6.rc index 18869e2..5caed19 100644 --- a/usb/usb/android.hardware.usb-service-i2c6.rc +++ b/usb/usb/android.hardware.usb-service-i2c6.rc @@ -1,7 +1,7 @@ service vendor.usb /vendor/bin/hw/android.hardware.usb-service class hal user system - group system shell wakelock + group system shell wakelock usb capabilities WAKE_ALARM BLOCK_SUSPEND on post-fs From fd704fdcfbbefb1d4d5cf946d06a5454bb15990a Mon Sep 17 00:00:00 2001 From: Roy Luo Date: Fri, 17 Mar 2023 00:44:01 +0000 Subject: [PATCH 2/8] Support GL852G USB hub JK level tuning The JK level setting is configured to the hub via a vendor USB command whenever the hub is enabled. The shell command can be used to change the JK setting for testing purpose, but the values take effect next time the hub is enumerated. Bug: 261923350 Bug: 340665903 Test: adb shell cmd android.hardware.usb.IUsb/default hub-vendor-cmd Test: verify on user/userdebug builds the vendor command is triggered in the following scenarios. 1. boot with Kolan docked 2. undock and dock Kolan 3. kill android.hardware.usb.IUsb/default Change-Id: I8873695c42f362138d99b45ffa2ef637c357202b --- usb/usb/Usb.cpp | 163 ++++++++++++++++++++++++------------------------ usb/usb/Usb.h | 5 ++ 2 files changed, 88 insertions(+), 80 deletions(-) diff --git a/usb/usb/Usb.cpp b/usb/usb/Usb.cpp index 3944372..011c5e8 100644 --- a/usb/usb/Usb.cpp +++ b/usb/usb/Usb.cpp @@ -126,6 +126,9 @@ AltModeData::DisplayPortAltModeData constructAltModeData(string hpd, string pin_ #define GL852G_PRODUCT_ID1 0x0608 #define GL852G_PRODUCT_ID2 0x0610 #define GL852G_VENDOR_CMD_REQ 0xe3 +// GL852G port 1 and port 2 JK level default settings +#define GL852G_VENDOR_CMD_VALUE_DEFAULT 0x0008 +#define GL852G_VENDOR_CMD_INDEX_DEFAULT 0x0404 ScopedAStatus Usb::enableUsbData(const string& in_portName, bool in_enable, int64_t in_transactionId) { @@ -521,6 +524,61 @@ void updatePortStatus(android::hardware::usb::Usb *usb) { queryVersionHelper(usb, ¤tPortStatus); } +static int usbDeviceRemoved(const char *devname, void* client_data) { + return 0; +} + +static int usbDeviceAdded(const char *devname, void* client_data) { + uint16_t vendorId, productId; + struct usb_device *device; + ::aidl::android::hardware::usb::Usb *usb; + int value, index; + + device = usb_device_open(devname); + if (!device) { + ALOGE("usb_device_open failed\n"); + return 0; + } + + usb = (::aidl::android::hardware::usb::Usb *)client_data; + value = usb->mUsbHubVendorCmdValue; + index = usb->mUsbHubVendorCmdIndex; + + // The vendor cmd only applies to USB Hubs of Genesys Logic, Inc. + // The request field of vendor cmd is fixed to 0xe3. + vendorId = usb_device_get_vendor_id(device); + productId = usb_device_get_product_id(device); + if (vendorId == GL852G_VENDOR_ID && + (productId == GL852G_PRODUCT_ID1 || productId == GL852G_PRODUCT_ID2)) { + int ret = usb_device_control_transfer(device, + USB_DIR_OUT | USB_TYPE_VENDOR, GL852G_VENDOR_CMD_REQ, value, index, + NULL, 0, CTRL_TRANSFER_TIMEOUT_MSEC); + ALOGI("USB hub vendor cmd %s (wValue 0x%x, wIndex 0x%x, return %d)\n", + ret? "failed" : "succeeded", value, index, ret); + } + + usb_device_close(device); + + return 0; +} + +void *usbHostWork(void *param) { + struct usb_host_context *ctx; + + ALOGI("creating USB host thread\n"); + + ctx = usb_host_init(); + if (!ctx) { + ALOGE("usb_host_init failed\n"); + return NULL; + } + + // This will never return, it will keep monitoring USB sysfs inotify events + usb_host_run(ctx, usbDeviceAdded, usbDeviceRemoved, NULL, param); + + return NULL; +} + Usb::Usb() : mLock(PTHREAD_MUTEX_INITIALIZER), mRoleSwitchLock(PTHREAD_MUTEX_INITIALIZER), @@ -542,7 +600,9 @@ Usb::Usb() mDisplayPortPollRunning(false), mDisplayPortPollStarting(false), mDisplayPortCVLock(PTHREAD_MUTEX_INITIALIZER), - mDisplayPortLock(PTHREAD_MUTEX_INITIALIZER) { + mDisplayPortLock(PTHREAD_MUTEX_INITIALIZER), + mUsbHubVendorCmdValue(GL852G_VENDOR_CMD_VALUE_DEFAULT), + mUsbHubVendorCmdIndex(GL852G_VENDOR_CMD_INDEX_DEFAULT) { pthread_condattr_t attr; if (pthread_condattr_init(&attr)) { ALOGE("pthread_condattr_init failed: %s", strerror(errno)); @@ -579,6 +639,10 @@ Usb::Usb() ALOGE("mDisplayPortActivateTimer timerfd failed: %s", strerror(errno)); abort(); } + if (pthread_create(&mUsbHost, NULL, usbHostWork, this)) { + ALOGE("pthread creation failed %d\n", errno); + abort(); + } ALOGI("feature flag enable_usb_data_compliance_warning: %d", usb_flags::enable_usb_data_compliance_warning()); @@ -1950,82 +2014,6 @@ void Usb::shutdownDisplayPortPoll(bool force) { } } -struct hub_vendor_cmd { - // wValue filed of standard device request - int value; - // wIndex field of standard device request - int index; - // Output pipe to shell command - int out; - // Whether the hub is found - bool found; -}; - -static int usbDeviceAdded(const char *devname, void* client_data) { - struct hub_vendor_cmd *cmd = (struct hub_vendor_cmd *)client_data; - uint16_t vendorId, productId; - struct usb_device *device = usb_device_open(devname); - - if (!device) { - dprintf(cmd->out, "usb_device_open failed\n"); - return 0; - } - - // The vendor cmd only applies to USB Hubs of Genesys Logic, Inc. - // The request field of vendor cmd is fixed to 0xe3. - vendorId = usb_device_get_vendor_id(device); - productId = usb_device_get_product_id(device); - if (vendorId == GL852G_VENDOR_ID && - (productId == GL852G_PRODUCT_ID1 || productId == GL852G_PRODUCT_ID2)) { - int ret = usb_device_control_transfer( - device, USB_DIR_OUT | USB_TYPE_VENDOR, - GL852G_VENDOR_CMD_REQ, cmd->value, cmd->index, NULL, 0, - CTRL_TRANSFER_TIMEOUT_MSEC); - dprintf(cmd->out, "Vendor cmd %s (wValue %x, wIndex %x, return %d)\n", - ret? "failed" : "succeeded", cmd->value, cmd->index, ret); - // Stop iterating through usb devices once the hub is found. - cmd->found = true; - return 1; - } - - return 0; -} - -static int usbDiscoveryDone(void *client_data) -{ - struct hub_vendor_cmd *cmd = (struct hub_vendor_cmd *)client_data; - - dprintf(cmd->out, "Done USB discovery, hub %s found\n", - cmd->found ? "is" : "not"); - - return 1; -} - -static status_t sendHubVendorCmd(int out, Vector& args) { - if (args.size() < 3) { - dprintf(out, "Incorrect number of argument supplied\n"); - return ::android::UNKNOWN_ERROR; - } - struct hub_vendor_cmd cmd = { - .value = std::stoi(args[1].c_str(), NULL, 16), - .index = std::stoi(args[2].c_str(), NULL, 16), - .out = out, - .found = false - }; - - struct usb_host_context *ctx; - ctx = usb_host_init(); - if (!ctx) { - dprintf(out, "usb_host_init failed\n"); - return ::android::UNKNOWN_ERROR; - } - - usb_host_run(ctx, usbDeviceAdded, NULL, usbDiscoveryDone, &cmd); - usb_host_cleanup(ctx); - - return ::android::NO_ERROR; -} - status_t Usb::handleShellCommand(int in, int out, int err, const char** argv, uint32_t argc) { uid_t uid = AIBinder_getCallingUid(); @@ -2041,13 +2029,28 @@ status_t Usb::handleShellCommand(int in, int out, int err, const char** argv, if (argc >= 1) { if (!utf8Args[0].compare(String8("hub-vendor-cmd"))) { - return sendHubVendorCmd(out, utf8Args); + if (utf8Args.size() < 3) { + dprintf(out, "Incorrect number of argument supplied\n"); + return ::android::UNKNOWN_ERROR; + } + int value, index; + if (!::android::base::ParseInt(utf8Args[1].c_str(), &value) || + !::android::base::ParseInt(utf8Args[2].c_str(), &index)) { + dprintf(out, "Fail to parse arguments\n"); + return ::android::UNKNOWN_ERROR; + } + mUsbHubVendorCmdValue = value; + mUsbHubVendorCmdIndex = index; + ALOGI("USB hub vendor cmd update (wValue 0x%x, wIndex 0x%x)\n", + mUsbHubVendorCmdValue, mUsbHubVendorCmdIndex); + return ::android::NO_ERROR; } } dprintf(out, "usage: adb shell cmd hub-vendor-cmd VALUE INDEX\n" - " VALUE wValue field in hex format, e.g. f321\n" - " INDEX wIndex field in hex format, e.g. f321\n"); + " VALUE wValue field in hex format, e.g. 0xf321\n" + " INDEX wIndex field in hex format, e.g. 0xf321\n" + " The settings take effect next time the hub is enabled\n"); return ::android::NO_ERROR; } diff --git a/usb/usb/Usb.h b/usb/usb/Usb.h index 91eea4f..96af846 100644 --- a/usb/usb/Usb.h +++ b/usb/usb/Usb.h @@ -167,10 +167,15 @@ struct Usb : public BnUsb { */ bool mPartnerSupportsDisplayPort; + // Usb hub vendor command settings for JK level tuning + int mUsbHubVendorCmdValue; + int mUsbHubVendorCmdIndex; + private: pthread_t mPoll; pthread_t mDisplayPortPoll; pthread_t mDisplayPortShutdownHelper; + pthread_t mUsbHost; }; } // namespace usb From bddfb3dae61b947c818ac05461036c83dc2d1022 Mon Sep 17 00:00:00 2001 From: Spade Lee Date: Wed, 22 May 2024 16:16:38 +0000 Subject: [PATCH 3/8] pixelstats: Add fuel gauge abnormal event path Report abnormal events from logbuffer Bug: 333314833 Test: Events were correctly reported from each logbuffers. Change-Id: I4256bc5ef7d3d3bb073ac7ef2922f2c3ec7e7314 Signed-off-by: Spade Lee --- pixelstats/service.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pixelstats/service.cpp b/pixelstats/service.cpp index c3b8ee2..dac4a48 100644 --- a/pixelstats/service.cpp +++ b/pixelstats/service.cpp @@ -137,7 +137,10 @@ const struct UeventListener::UeventPaths ueventPaths = { .AudioUevent = "/devices/virtual/amcs/amcs", .TypeCPartnerUevent = "PRODUCT_TYPE=", .FwUpdatePath = "/sys/devices/platform/maxim,max77779fwu/update_stats", - .FGAbnlPath = "/sys/class/power_supply/max77779fg/fg_abnormal_events" + .FGAbnlPath = { + "/dev/logbuffer_max77779fg_monitor", + "/dev/logbuffer_maxfg_base_monitor", + } }; int main() { From 521ac12fefccb58fbb6a5654c0dc1520c11dedea Mon Sep 17 00:00:00 2001 From: Cyan_Hsieh Date: Fri, 24 May 2024 15:54:15 +0800 Subject: [PATCH 4/8] Switch makefile owners to MK_OWNERS Bug: 278167548 Change-Id: I8f4f0a8bdb2a3de5082f2df154265f94ca9f8fe9 --- OWNERS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OWNERS b/OWNERS index 4bdbb97..e6ce5d0 100644 --- a/OWNERS +++ b/OWNERS @@ -1,2 +1,2 @@ # per-file for Pixel device makefiles, see go/pixel-device-mk-owner-checklist for details. -per-file *.mk=file:device/google/gs-common:main:/OWNERS +per-file *.mk=file:device/google/gs-common:main:/MK_OWNERS From 9743ceeba300ab3374a93760c55ef2385bc60c4c Mon Sep 17 00:00:00 2001 From: Dmitry Skiba Date: Tue, 28 May 2024 21:52:45 +0000 Subject: [PATCH 5/8] Restrict kcompactd thread to middle/little cores. Bug: 340872453 Test: Confirmed kcompactd affinity with taskset -p Change-Id: I3312b984e98dee40d65d07096e8baf8d797d4897 Signed-off-by: Dmitry Skiba --- conf/init.zumapro.soc.rc | 1 + 1 file changed, 1 insertion(+) diff --git a/conf/init.zumapro.soc.rc b/conf/init.zumapro.soc.rc index 2c6d4d5..ad254af 100644 --- a/conf/init.zumapro.soc.rc +++ b/conf/init.zumapro.soc.rc @@ -150,6 +150,7 @@ on property:sys.boot_completed=1 # Set kswapd affinity write /sys/kernel/vendor_mm/kswapd_cpu_affinity 7f write /sys/kernel/vendor_mm/pa_kill/cpu_affinity 7f + write /sys/kernel/vendor_mm/kcompactd_cpu_affinity 7f # Restore prefer idle write /proc/vendor_sched/groups/ta/preferred_idle_mask_low 0xff From 808b4eb191047f1182ceac727bffae33a08c600c Mon Sep 17 00:00:00 2001 From: Ruofei Ma Date: Wed, 29 May 2024 20:35:48 +0000 Subject: [PATCH 6/8] Update c2.android.av1.decoder performance Bug: 340780419 Test: android.media.decoder.cts.VideoDecoderPerfTest#testPerf Change-Id: Idd2f30140fb5ebb3cfd80214ca1707097f1c0a57 Signed-off-by: Ruofei Ma --- media_codecs_performance_c2.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/media_codecs_performance_c2.xml b/media_codecs_performance_c2.xml index dea0956..8e397ed 100644 --- a/media_codecs_performance_c2.xml +++ b/media_codecs_performance_c2.xml @@ -169,7 +169,7 @@ - + From b74903d33ee1b8dbc3e09950d994aae379b5a937 Mon Sep 17 00:00:00 2001 From: jiangzining Date: Thu, 30 May 2024 14:39:15 +0800 Subject: [PATCH 7/8] [Scone] add BLUETOOTH_CONNECT to SCONE default permission MBA Approval: b/330640278 Bug: b/343608940 Test: Build and Flash Change-Id: I2aca6fbdc59e47d6e46af918d85661116b6424d8 --- default-permissions.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/default-permissions.xml b/default-permissions.xml index 8516cec..fc00a30 100644 --- a/default-permissions.xml +++ b/default-permissions.xml @@ -86,6 +86,8 @@ + + Date: Thu, 30 May 2024 00:50:59 +0000 Subject: [PATCH 8/8] Revert "Restrict kcompactd thread to middle/little cores." This reverts commit 9743ceeba300ab3374a93760c55ef2385bc60c4c. Reason for revert: avoid 24Q3 (will reland later) Bug: 340872453 Change-Id: Iee54d1b89a983ea07baa89c0fa34dbbfd0da137d --- conf/init.zumapro.soc.rc | 1 - 1 file changed, 1 deletion(-) diff --git a/conf/init.zumapro.soc.rc b/conf/init.zumapro.soc.rc index ad254af..2c6d4d5 100644 --- a/conf/init.zumapro.soc.rc +++ b/conf/init.zumapro.soc.rc @@ -150,7 +150,6 @@ on property:sys.boot_completed=1 # Set kswapd affinity write /sys/kernel/vendor_mm/kswapd_cpu_affinity 7f write /sys/kernel/vendor_mm/pa_kill/cpu_affinity 7f - write /sys/kernel/vendor_mm/kcompactd_cpu_affinity 7f # Restore prefer idle write /proc/vendor_sched/groups/ta/preferred_idle_mask_low 0xff