Linux PM QoS framework(2)_PM QoS class

本文深入探讨Linux PM QoS框架,介绍其核心概念、API接口及其实现逻辑,帮助读者理解如何管理和调整系统性能以满足不同场景的需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文转自:http://www.wowotech.net/pm_subsystem/pm_qos_class.html

Linux PM QoS framework(2)_PM QoS class

作者:wowo 发布于:2015-2-10 23:09 分类:电源管理子系统

1. 前言

回顾上一篇文章(Linux PM QoS framework(1)_概述和软件架构),PM QoS framework抽象出4个系统级别的QoS constraint(统称为PM QoS class),分别是cpu&dma latency、network latency、network throughput和memory bandwidth。并提供一系列的接口,动态的搜集、整理系统对这些constraint的需求情况。

2. API汇整

PM QoS class framework提供的API有2类:一类是以函数调用的形式,为kernel space的driver、service等提供的;另一类是以misc设备的形式,为用户空间进程提供的。

2.1 向kernel其它driver提供的,用于提出PM QoS需求的API

void pm_qos_add_request(struct pm_qos_request *req, int pm_qos_class, 
                        s32 value); 
void pm_qos_update_request(struct pm_qos_request *req, 
                           s32 new_value); 
void pm_qos_update_request_timeout(struct pm_qos_request *req, 
                                   s32 new_value, unsigned long timeout_us); 
void pm_qos_remove_request(struct pm_qos_request *req);

int pm_qos_request_active(struct pm_qos_request *req);

1)pm_qos_add_request

该接口用于向PM QoS framework添加一个QoS请求,pm_qos_class为QoS请求的类型(kernel称作pm qos class),value为期望的QoS值,不同的class有不同的含义。pm qos class的定义如下:

   1: /* include/linux/pm_qos.h */
   2: enum {
   3:         PM_QOS_RESERVED = 0,
   4:         PM_QOS_CPU_DMA_LATENCY,
   5:         PM_QOS_NETWORK_LATENCY,
   6:         PM_QOS_NETWORK_THROUGHPUT,
   7:         PM_QOS_MEMORY_BANDWIDTH,
   8:  
   9:         /* insert new class ID */
  10:         PM_QOS_NUM_CLASSES,
  11: };

PM_QOS_CPU_DMA_LATENCY,CPU和DMA的延迟(单位为us),它的实际意义是,当产生一个事件之后(如一个中断),CPU或DMA的响应延迟。例如有些CPU的串口控制器,只有几个byte的FIFO,当接收数据时,CPU或DMA必须在FIFO填满前,将数据读走,否则就可能丢失数据或者降低数据的传输速率。

后面几个class,不再详细说明。

以PM_QOS_CPU_DMA_LATENCY为例,pm_qos_add_request的逻辑可以总结为:我要求CPU&DMA的latency不大于‘value’个us

另外,为了便于对已添加请求的维护(修改、移除等),framework会将该请求保存在一个句柄中,就是第一个参数--struct pm_qos_request指针。调用者不需要知道该结构的具体内容,只要定义一个变量,并把指针传给pm_qos_add_request接口,以后使用该指针进行修改、移除等操作。

2)pm_qos_update_request/pm_qos_update_request_timeout

如果应用场景改变(如串口波特率变大,相应的响应延迟就要变小),可以通过该接口更新QoS请求。req为句柄指针,new_value为新的value。

pm_qos_update_request_timeout多了一个timeout参数,用于需要在一段时间(timeout时间)内修改QoS value的场景。framework会在timeout后,自动将QoS value修改为一个默认值(一般为无效值,代表不再对该QoS有要求)。

3)pm_qos_remove_request

如果对该pm qos class不再有要求,则可以调用该接口将请求移除。

4)pm_qos_request_active

该接口可以获取某一个QoS请求的active状态。

2.2 向kernel PM有关的service提供的,用于获取、跟踪指定PM QoS需求的API

int pm_qos_request(int pm_qos_class); 
int pm_qos_add_notifier(int pm_qos_class, struct notifier_block *notifier); 
int pm_qos_remove_notifier(int pm_qos_class, struct notifier_block *notifier); 

每当有新的QoS请求时。framework都会根据该QoS class的含义,计算出满足所有请求的一个极值(如最大值、最小值等等)。该值可以通过pm_qos_request接口获得。例如cpuidle framework在选择C state时,会通过该接口获得系统对CPU&DMA latency的需求,并保证从C state返回时的延迟小于该value。

另外,如果某个实体在意某一个class的QoS value变化,可以通过pm_qos_add_notifier接口添加一个notifier,这样当value变化时,framework便会通过notifier的回调函数,通知该实体。

同理,pm_qos_remove_notifier用于删除notifier。

2.3 向per-device PM QoS framework提供,low level的PM QoS操作API

