From 997787e3f7cf2d233d3df2b591407b498a1b8e90 Mon Sep 17 00:00:00 2001 From: Kris Chen Date: Fri, 4 Mar 2022 18:47:36 +0800 Subject: [PATCH 1/5] Set owner for mfg_data partiton. Bug: 197780765 Test: UDFPS HAL can access mfg_data Change-Id: Ib68fd0ff2f7717000b918c580e459309e088cde2 --- conf/ueventd.gs201.rc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/conf/ueventd.gs201.rc b/conf/ueventd.gs201.rc index b894ea32..b9a9f7c6 100644 --- a/conf/ueventd.gs201.rc +++ b/conf/ueventd.gs201.rc @@ -171,6 +171,9 @@ # Storage: for factory reset protection feature /dev/block/by-name/frp 0660 system system +# Storage: for UDFPS calibration data sideload feature +/dev/block/by-name/mfg_data 0660 system system + # TPU /dev/janeiro 0660 system system From 06a6fc040158bfe8e22975b19533e3c6211ed4b1 Mon Sep 17 00:00:00 2001 From: Jinting Lin Date: Mon, 7 Mar 2022 02:40:45 +0000 Subject: [PATCH 2/5] Increase the default log file size and number Bug: 223071809 Change-Id: I355648b8a83ebaea00d6144dfa29ef252b849ca4 --- radio/config/logging.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/radio/config/logging.conf b/radio/config/logging.conf index d57c82aa..deb09dbe 100644 --- a/radio/config/logging.conf +++ b/radio/config/logging.conf @@ -1 +1 @@ -modem_logging_control START -o /data/vendor/radio/logs/always-on -n 10 -s 20 -m /vendor/etc/modem/default.cfg --enable_exmetric --enable_exmetric_internal \ No newline at end of file +modem_logging_control START -o /data/vendor/radio/logs/always-on -n 20 -s 50 -m /vendor/etc/modem/default.cfg --enable_exmetric --enable_exmetric_internal From b30924e3599f2e92aeae498a6ae15d3b9a397930 Mon Sep 17 00:00:00 2001 From: Ray Chi Date: Thu, 3 Mar 2022 14:46:20 +0800 Subject: [PATCH 3/5] usb: move the permission change to usb rc Since permission change in hal rc may be late, gadget hal would enable USB function failed. The solution will change the permission before USB gadget hal starts. Bug: 206902205 Test: build pass and verified pass Change-Id: I45c1318f647220480fa03ba3b813a81b21393d71 --- conf/init.gs201.usb.rc | 77 ++++++++++++++++++ .../android.hardware.usb.gadget-service.rc | 78 ------------------- 2 files changed, 77 insertions(+), 78 deletions(-) diff --git a/conf/init.gs201.usb.rc b/conf/init.gs201.usb.rc index c784c54c..87245709 100644 --- a/conf/init.gs201.usb.rc +++ b/conf/init.gs201.usb.rc @@ -71,6 +71,83 @@ on early-boot # acm function for uwb mkdir /config/usb_gadget/g1/functions/acm.uwb0 + # chown file/folder permission + chown system system /config/usb_gadget/ + chown system system /config/usb_gadget/g1 + chown system system /config/usb_gadget/g1/UDC + chown system system /config/usb_gadget/g1/bDeviceClass + chown system system /config/usb_gadget/g1/bDeviceProtocol + chown system system /config/usb_gadget/g1/bDeviceSubClass + chown system system /config/usb_gadget/g1/bMaxPacketSize0 + chown system system /config/usb_gadget/g1/bcdDevice + chown system system /config/usb_gadget/g1/bcdUSB + chown system system /config/usb_gadget/g1/configs + chown system system /config/usb_gadget/g1/configs/b.1 + chown system system /config/usb_gadget/g1/configs/b.1/MaxPower + chown system system /config/usb_gadget/g1/configs/b.1/bmAttributes + chown system system /config/usb_gadget/g1/configs/b.1/strings + chown system system /config/usb_gadget/g1/functions + chown system system /config/usb_gadget/g1/functions/accessory.gs2 + chown system system /config/usb_gadget/g1/functions/acm.gs6 + chown system system /config/usb_gadget/g1/functions/acm.gs6/port_num + chown system system /config/usb_gadget/g1/functions/acm.uwb0 + chown system system /config/usb_gadget/g1/functions/acm.uwb0/port_num + chown system system /config/usb_gadget/g1/functions/audio_source.gs3 + chown system system /config/usb_gadget/g1/functions/dm.gs7 + chown system system /config/usb_gadget/g1/functions/ffs.adb + chown system system /config/usb_gadget/g1/functions/ffs.mtp + chown system system /config/usb_gadget/g1/functions/ffs.ptp + chown system system /config/usb_gadget/g1/functions/midi.gs5 + chown system system /config/usb_gadget/g1/functions/midi.gs5/buflen + chown system system /config/usb_gadget/g1/functions/midi.gs5/id + chown system system /config/usb_gadget/g1/functions/midi.gs5/in_ports + chown system system /config/usb_gadget/g1/functions/midi.gs5/index + chown system system /config/usb_gadget/g1/functions/midi.gs5/out_ports + chown system system /config/usb_gadget/g1/functions/midi.gs5/qlen + chown system system /config/usb_gadget/g1/functions/mtp.gs0 + chown system system /config/usb_gadget/g1/functions/mtp.gs0/os_desc + chown system system /config/usb_gadget/g1/functions/mtp.gs0/os_desc/interface.MTP + chown system system /config/usb_gadget/g1/functions/mtp.gs0/os_desc/interface.MTP/compatible_id + chown system system /config/usb_gadget/g1/functions/mtp.gs0/os_desc/interface.MTP/sub_compatible_id + chown system system /config/usb_gadget/g1/functions/ncm.gs9 + chown system system /config/usb_gadget/g1/functions/ncm.gs9/dev_addr + chown system system /config/usb_gadget/g1/functions/ncm.gs9/host_addr + chown system system /config/usb_gadget/g1/functions/ncm.gs9/ifname + chown system system /config/usb_gadget/g1/functions/ncm.gs9/os_desc + chown system system /config/usb_gadget/g1/functions/ncm.gs9/os_desc/interface.ncm + chown system system /config/usb_gadget/g1/functions/ncm.gs9/os_desc/interface.ncm/compatible_id + chown system system /config/usb_gadget/g1/functions/ncm.gs9/os_desc/interface.ncm/sub_compatible_id + chown system system /config/usb_gadget/g1/functions/ncm.gs9/qmult + chown system system /config/usb_gadget/g1/functions/ptp.gs1 + chown system system /config/usb_gadget/g1/functions/ptp.gs1/os_desc + chown system system /config/usb_gadget/g1/functions/ptp.gs1/os_desc/interface.MTP + chown system system /config/usb_gadget/g1/functions/ptp.gs1/os_desc/interface.MTP/compatible_id + chown system system /config/usb_gadget/g1/functions/ptp.gs1/os_desc/interface.MTP/sub_compatible_id + chown system system /config/usb_gadget/g1/functions/rndis.gs4 + chown system system /config/usb_gadget/g1/functions/rndis.gs4/class + chown system system /config/usb_gadget/g1/functions/rndis.gs4/dev_addr + chown system system /config/usb_gadget/g1/functions/rndis.gs4/host_addr + chown system system /config/usb_gadget/g1/functions/rndis.gs4/ifname + chown system system /config/usb_gadget/g1/functions/rndis.gs4/os_desc + chown system system /config/usb_gadget/g1/functions/rndis.gs4/os_desc/interface.rndis + chown system system /config/usb_gadget/g1/functions/rndis.gs4/os_desc/interface.rndis/compatible_id + chown system system /config/usb_gadget/g1/functions/rndis.gs4/os_desc/interface.rndis/sub_compatible_id + chown system system /config/usb_gadget/g1/functions/rndis.gs4/protocol + chown system system /config/usb_gadget/g1/functions/rndis.gs4/qmult + chown system system /config/usb_gadget/g1/functions/rndis.gs4/subclass + chown system system /config/usb_gadget/g1/idProduct + chown system system /config/usb_gadget/g1/idVendor + chown system system /config/usb_gadget/g1/max_speed + chown system system /config/usb_gadget/g1/os_desc + chown system system /config/usb_gadget/g1/os_desc/b.1 + chown system system /config/usb_gadget/g1/os_desc/b_vendor_code + chown system system /config/usb_gadget/g1/os_desc/qw_sign + chown system system /config/usb_gadget/g1/os_desc/use + chown system system /config/usb_gadget/g1/strings + chown system system /config/usb_gadget/g1/strings/0x409 + chown system system /config/usb_gadget/g1/strings/0x409/manufacturer + chown system system /config/usb_gadget/g1/strings/0x409/product + chown system system /config/usb_gadget/g1/strings/0x409/serialnumber setprop vendor.usb.functions.ready 1 on boot diff --git a/usb/gadget/android.hardware.usb.gadget-service.rc b/usb/gadget/android.hardware.usb.gadget-service.rc index 49979d90..e3c3b0db 100644 --- a/usb/gadget/android.hardware.usb.gadget-service.rc +++ b/usb/gadget/android.hardware.usb.gadget-service.rc @@ -17,81 +17,3 @@ on post-fs chmod 664 /sys/devices/platform/11210000.usb/dwc3_exynos_otg_b_sess chmod 664 /sys/devices/platform/11210000.usb/dwc3_exynos_otg_id chmod 664 /sys/devices/platform/11210000.usb/usb_data_enabled - -on property:vendor.usb.functions.ready=1 - chown system system /config/usb_gadget/ - chown system system /config/usb_gadget/g1 - chown system system /config/usb_gadget/g1/UDC - chown system system /config/usb_gadget/g1/bDeviceClass - chown system system /config/usb_gadget/g1/bDeviceProtocol - chown system system /config/usb_gadget/g1/bDeviceSubClass - chown system system /config/usb_gadget/g1/bMaxPacketSize0 - chown system system /config/usb_gadget/g1/bcdDevice - chown system system /config/usb_gadget/g1/bcdUSB - chown system system /config/usb_gadget/g1/configs - chown system system /config/usb_gadget/g1/configs/b.1 - chown system system /config/usb_gadget/g1/configs/b.1/MaxPower - chown system system /config/usb_gadget/g1/configs/b.1/bmAttributes - chown system system /config/usb_gadget/g1/configs/b.1/strings - chown system system /config/usb_gadget/g1/functions - chown system system /config/usb_gadget/g1/functions/accessory.gs2 - chown system system /config/usb_gadget/g1/functions/acm.gs6 - chown system system /config/usb_gadget/g1/functions/acm.gs6/port_num - chown system system /config/usb_gadget/g1/functions/acm.uwb0 - chown system system /config/usb_gadget/g1/functions/acm.uwb0/port_num - chown system system /config/usb_gadget/g1/functions/audio_source.gs3 - chown system system /config/usb_gadget/g1/functions/dm.gs7 - chown system system /config/usb_gadget/g1/functions/ffs.adb - chown system system /config/usb_gadget/g1/functions/ffs.mtp - chown system system /config/usb_gadget/g1/functions/ffs.ptp - chown system system /config/usb_gadget/g1/functions/midi.gs5 - chown system system /config/usb_gadget/g1/functions/midi.gs5/buflen - chown system system /config/usb_gadget/g1/functions/midi.gs5/id - chown system system /config/usb_gadget/g1/functions/midi.gs5/in_ports - chown system system /config/usb_gadget/g1/functions/midi.gs5/index - chown system system /config/usb_gadget/g1/functions/midi.gs5/out_ports - chown system system /config/usb_gadget/g1/functions/midi.gs5/qlen - chown system system /config/usb_gadget/g1/functions/mtp.gs0 - chown system system /config/usb_gadget/g1/functions/mtp.gs0/os_desc - chown system system /config/usb_gadget/g1/functions/mtp.gs0/os_desc/interface.MTP - chown system system /config/usb_gadget/g1/functions/mtp.gs0/os_desc/interface.MTP/compatible_id - chown system system /config/usb_gadget/g1/functions/mtp.gs0/os_desc/interface.MTP/sub_compatible_id - chown system system /config/usb_gadget/g1/functions/ncm.gs9 - chown system system /config/usb_gadget/g1/functions/ncm.gs9/dev_addr - chown system system /config/usb_gadget/g1/functions/ncm.gs9/host_addr - chown system system /config/usb_gadget/g1/functions/ncm.gs9/ifname - chown system system /config/usb_gadget/g1/functions/ncm.gs9/os_desc - chown system system /config/usb_gadget/g1/functions/ncm.gs9/os_desc/interface.ncm - chown system system /config/usb_gadget/g1/functions/ncm.gs9/os_desc/interface.ncm/compatible_id - chown system system /config/usb_gadget/g1/functions/ncm.gs9/os_desc/interface.ncm/sub_compatible_id - chown system system /config/usb_gadget/g1/functions/ncm.gs9/qmult - chown system system /config/usb_gadget/g1/functions/ptp.gs1 - chown system system /config/usb_gadget/g1/functions/ptp.gs1/os_desc - chown system system /config/usb_gadget/g1/functions/ptp.gs1/os_desc/interface.MTP - chown system system /config/usb_gadget/g1/functions/ptp.gs1/os_desc/interface.MTP/compatible_id - chown system system /config/usb_gadget/g1/functions/ptp.gs1/os_desc/interface.MTP/sub_compatible_id - chown system system /config/usb_gadget/g1/functions/rndis.gs4 - chown system system /config/usb_gadget/g1/functions/rndis.gs4/class - chown system system /config/usb_gadget/g1/functions/rndis.gs4/dev_addr - chown system system /config/usb_gadget/g1/functions/rndis.gs4/host_addr - chown system system /config/usb_gadget/g1/functions/rndis.gs4/ifname - chown system system /config/usb_gadget/g1/functions/rndis.gs4/os_desc - chown system system /config/usb_gadget/g1/functions/rndis.gs4/os_desc/interface.rndis - chown system system /config/usb_gadget/g1/functions/rndis.gs4/os_desc/interface.rndis/compatible_id - chown system system /config/usb_gadget/g1/functions/rndis.gs4/os_desc/interface.rndis/sub_compatible_id - chown system system /config/usb_gadget/g1/functions/rndis.gs4/protocol - chown system system /config/usb_gadget/g1/functions/rndis.gs4/qmult - chown system system /config/usb_gadget/g1/functions/rndis.gs4/subclass - chown system system /config/usb_gadget/g1/idProduct - chown system system /config/usb_gadget/g1/idVendor - chown system system /config/usb_gadget/g1/max_speed - chown system system /config/usb_gadget/g1/os_desc - chown system system /config/usb_gadget/g1/os_desc/b.1 - chown system system /config/usb_gadget/g1/os_desc/b_vendor_code - chown system system /config/usb_gadget/g1/os_desc/qw_sign - chown system system /config/usb_gadget/g1/os_desc/use - chown system system /config/usb_gadget/g1/strings - chown system system /config/usb_gadget/g1/strings/0x409 - chown system system /config/usb_gadget/g1/strings/0x409/manufacturer - chown system system /config/usb_gadget/g1/strings/0x409/product - chown system system /config/usb_gadget/g1/strings/0x409/serialnumber From f363704a92fd7611cf01c8b3bcaf6e8913255207 Mon Sep 17 00:00:00 2001 From: Ray Chi Date: Tue, 1 Mar 2022 21:57:03 +0800 Subject: [PATCH 4/5] tune usb irq (dwc3) in usb gadget hal Since affinity permission is changed from root to system, original permission change by script can't be used. Therefore, this patch will move the functionality to usb gadget hal. Bug: 220996010 Test: dwc3 irq could be located in medium/big cores after USB function switch Change-Id: Id993db9fc303e85a9a6337a0e41b1dfd6fc9a86a --- usb/gadget/UsbGadget.cpp | 58 +++++++++++++++++++++++++++++++++++++--- usb/gadget/UsbGadget.h | 10 +++++++ 2 files changed, 65 insertions(+), 3 deletions(-) diff --git a/usb/gadget/UsbGadget.cpp b/usb/gadget/UsbGadget.cpp index 23e56597..9fdf2acc 100644 --- a/usb/gadget/UsbGadget.cpp +++ b/usb/gadget/UsbGadget.cpp @@ -33,13 +33,55 @@ namespace gadget { namespace V1_2 { namespace implementation { -UsbGadget::UsbGadget() { +UsbGadget::UsbGadget() : mGadgetIrqPath("") { if (access(OS_DESC_PATH, R_OK) != 0) { ALOGE("configfs setup not done yet"); abort(); } } +V1_0::Status UsbGadget::getUsbGadgetIrqPath() { + std::string irqs; + size_t read_pos = 0; + size_t found_pos = 0; + + if (!ReadFileToString(kProcInterruptsPath, &irqs)) { + ALOGE("cannot read all interrupts"); + return Status::ERROR; + } + + while (true) { + found_pos = irqs.find_first_of("\n", read_pos); + if (found_pos == std::string::npos) { + ALOGI("the string of all interrupts is unexpected"); + return Status::ERROR; + } + + std::string single_irq = irqs.substr(read_pos, found_pos - read_pos); + + if (single_irq.find("dwc3", 0) != std::string::npos) { + unsigned int dwc3_irq_number; + size_t dwc3_pos = single_irq.find_first_of(":"); + if (!ParseUint(single_irq.substr(0, dwc3_pos), &dwc3_irq_number)) { + ALOGI("unknown IRQ strings"); + return Status::ERROR; + } + + mGadgetIrqPath = kProcIrqPath + single_irq.substr(0, dwc3_pos) + kSmpAffinityList; + break; + } + + if (found_pos == irqs.npos) { + ALOGI("USB gadget doesn't start"); + return Status::ERROR; + } + + read_pos = found_pos + 1; + } + + return Status::SUCCESS; +} + void currentFunctionsAppliedCallback(bool functionsApplied, void *payload) { UsbGadget *gadget = (UsbGadget *)payload; gadget->mCurrentUsbFunctionsApplied = functionsApplied; @@ -359,6 +401,10 @@ Return UsbGadget::setCurrentUsbFunctions(uint64_t functions, mCurrentUsbFunctions = functions; mCurrentUsbFunctionsApplied = false; + // Get the gadget IRQ number before tearDownGadget() + if (mGadgetIrqPath.empty()) + getUsbGadgetIrqPath(); + // Unlink the gadget and stop the monitor if running. V1_0::Status status = tearDownGadget(); if (status != Status::SUCCESS) { @@ -391,9 +437,15 @@ Return UsbGadget::setCurrentUsbFunctions(uint64_t functions, } if (functions & GadgetFunction::NCM) { - SetProperty("vendor.usb.dwc3_irq", "big"); + if (!mGadgetIrqPath.empty()) { + if (!WriteStringToFile(BIG_CORE, mGadgetIrqPath)) + ALOGI("Cannot move gadget IRQ to big core, path:%s", mGadgetIrqPath.c_str()); + } } else { - SetProperty("vendor.usb.dwc3_irq", "medium"); + if (!mGadgetIrqPath.empty()) { + if (!WriteStringToFile(MEDIUM_CORE, mGadgetIrqPath)) + ALOGI("Cannot move gadget IRQ to medium core, path:%s", mGadgetIrqPath.c_str()); + } } ALOGI("Usb Gadget setcurrent functions called successfully"); diff --git a/usb/gadget/UsbGadget.h b/usb/gadget/UsbGadget.h index 0e5a0062..782fb021 100644 --- a/usb/gadget/UsbGadget.h +++ b/usb/gadget/UsbGadget.h @@ -19,6 +19,7 @@ #include #include #include +#include #include #include #include @@ -44,6 +45,7 @@ namespace implementation { using ::android::sp; using ::android::base::GetProperty; using ::android::base::SetProperty; +using ::android::base::ParseUint; using ::android::base::unique_fd; using ::android::base::ReadFileToString; using ::android::base::Trim; @@ -71,6 +73,9 @@ using ::android::hardware::usb::gadget::V1_2::GadgetFunction; using ::std::string; constexpr char kGadgetName[] = "11210000.dwc3"; +constexpr char kProcInterruptsPath[] = "/proc/interrupts"; +constexpr char kProcIrqPath[] = "/proc/irq/"; +constexpr char kSmpAffinityList[] = "/smp_affinity_list"; #ifndef UDC_PATH #define UDC_PATH "/sys/class/udc/11210000.dwc3/" #endif @@ -78,11 +83,15 @@ static MonitorFfs monitorFfs(kGadgetName); #define SPEED_PATH UDC_PATH "current_speed" +#define BIG_CORE "6" +#define MEDIUM_CORE "4" + struct UsbGadget : public IUsbGadget { UsbGadget(); // Makes sure that only one request is processed at a time. std::mutex mLockSetCurrentFunction; + std::string mGadgetIrqPath; uint64_t mCurrentUsbFunctions; bool mCurrentUsbFunctionsApplied; UsbSpeed mUsbSpeed; @@ -99,6 +108,7 @@ struct UsbGadget : public IUsbGadget { private: Status tearDownGadget(); + Status getUsbGadgetIrqPath(); Status setupFunctions(uint64_t functions, const sp &callback, uint64_t timeout); }; From c3c15e25b3a1a6909d78337d5ae23346952ee7c8 Mon Sep 17 00:00:00 2001 From: Ramji Jiyani Date: Mon, 7 Mar 2022 17:58:16 +0000 Subject: [PATCH 5/5] system_dlkm: remove ext4 flag barrier=1 for erofs barrier=1 is ext4 flag and should not be present for erofs mount. This is wrong on the `master` due to manual merge conflict resolution and correct on the `tm-dev`. Bug: 223071475 Test: TH Signed-off-by: Ramji Jiyani Change-Id: If220e4f2334ba71dd9134067bc05c3f7f130e688 --- conf/fstab.gs201.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/fstab.gs201.in b/conf/fstab.gs201.in index 2fe2161f..353d17dd 100644 --- a/conf/fstab.gs201.in +++ b/conf/fstab.gs201.in @@ -7,7 +7,7 @@ system /system erofs ro wait,slotselect,avb=vbmeta_system,logical,first_stage_mount,readahead_size_kb=128 # During compliance testing, the previous line would fail (because GSI is ext4), and the next line would be used to mount GSI. system /system ext4 ro,barrier=1 wait,slotselect,avb=vbmeta_system,logical,first_stage_mount,readahead_size_kb=128 -system_dlkm /system_dlkm erofs ro,barrier=1 wait,slotselect,avb=vbmeta_system,logical,first_stage_mount,readahead_size_kb=128 +system_dlkm /system_dlkm erofs ro wait,slotselect,avb=vbmeta_system,logical,first_stage_mount,readahead_size_kb=128 system_ext /system_ext erofs ro wait,slotselect,avb=vbmeta_system,logical,first_stage_mount,readahead_size_kb=128 product /product erofs ro wait,slotselect,avb=vbmeta_system,logical,first_stage_mount,readahead_size_kb=128 vendor /vendor erofs ro wait,slotselect,avb=vbmeta_vendor,logical,first_stage_mount,readahead_size_kb=128