int pm_qos_update_target(struct pm_qos_constraints *c, struct plist_node *node, 
                         enum pm_qos_req_action action, int value); 
bool pm_qos_update_flags(struct pm_qos_flags *pqf, 
                         struct pm_qos_flags_request *req, 
                         enum pm_qos_req_action action, s32 val);

s32 pm_qos_read_value(struct pm_qos_constraints *c);

QoS class和per-device PM QoS都是基于底层的pm qos constraint封装而来的。对QoS class的使用者而言,可以不用关心这些底层细节。对per-device PM QoS framework而言,则需要利用它们实现自身的功能。

这些接口就是提供给per-device PM QoS framework的low level接口,后面再详细介绍。

2.4 向用户空间process提供的,用于提出QoS需求的API

根据不同的PM QoS class,包括(cpu&dma latency、network latency等等):

/dev/cpu_dma_latency 
/dev/network_latency 
/dev/network_throughput 
/dev/memory_bandwidth 

打开文件,将会使用默认值向PM QoS framework添加一个QoS请求;关闭文件,会移除相应的请求;写入value,更改请求的值;读取文件,将会获取QoS的极值。

具体和2.1中的各个接口类似,不再详细说明了。

3. 实现思路和内部逻辑

3.1 主要数据结构

1)struct pm_qos_request,pm qos request句柄,用于request的add、update、remove等操作

   1: struct pm_qos_request {
   2:         struct plist_node node;
   3:         int pm_qos_class;
   4:         struct delayed_work work; /* for pm_qos_update_request_timeout */
   5: };

node,一个struct plist_node类型的节点,在保存request的value值(node.prio)的同时,可以将request按照一定的顺序,保存在一个全局的链表中;

pm_qos_class,该request对应的qos class,可以为PM_QOS_CPU_DMA_LATENCY、PM_QOS_NETWORK_LATENCY、PM_QOS_NETWORK_THROUGHPUT、PM_QOS_MEMORY_BANDWIDTH中的一种;

一个delay work,用于实现pm_qos_update_request_timeout接口。

struct plist_node是一个按照优先级(prio)降序排列的双向链表(Descending-priority-sorted double-linked),除了常规链表所具备的head和tail之外,有一个prio字段,刚好可以应用在PM QoS class的场景中。

2)struct pm_qos_constraints,pm qos的内部抽象,用于抽象某一特定的PM QoS class

   1: struct pm_qos_constraints {
   2:         struct plist_head list;
   3:         s32 target_value;       /* Do not change to 64 bit */
   4:         s32 default_value;
   5:         s32 no_constraint_value;
   6:         enum pm_qos_type type;
   7:         struct blocking_notifier_head *notifiers;
   8: };

list,链表头,所有该class的request,都会挂到该list上;

target_value,该constraint的目标值,即可以满足所有该class的request那个value。通常情况下,根据request的类型(enum pm_qos_type),可以是所有request中的最大值,所有request中的最小值,或者所有request的和;

default_value,该constraint的默认值,通常为0,表示没有限制(或没有要求);

no_constraint_value,当该class的qos不存在请求时,pm_qos_get_value返回的值,通常为默认值,表示没有限制(或没有要求);

type,该constraint的类型,具体请参考下面的描述;

notifiers,用于constraint value改变时通知其它driver。

enum pm_qos_type包括PM_QOS_MAX、PM_QOS_MIN和PM_QOS_SUM。PM_QOS_MAX表示在所有的request中取最大值,即可满足所有的request,如network_throughput;PM_QOS_MIN表示在所有的request中取最小值,即可满足所有的request,如cpu_dma_latency;PM_QOS_SUM表示在所有的request中取和,才能满足所有的request,如memory_bandwidth。

当调用pm_qos_get_value接口时,framework会更具qos type,从list head中,取最小值、最大值或者所有值的和。

3.2 实现逻辑

QoS class framework为每个class定义了一个全局的struct pm_qos_constraints变量,用于保存所有该class的request。同时为每个class定义一个misc device变量,用于向用户空间提供接口。最终,将这些信息组织在一个内部的数据结构中(struct pm_qos_object),如下(具体内容可参考kernel/power/qos.c,这里不再详细介绍):

   1: struct pm_qos_object {
   2:         struct pm_qos_constraints *constraints;
   3:         struct miscdevice pm_qos_power_miscdev;
   4:         char *name;
   5: };
   6:  
   7: ...
   8:  
   9: static struct pm_qos_object *pm_qos_array[] = {
  10:         &null_pm_qos,
  11:         &cpu_dma_pm_qos,
  12:         &network_lat_pm_qos,
  13:         &network_throughput_pm_qos,
  14:         &memory_bandwidth_pm_qos,
  15: };

 

1)pm_qos_add_request

request add接口会以qos class为index,从qos array中取出constraint指针(pm_qos_array[pm_qos_class]->constraints),并指针和request的value为参数,调用pm_qos_update_target接口。

pm_qos_update_target会将该request添加到constraint的list中,并根据qos type,计算处该class qos的target value。

pm_qos_update_request/pm_qos_update_request_timeout的逻辑类似,不再详细描述。

2)pm_qos_request

直接从该class对应的constraint变量中,获取target value(已经在新的request被add之后更新)。

3)misc设备注册

当kernel会在QoS class framework的初始化接口(pm_qos_power_init)中,调用misc_register,将各个class的miscdevice变量,注册到kernel中。misc设备提供了open、release、read、write等接口(pm_qos_power_fops,具体可参考源文件),用于qos的request、update和remove。

Line 18: 01-01 19:26:37.692480 1 1 E [ 14.908805]is_fastboot_adb_enabled: is_debuggable|cta|allcommode|aging test version,ingore Line 137: 01-01 19:26:38.165411 132 132 I [ 15.381736]wcd937x_codec wcd937x-codec: wcd_mbhc_start: usbc analog enabled Line 139: 01-01 19:26:38.165581 132 132 E [ 15.381906]wcd_mbhc_start: usbc_insert_pin in dt node is missing Line 462: 01-01 19:26:41.245371 902 902 I [ 18.461696]servicemanager: Caller(pid=2254,uid=0,sid=u:r:usbd:s0) Could not find android.hardware.usb.gadget.IUsbGadget/default in the VINTF manifest. No alternative instances declared in VINTF. Line 462: 01-01 19:26:41.245371 902 902 I [ 18.461696]servicemanager: Caller(pid=2254,uid=0,sid=u:r:usbd:s0) Could not find android.hardware.usb.gadget.IUsbGadget/default in the VINTF manifest. No alternative instances declared in VINTF. Line 462: 01-01 19:26:41.245371 902 902 I [ 18.461696]servicemanager: Caller(pid=2254,uid=0,sid=u:r:usbd:s0) Could not find android.hardware.usb.gadget.IUsbGadget/default in the VINTF manifest. No alternative instances declared in VINTF. Line 471: 01-01 19:26:41.384214 1 1 I [ 18.600539]: setusbconfig toadb Line 471: 01-01 19:26:41.384214 1 1 I [ 18.600539]: setusbconfig toadb Line 474: 01-01 19:26:41.397404 1705 1705 I [ 18.613729]msm-usb-hsphy 1613000.hsphy: Avail curr from USB = 2 Line 474: 01-01 19:26:41.397404 1705 1705 I [ 18.613729]msm-usb-hsphy 1613000.hsphy: Avail curr from USB = 2 Line 529: 01-01 19:26:41.659237 2423 2423 E [ 18.875562]: USB cable not connected Line 808: 01-01 19:26:45.895584 10 10 E [ 23.111909][kworke][0x22b3adb6][11:26:45.893158] wlan: [10:E:WMI] send_action_oui_cmd_tlv: Invalid action id Line 870: 01-01 19:26:51.533277 2386 2386 E [ 28.749602]: USB cable not connected Line 925: 01-01 19:26:55.678229 1 1 I [ 32.894554]init: processing action (vendor.sys.usb.adb.disabled=*) from (/system/etc/init/hw/init.usb.rc:23) Line 925: 01-01 19:26:55.678229 1 1 I [ 32.894554]init: processing action (vendor.sys.usb.adb.disabled=*) from (/system/etc/init/hw/init.usb.rc:23) Line 925: 01-01 19:26:55.678229 1 1 I [ 32.894554]init: processing action (vendor.sys.usb.adb.disabled=*) from (/system/etc/init/hw/init.usb.rc:23) Line 1076: 01-01 19:27:00.344412 3121 3121 W [ 37.560737]: stm_core(E) keyevent_handler(E) qcom_pm8008_regulator(E) ocp2130_bias(E) coresight(E) oplus_bsp_rfcablemonitor(E) oplus_secure_common(OE) oplus_security_keventupload(OE) qcom_vadc_common(E) icc_test(E) hung_task_enhance(E) oplus_mm_kevent(E) qti_battery_debug(E) oplus_bsp_fw_update(E) charger_ulog_glink(E) msm_tsens_driver(E) sps_drv(E) debugcc_sm6115(E) msm_geni_serial(E) usb_f_ccid(E) qcom_va_minidump(E) msm_lmh_dcvs(E) qpnp_lcdb_regulator(E) oplus_bsp_tp_custom(E) oplus_bsp_tp_notify(E) qcom_i2c_pmic(E) oplus_resctrl(E) ucsi_glink(E) oplus_bsp_sensor_feedback(E) init_watchdog(E) olc(E) hung_task_enh(E) pmic_glink_debug(E) oplus_exit_mm_optimize(E) bwmon(E) altmode_glink(E) oplus_bsp_mapped_protect(E) oplus_theia(E) phy_msm_qusb_v2(E) memlat(E) core_hang_detect(E) gpucc_sm6115(E) boot_stats(E) pmic_glink(E) rpm_master_stat(E) debugcc_khaje(E) dispcc_khaje(E) rq_stats(E) glink_pkt(E) cdsprm(E) oplus_bsp_dynamic_readahead(E) msm_gpi(E) cdsp_loader(E) eud(E) Line 1076: 01-01 19:27:00.344412 3121 3121 W [ 37.560737]: stm_core(E) keyevent_handler(E) qcom_pm8008_regulator(E) ocp2130_bias(E) coresight(E) oplus_bsp_rfcablemonitor(E) oplus_secure_common(OE) oplus_security_keventupload(OE) qcom_vadc_common(E) icc_test(E) hung_task_enhance(E) oplus_mm_kevent(E) qti_battery_debug(E) oplus_bsp_fw_update(E) charger_ulog_glink(E) msm_tsens_driver(E) sps_drv(E) debugcc_sm6115(E) msm_geni_serial(E) usb_f_ccid(E) qcom_va_minidump(E) msm_lmh_dcvs(E) qpnp_lcdb_regulator(E) oplus_bsp_tp_custom(E) oplus_bsp_tp_notify(E) qcom_i2c_pmic(E) oplus_resctrl(E) ucsi_glink(E) oplus_bsp_sensor_feedback(E) init_watchdog(E) olc(E) hung_task_enh(E) pmic_glink_debug(E) oplus_exit_mm_optimize(E) bwmon(E) altmode_glink(E) oplus_bsp_mapped_protect(E) oplus_theia(E) phy_msm_qusb_v2(E) memlat(E) core_hang_detect(E) gpucc_sm6115(E) boot_stats(E) pmic_glink(E) rpm_master_stat(E) debugcc_khaje(E) dispcc_khaje(E) rq_stats(E) glink_pkt(E) cdsprm(E) oplus_bsp_dynamic_readahead(E) msm_gpi(E) cdsp_loader(E) eud(E) Line 1078: 01-01 19:27:00.344518 3121 3121 W [ 37.560843]: gcc_khaje(E) oplus_bsp_task_sched(E) gcc_sm6115(E) mem_buf(E) qcom_dma_heaps(E) qseecom_dlkm(OE) oplus_kmsg_wb(E) phy_qcom_ufs_qmp_v3_660(E) phy_qcom_ufs_qrbtc_sdm845(E) phy_qcom_ufs_qmp_v4_khaje(E) qrtr(E) qcom_glink(E) qnoc_bengal(E) qcom_soc_wdt(E) ua_cpu_ioctl(E) smp2p(E) ufshcd_crypto_qti(E) usbpd(E) clk_qcom(E) crypto_qti_common(E) dcc_v2(E) device_info(E) icc_rpm(E) mem_buf_dev(E) oplus_bsp_frame_boost(E) mem_offline(E) memory_dump_v2(E) msm_poweroff(E) oplus_phoenix(E) pinctrl_bengal(E) oplus_schedinfo(E) qcom_iommu_util(E) phy_qcom_ufs(E) oplus_pmicwd(E) pinctrl_khaje(E) qcom_ipc_logging(E) qcom_logbuf_vh(E) rpm_smd_regulator(E) qcom_wdt_core(E) boot_mode(E) gdsc_regulator(E) crypto_qti_tz(E) minidump(E) oplus_bsp_sched_assist(E) oplus_project(E) oplus_mdmfeature(E) oplus_uprobe(E) pinctrl_msm(E) phoenix_reboot_speed(E) qcom_cpufreq_hw(E) qcom_spmi_pmic(E) qcom_smd(E) secure_buffer(E) socinfo(E) rpm_smd(E) qpnp_power_on(E) stub_regulator(E) Line 1079: 01-01 19:27:00.344580 3121 3121 W [ 37.560905]: buildvariant(E) bootloader_log(E) debug_regulator(E) cdt_integrity(E) iommu_logger(E) icc_debug(E) horae_shell_temp(E) kernel_fb(E) msm_dma_iommu_mapping(E) last_boot_reason(E) oplus_bsp_eas_opt(E) nvmem_qcom_spmi_sdam(E) nvmem_qfprom(E) oplus_bsp_midas(E) oplus_bsp_task_cpustats(E) oplus_bsp_mm_osvelte(E) oplus_bsp_task_load(E) oplus_storage_log(E) oplus_fdleak_check(E) oplus_power_notifier(E) oplus_omrg(E) oplus_ftm_mode(E) soc_sleep_stats(E) oplus_mdmrst(E) oplusboot(E) proxy_consumer(E) qcom_apcs_ipc_mailbox(E) smem(E) qcom_dcvs(E) qcom_cpu_vendor_hooks(E) qcom_enhance_watchdog(E) qcom_mpm(E) qcom_pmu_lib(E) qcom_scm(E) qnoc_qos_rpm(E) qrng_dlkm(OE) regmap_spmi(E) qti_regmap_debugfs(E) sdcardfs(E) shutdown_speed(E) spmi_pmic_arb(E) slimbus(E) qcom_hwspinlock(E) Line 1546: 01-01 19:27:22.292131 4918 4918 W [ 59.508456]: Modules linked in: camera(OE) machine_dlkm(OE) wcd937x_dlkm(OE) mbhc_dlkm(OE) fsa4480_i2c(E) oplus_chg_symbol(E) wlan(OE) ipa_clientsm(OE) rndisipam(OE) ipanetm(OE) oplus_chg(E) ipam(OE) rx_macro_dlkm(OE) va_macro_dlkm(OE) tx_macro_dlkm(OE) wcd9xxx_dlkm(OE) pinctrl_lpi_dlkm(OE) adsp_loader_dlkm(OE) audio_pkt_dlkm(OE) swr_ctrl_dlkm(OE) audio_prm_dlkm(OE) bolero_cdc_dlkm(OE) coresight_tmc(E) spf_core_dlkm(OE) gpr_dlkm(OE) usb_f_gsi(E) usb_f_qdss(E) q6_notifier_dlkm(OE) oplus_audio_sipa_tuning(OE) leds_qti_flash(E) oplus_bsp_tp_ft3658u_spi(E) oplus_bsp_tp_ft3419u(E) oplus_bsp_tp_td4377_noflash(E) rmnet_wlan(OE) oplus_bsp_tp_ft3518(E) wcd937x_slave_dlkm(OE) qcom_pon(E) oplus_bsp_tp_ilitek7807s(E) oplus_chg_v2(E) tcpc_rt1711h(E) tcpci_late_sync(E) nxp_nci(OE) oplus_audio_aw87xxx(OE) oplus_bsp_tp_focal_common(E) oplus_network_linkpower_module(OE) bt_fm_slim(OE) coresight_hwevent(E) coresight_tpdm(E) icnss2(OE) nq330(E) dump_reason(E) wsa881x_analog_dlkm(OE) Line 1546: 01-01 19:27:22.292131 4918 4918 W [ 59.508456]: Modules linked in: camera(OE) machine_dlkm(OE) wcd937x_dlkm(OE) mbhc_dlkm(OE) fsa4480_i2c(E) oplus_chg_symbol(E) wlan(OE) ipa_clientsm(OE) rndisipam(OE) ipanetm(OE) oplus_chg(E) ipam(OE) rx_macro_dlkm(OE) va_macro_dlkm(OE) tx_macro_dlkm(OE) wcd9xxx_dlkm(OE) pinctrl_lpi_dlkm(OE) adsp_loader_dlkm(OE) audio_pkt_dlkm(OE) swr_ctrl_dlkm(OE) audio_prm_dlkm(OE) bolero_cdc_dlkm(OE) coresight_tmc(E) spf_core_dlkm(OE) gpr_dlkm(OE) usb_f_gsi(E) usb_f_qdss(E) q6_notifier_dlkm(OE) oplus_audio_sipa_tuning(OE) leds_qti_flash(E) oplus_bsp_tp_ft3658u_spi(E) oplus_bsp_tp_ft3419u(E) oplus_bsp_tp_td4377_noflash(E) rmnet_wlan(OE) oplus_bsp_tp_ft3518(E) wcd937x_slave_dlkm(OE) qcom_pon(E) oplus_bsp_tp_ilitek7807s(E) oplus_chg_v2(E) tcpc_rt1711h(E) tcpci_late_sync(E) nxp_nci(OE) oplus_audio_aw87xxx(OE) oplus_bsp_tp_focal_common(E) oplus_network_linkpower_module(OE) bt_fm_slim(OE) coresight_hwevent(E) coresight_tpdm(E) icnss2(OE) nq330(E) dump_reason(E) wsa881x_analog_dlkm(OE) Line 1548: 01-01 19:27:22.292323 4918 4918 W [ 59.508648]: oplus_networks_tuning(OE) pm8941_pwrkey(E) coresight_remote_etm(E) leds_aw2023(E) qti_qmi_sensor(E) usb_f_diag(E) rt_regmap(E) bcl_soc(E) cpu_hotplug(E) cnss_prealloc(OE) qcom_spmi_temp_alarm(E) oplus_security_guard(OE) qcom_spmi_adc_tm5(E) reboot_mode(E) regulator_cdev(E) i2c_msm_geni(E) qcom_iommu_debug(E) oplus_bsp_tp_ilitek_common(E) qrtr_smd(E) thermal_pause(E) ehset(E) msm_mmrm(OE) leds_qpnp_vibrator_ldo(E) ufcs_class(E) cpufreq_ondemand(E) game_opt(OE) coresight_tgu(E) oplus_data_module(OE) stm_console(E) oplus_audio_pa_manager(OE) qcom_pil_info(E) phy_msm_ssusb_qmp(E) msm_sharedmem(E) oplus_stability_helper(OE) phy_msm_qusb(E) iolimit(E) pmic_monitor(E) spi_msm_geni(E) qcom_spmi_adc5(E) oplus_bsp_memleak_detect(OE) ipa_fmwk(E) msm_qmp(E) oplus_bsp_ir_core(E) qfprom_sys(E) cx_ipeak(E) oplus_bsp_dfr_ubt(E) guestvm_loader(E) qcom_cpufreq_hw_debug(E) rpm_smd_debug(E) leds_qpnp_flash_v2(E) tz_log_dlkm(OE) oplus_game_first(OE) shutdown_detect(E) Line 1548: 01-01 19:27:22.292323 4918 4918 W [ 59.508648]: oplus_networks_tuning(OE) pm8941_pwrkey(E) coresight_remote_etm(E) leds_aw2023(E) qti_qmi_sensor(E) usb_f_diag(E) rt_regmap(E) bcl_soc(E) cpu_hotplug(E) cnss_prealloc(OE) qcom_spmi_temp_alarm(E) oplus_security_guard(OE) qcom_spmi_adc_tm5(E) reboot_mode(E) regulator_cdev(E) i2c_msm_geni(E) qcom_iommu_debug(E) oplus_bsp_tp_ilitek_common(E) qrtr_smd(E) thermal_pause(E) ehset(E) msm_mmrm(OE) leds_qpnp_vibrator_ldo(E) ufcs_class(E) cpufreq_ondemand(E) game_opt(OE) coresight_tgu(E) oplus_data_module(OE) stm_console(E) oplus_audio_pa_manager(OE) qcom_pil_info(E) phy_msm_ssusb_qmp(E) msm_sharedmem(E) oplus_stability_helper(OE) phy_msm_qusb(E) iolimit(E) pmic_monitor(E) spi_msm_geni(E) qcom_spmi_adc5(E) oplus_bsp_memleak_detect(OE) ipa_fmwk(E) msm_qmp(E) oplus_bsp_ir_core(E) qfprom_sys(E) cx_ipeak(E) oplus_bsp_dfr_ubt(E) guestvm_loader(E) qcom_cpufreq_hw_debug(E) rpm_smd_debug(E) leds_qpnp_flash_v2(E) tz_log_dlkm(OE) oplus_game_first(OE) shutdown_detect(E) Line 1548: 01-01 19:27:22.292323 4918 4918 W [ 59.508648]: oplus_networks_tuning(OE) pm8941_pwrkey(E) coresight_remote_etm(E) leds_aw2023(E) qti_qmi_sensor(E) usb_f_diag(E) rt_regmap(E) bcl_soc(E) cpu_hotplug(E) cnss_prealloc(OE) qcom_spmi_temp_alarm(E) oplus_security_guard(OE) qcom_spmi_adc_tm5(E) reboot_mode(E) regulator_cdev(E) i2c_msm_geni(E) qcom_iommu_debug(E) oplus_bsp_tp_ilitek_common(E) qrtr_smd(E) thermal_pause(E) ehset(E) msm_mmrm(OE) leds_qpnp_vibrator_ldo(E) ufcs_class(E) cpufreq_ondemand(E) game_opt(OE) coresight_tgu(E) oplus_data_module(OE) stm_console(E) oplus_audio_pa_manager(OE) qcom_pil_info(E) phy_msm_ssusb_qmp(E) msm_sharedmem(E) oplus_stability_helper(OE) phy_msm_qusb(E) iolimit(E) pmic_monitor(E) spi_msm_geni(E) qcom_spmi_adc5(E) oplus_bsp_memleak_detect(OE) ipa_fmwk(E) msm_qmp(E) oplus_bsp_ir_core(E) qfprom_sys(E) cx_ipeak(E) oplus_bsp_dfr_ubt(E) guestvm_loader(E) qcom_cpufreq_hw_debug(E) rpm_smd_debug(E) leds_qpnp_flash_v2(E) tz_log_dlkm(OE) oplus_game_first(OE) shutdown_detect(E) Line 1549: 01-01 19:27:22.292414 4918 4918 W [ 59.508739]: qti_qmi_cdev(E) rpm_smd_cooling_device(E) rtc_pm8xxx(E) uff_fp_driver(E) bcl_pmic5(E) oplus_nfc(E) oplus_bsp_tp_comon(E) oplus_wifismartantenna(OE) qcom_sysmon(E) oplus_camera_wl2868c(E) oplus_stats_calc(OE) msm_performance(E) usb_f_cdev(E) dump_device_info(E) aw_breath_algorithm(E) frpc_adsprpc(E) qcom_lpm(E) phy_msm_snps_hs(E) f_fs_ipc_log(E) phy_qcom_emu(E) oplus_io_monitor(E) oplus_score(OE) coresight_stm(E) coresight_replicator(E) wcd_core_dlkm(OE) test_kit(E) refgen(E) qti_devfreq_cdev(E) wl2866d_regulator(E) oplus_sensor(E) q6_dlkm(OE) aw37004_regulator(E) fan53870(E) lmh_cpu_vdd_cdev(E) oplus_mm_kevent_fb(E) snd_usb_audio_qmi(E) cnss_utils(OE) q6_pdr_dlkm(OE) sg(E) oplus_freeze_process(OE) rdbg(E) oplus_binder_strategy(E) oplus_app_monitor(OE) snd_event_dlkm(OE) oplus_secure_harden(OE) oplus_qr_scan(OE) dispcc_sm6115(E) qcom_ramdump(E) qpnp_pdphy(E) pd_dbg_info(E) usb_bam(E) stm_p_basic(E) ordump(E) cfg80211(E) phy_generic(E) combkey_monitor(E) Line 1549: 01-01 19:27:22.292414 4918 4918 W [ 59.508739]: qti_qmi_cdev(E) rpm_smd_cooling_device(E) rtc_pm8xxx(E) uff_fp_driver(E) bcl_pmic5(E) oplus_nfc(E) oplus_bsp_tp_comon(E) oplus_wifismartantenna(OE) qcom_sysmon(E) oplus_camera_wl2868c(E) oplus_stats_calc(OE) msm_performance(E) usb_f_cdev(E) dump_device_info(E) aw_breath_algorithm(E) frpc_adsprpc(E) qcom_lpm(E) phy_msm_snps_hs(E) f_fs_ipc_log(E) phy_qcom_emu(E) oplus_io_monitor(E) oplus_score(OE) coresight_stm(E) coresight_replicator(E) wcd_core_dlkm(OE) test_kit(E) refgen(E) qti_devfreq_cdev(E) wl2866d_regulator(E) oplus_sensor(E) q6_dlkm(OE) aw37004_regulator(E) fan53870(E) lmh_cpu_vdd_cdev(E) oplus_mm_kevent_fb(E) snd_usb_audio_qmi(E) cnss_utils(OE) q6_pdr_dlkm(OE) sg(E) oplus_freeze_process(OE) rdbg(E) oplus_binder_strategy(E) oplus_app_monitor(OE) snd_event_dlkm(OE) oplus_secure_harden(OE) oplus_qr_scan(OE) dispcc_sm6115(E) qcom_ramdump(E) qpnp_pdphy(E) pd_dbg_info(E) usb_bam(E) stm_p_basic(E) ordump(E) cfg80211(E) phy_generic(E) combkey_monitor(E) Line 1549: 01-01 19:27:22.292414 4918 4918 W [ 59.508739]: qti_qmi_cdev(E) rpm_smd_cooling_device(E) rtc_pm8xxx(E) uff_fp_driver(E) bcl_pmic5(E) oplus_nfc(E) oplus_bsp_tp_comon(E) oplus_wifismartantenna(OE) qcom_sysmon(E) oplus_camera_wl2868c(E) oplus_stats_calc(OE) msm_performance(E) usb_f_cdev(E) dump_device_info(E) aw_breath_algorithm(E) frpc_adsprpc(E) qcom_lpm(E) phy_msm_snps_hs(E) f_fs_ipc_log(E) phy_qcom_emu(E) oplus_io_monitor(E) oplus_score(OE) coresight_stm(E) coresight_replicator(E) wcd_core_dlkm(OE) test_kit(E) refgen(E) qti_devfreq_cdev(E) wl2866d_regulator(E) oplus_sensor(E) q6_dlkm(OE) aw37004_regulator(E) fan53870(E) lmh_cpu_vdd_cdev(E) oplus_mm_kevent_fb(E) snd_usb_audio_qmi(E) cnss_utils(OE) q6_pdr_dlkm(OE) sg(E) oplus_freeze_process(OE) rdbg(E) oplus_binder_strategy(E) oplus_app_monitor(OE) snd_event_dlkm(OE) oplus_secure_harden(OE) oplus_qr_scan(OE) dispcc_sm6115(E) qcom_ramdump(E) qpnp_pdphy(E) pd_dbg_info(E) usb_bam(E) stm_p_basic(E) ordump(E) cfg80211(E) phy_generic(E) combkey_monitor(E) Line 1550: 01-01 19:27:22.292523 4918 4918 W [ 59.508848]: stm_core(E) keyevent_handler(E) qcom_pm8008_regulator(E) ocp2130_bias(E) coresight(E) oplus_bsp_rfcablemonitor(E) oplus_secure_common(OE) oplus_security_keventupload(OE) qcom_vadc_common(E) icc_test(E) hung_task_enhance(E) oplus_mm_kevent(E) qti_battery_debug(E) oplus_bsp_fw_update(E) charger_ulog_glink(E) msm_tsens_driver(E) sps_drv(E) debugcc_sm6115(E) msm_geni_serial(E) usb_f_ccid(E) qcom_va_minidump(E) msm_lmh_dcvs(E) qpnp_lcdb_regulator(E) oplus_bsp_tp_custom(E) oplus_bsp_tp_notify(E) qcom_i2c_pmic(E) oplus_resctrl(E) ucsi_glink(E) oplus_bsp_sensor_feedback(E) init_watchdog(E) olc(E) hung_task_enh(E) pmic_glink_debug(E) oplus_exit_mm_optimize(E) bwmon(E) altmode_glink(E) oplus_bsp_mapped_protect(E) oplus_theia(E) phy_msm_qusb_v2(E) memlat(E) core_hang_detect(E) gpucc_sm6115(E) boot_stats(E) pmic_glink(E) rpm_master_stat(E) debugcc_khaje(E) dispcc_khaje(E) rq_stats(E) glink_pkt(E) cdsprm(E) oplus_bsp_dynamic_readahead(E) msm_gpi(E) cdsp_loader(E) eud(E) Line 1550: 01-01 19:27:22.292523 4918 4918 W [ 59.508848]: stm_core(E) keyevent_handler(E) qcom_pm8008_regulator(E) ocp2130_bias(E) coresight(E) oplus_bsp_rfcablemonitor(E) oplus_secure_common(OE) oplus_security_keventupload(OE) qcom_vadc_common(E) icc_test(E) hung_task_enhance(E) oplus_mm_kevent(E) qti_battery_debug(E) oplus_bsp_fw_update(E) charger_ulog_glink(E) msm_tsens_driver(E) sps_drv(E) debugcc_sm6115(E) msm_geni_serial(E) usb_f_ccid(E) qcom_va_minidump(E) msm_lmh_dcvs(E) qpnp_lcdb_regulator(E) oplus_bsp_tp_custom(E) oplus_bsp_tp_notify(E) qcom_i2c_pmic(E) oplus_resctrl(E) ucsi_glink(E) oplus_bsp_sensor_feedback(E) init_watchdog(E) olc(E) hung_task_enh(E) pmic_glink_debug(E) oplus_exit_mm_optimize(E) bwmon(E) altmode_glink(E) oplus_bsp_mapped_protect(E) oplus_theia(E) phy_msm_qusb_v2(E) memlat(E) core_hang_detect(E) gpucc_sm6115(E) boot_stats(E) pmic_glink(E) rpm_master_stat(E) debugcc_khaje(E) dispcc_khaje(E) rq_stats(E) glink_pkt(E) cdsprm(E) oplus_bsp_dynamic_readahead(E) msm_gpi(E) cdsp_loader(E) eud(E) Line 1552: 01-01 19:27:22.292697 4918 4918 W [ 59.509022]: gcc_khaje(E) oplus_bsp_task_sched(E) gcc_sm6115(E) mem_buf(E) qcom_dma_heaps(E) qseecom_dlkm(OE) oplus_kmsg_wb(E) phy_qcom_ufs_qmp_v3_660(E) phy_qcom_ufs_qrbtc_sdm845(E) phy_qcom_ufs_qmp_v4_khaje(E) qrtr(E) qcom_glink(E) qnoc_bengal(E) qcom_soc_wdt(E) ua_cpu_ioctl(E) smp2p(E) ufshcd_crypto_qti(E) usbpd(E) clk_qcom(E) crypto_qti_common(E) dcc_v2(E) device_info(E) icc_rpm(E) mem_buf_dev(E) oplus_bsp_frame_boost(E) mem_offline(E) memory_dump_v2(E) msm_poweroff(E) oplus_phoenix(E) pinctrl_bengal(E) oplus_schedinfo(E) qcom_iommu_util(E) phy_qcom_ufs(E) oplus_pmicwd(E) pinctrl_khaje(E) qcom_ipc_logging(E) qcom_logbuf_vh(E) rpm_smd_regulator(E) qcom_wdt_core(E) boot_mode(E) gdsc_regulator(E) crypto_qti_tz(E) minidump(E) oplus_bsp_sched_assist(E) oplus_project(E) oplus_mdmfeature(E) oplus_uprobe(E) pinctrl_msm(E) phoenix_reboot_speed(E) qcom_cpufreq_hw(E) qcom_spmi_pmic(E) qcom_smd(E) secure_buffer(E) socinfo(E) rpm_smd(E) qpnp_power_on(E) stub_regulator(E) 这个是对应时间的kernel日志
最新发布
08-13
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值