diff options
Diffstat (limited to 'board/fleex')
-rw-r--r-- | board/fleex/analyzestack.yaml | 278 |
1 files changed, 278 insertions, 0 deletions
diff --git a/board/fleex/analyzestack.yaml b/board/fleex/analyzestack.yaml new file mode 100644 index 0000000000..c0095c34f8 --- /dev/null +++ b/board/fleex/analyzestack.yaml @@ -0,0 +1,278 @@ +# Size of extra stack frame needed by exception context switch. +# See core/cortex-m/switch.S +exception_frame_size: 224 +# Missing calls +add: + # TCPC stack + tcpm_set_cc[driver/tcpm/tcpm.h:139]: + - tcpci_tcpm_set_cc + tcpm_set_rx_enable[driver/tcpm/tcpm.h:160]: + - tcpci_tcpm_set_rx_enable + tcpm_set_snk_ctrl[driver/tcpm/tcpm.h:179]: + - tcpci_tcpm_set_snk_ctrl + tcpm_get_cc[driver/tcpm/tcpm.h:124]: + - tcpci_tcpm_get_cc + enter_low_power_mode[driver/usb_mux.c:42]: + - tcpci_enter_low_power_mode + svdm_exit_dp_mode[baseboard/octopus/usb_pd_policy.c:346]: + - anx7447_tcpc_update_hpd_status + - ps8xxx_tcpc_update_hpd_status + tcpm_set_src_ctrl[driver/tcpm/tcpm.h:187]: + - tcpci_tcpm_set_src_ctrl + tcpm_init[driver/tcpm/tcpm.h:106]: + - anx7447_init + - tcpci_tcpm_init + tcpm_get_vbus_level[driver/tcpm/tcpm.h:129]: + - anx7447_tcpm_get_vbus_level + - tcpci_tcpm_get_vbus_level + baseboard_tcpc_init[baseboard/octopus/baseboard.c:212]: + - anx7447_tcpc_update_hpd_status + - ps8xxx_tcpc_update_hpd_status + tcpm_get_chip_info[driver/tcpm/tcpm.h:240]: + - tcpci_get_chip_info + - ps8xxx_get_chip_info + tcpm_transmit[driver/tcpm/tcpm.h:172]: + - tcpci_tcpm_transmit + - ps8xxx_tcpm_transmit + tcpc_alert[driver/tcpm/tcpm.h:195]: + - anx7447_tcpc_alert + - tcpci_tcpc_alert + tcpm_set_msg_header[driver/tcpm/tcpm.h:154]: + - tcpci_tcpm_set_msg_header + tcpm_set_vconn[driver/tcpm/tcpm.h:149]: + - tcpci_tcpm_set_vconn + tcpm_select_rp_value[driver/tcpm/tcpm.h:134]: + - tcpci_tcpm_select_rp_value + tcpm_enqueue_message[driver/tcpm/tcpci.c:404]: + - tcpci_tcpm_get_message_raw + svdm_dp_post_config[baseboard/octopus/usb_pd_policy.c:320]: + - anx7447_tcpc_update_hpd_status + - ps8xxx_tcpc_update_hpd_status + svdm_dp_attention[baseboard/octopus/usb_pd_policy.c:335]: + - anx7447_tcpc_update_hpd_status + - ps8xxx_tcpc_update_hpd_status + tcpm_release[driver/tcpm/tcpm.h:119]: + - anx7447_release + - ps8xxx_tcpm_release + tcpm_set_polarity[driver/tcpm/tcpm.h:144]: + - tcpci_tcpm_set_polarity + tcpm_enable_drp_toggle[driver/tcpm/tcpm.h:211]: + - tcpci_tcpc_drp_toggle + tcpm_enter_low_power_mode[driver/tcpm/tcpm.h:218]: + - tcpci_enter_low_power_mode + # USB mux + usb_mux_flip[driver/usb_mux.c:163]: + - anx7447_mux_get + - tcpci_tcpm_mux_get + usb_mux_flip[driver/usb_mux.c:174]: + - anx7447_mux_set + - tcpci_tcpm_mux_set + usb_mux_set[driver/usb_mux.c:112]: + - anx7447_mux_set + - tcpci_tcpm_mux_set + usb_mux_init[driver/usb_mux.c:64]: + - anx7447_mux_init + - tcpci_tcpm_mux_init + usb_mux_get[driver/usb_mux.c:140]: + - anx7447_mux_get + - tcpci_tcpm_mux_get + hc_usb_pd_mux_info[driver/usb_mux.c:240]: + - anx7447_mux_get + - tcpci_tcpm_mux_get + # PPC + ppc_is_sourcing_vbus[common/usbc_ppc.c:42]: + - nx20p348x_is_sourcing_vbus + ppc_init[common/usbc_ppc.c:26]: + - nx20p348x_init + ppc_vbus_sink_enable[common/usbc_ppc.c:86]: + - nx20p348x_vbus_sink_enable + ppc_discharge_vbus[common/usbc_ppc.c:68]: + - nx20p348x_discharge_vbus + ppc_vbus_source_enable[common/usbc_ppc.c:107]: + - nx20p348x_vbus_source_enable + ppc_set_vbus_source_current_limit[common/usbc_ppc.c:60]: + - nx20p348x_set_vbus_source_current_limit + command_ppc_dump[common/usbc_ppc.c:135]: + - nx20p348x_dump + # Motion sensors + command_accelrange[common/motion_sense.c:1513]: + - set_range[driver/accel_lis2dh.c] + - set_range[driver/accelgyro_lsm6dsm.c] + command_accelrange[common/motion_sense.c:1519]: + - get_range[driver/accel_lis2dh.c] + - get_range[driver/accelgyro_lsm6dsm.c] + motion_sensor_time_to_read[common/motion_sense.c:213]: + - st_get_data_rate[driver/stm_mems_common.c] + motion_sense_read[common/motion_sense.c:694]: + - st_get_data_rate[driver/stm_mems_common.c] + motion_sense_read[common/motion_sense.c:707]: + - read[driver/accel_lis2dh.c] + - read[driver/accelgyro_lsm6dsm.c] + motion_sense_process[common/motion_sense.c:719]: + - irq_handler[driver/accelgyro_lsm6dsm.c] + sensor_init_done[common/motion_sense.c:468]: + - set_range[driver/accel_lis2dh.c] + - set_range[driver/accelgyro_lsm6dsm.c] + sensor_init_done[common/motion_sense.c:471]: + - get_range[driver/accel_lis2dh.c] + - get_range[driver/accelgyro_lsm6dsm.c] + motion_sense_set_ec_rate_from_ap[common/motion_sense.c:305]: + - st_get_data_rate[driver/stm_mems_common.c] + host_cmd_motion_sense[common/motion_sense.c:1242]: + - set_range[driver/accel_lis2dh.c] + - set_range[driver/accelgyro_lsm6dsm.c] + host_cmd_motion_sense[common/motion_sense.c:1253]: + - get_range[driver/accel_lis2dh.c] + - get_range[driver/accelgyro_lsm6dsm.c] + host_cmd_motion_sense[common/motion_sense.c:1268]: + - st_set_offset[driver/stm_mems_common.c] + host_cmd_motion_sense[common/motion_sense.c:1303]: + - None + host_cmd_motion_sense[common/motion_sense.c:1306]: + - st_get_offset[driver/stm_mems_common.c] + motion_sense_init[common/motion_sense.c:447]: + - init[driver/accel_lis2dh.c] + - init[driver/accelgyro_lsm6dsm.c] + motion_sense_set_data_rate[common/motion_sense.c:267]: + - set_data_rate[driver/accel_lis2dh.c] + - set_data_rate[driver/accelgyro_lsm6dsm.c] + motion_sense_set_data_rate[common/motion_sense.c:287]: + - st_get_data_rate[driver/stm_mems_common.c] + motion_sense_set_motion_intervals[common/motion_sense.c:411]: + - st_get_data_rate[driver/stm_mems_common.c] + calculate_lid_angle[common/motion_lid.c:385]: + - get_range[driver/accelgyro_lsm6dsm.c] + calculate_lid_angle[common/motion_lid.c:386]: + - get_range[driver/accel_lis2dh.c] + motion_sense_set_data_rate[common/motion_sense.c:286]: + - st_get_data_rate[driver/stm_mems_common.c] + command_accel_read_xyz[common/motion_sense.c:1657]: + - read[driver/accel_lis2dh.c] + - read[driver/accelgyro_lsm6dsm.c] + host_cmd_motion_sense[common/motion_sense.c:1294]: + - None + host_cmd_motion_sense[common/motion_sense.c:1297]: + - st_get_offset[driver/stm_mems_common.c] + command_accelresolution[common/motion_sense.c:1562]: + - None + command_accelresolution[common/motion_sense.c:1566]: + - st_get_resolution[driver/stm_mems_common.c] + command_accelrange[common/motion_sense.c:1518]: + - get_range[driver/accel_lis2dh.c] + - get_range[driver/accelgyro_lsm6dsm.c] + st_normalize[driver/stm_mems_common.c:137]: + - get_range[driver/accel_lis2dh.c] + - get_range[driver/accelgyro_lsm6dsm.c] + command_accel_data_rate[common/motion_sense.c:1621]: + - st_get_data_rate[driver/stm_mems_common.c] + # Misc. + host_send_response[common/host_command.c:153]: + - host_packet_respond + pd_dfp_enter_mode[common/usb_pd_policy.c:465]: + - svdm_enter_dp_mode[baseboard/octopus/usb_pd_policy.c] + - svdm_enter_gfu_mode[baseboard/octopus/usb_pd_policy.c] + pd_svdm[common/usb_pd_policy.c:773]: + - svdm_dp_status[baseboard/octopus/usb_pd_policy.c] + - svdm_gfu_status[baseboard/octopus/usb_pd_policy.c] + pd_svdm[common/usb_pd_policy.c:784]: + - svdm_dp_config[baseboard/octopus/usb_pd_policy.c] + - svdm_gfu_config[baseboard/octopus/usb_pd_policy.c] + pd_svdm[common/usb_pd_policy.c:790]: + - svdm_dp_post_config[baseboard/octopus/usb_pd_policy.c] + dfp_consume_attention[common/usb_pd_policy.c:503]: + - svdm_dp_attention[baseboard/octopus/usb_pd_policy.c] + - svdm_gfu_attention[baseboard/octopus/usb_pd_policy.c] + kblight_set_deferred[common/keyboard_backlight.c:35]: + - kblight_pwm_set + temp_sensor_read[common/temp_sensor.c:26]: + - charge_get_battery_temp + - get_temp_3v3_51k1_47k_4050b + - get_temp_3v3_13k7_47k_4050b + kblight_enable[common/keyboard_backlight.c:61]: + - kblight_pwm_enable + host_packet_respond[common/host_command.c:240]: + - lpc_send_response + kblight_init[common/keyboard_backlight.c:28]: + - kblight_pwm_init + vfnprintf[common/printf.c:75]: + - __tx_char + vfnprintf[common/printf.c:88]: + - __tx_char + vfnprintf[common/printf.c:96]: + - __tx_char + vfnprintf[common/printf.c:171]: + - __tx_char + vfnprintf[common/printf.c:172]: + - __tx_char + vfnprintf[common/printf.c:310]: + - __tx_char + vfnprintf[common/printf.c:315]: + - __tx_char + vfnprintf[common/printf.c:318]: + - __tx_char + pd_dfp_exit_mode[common/usb_pd_policy.c:569]: + - svdm_exit_dp_mode[baseboard/octopus/usb_pd_policy.c] + - svdm_exit_gfu_mode[baseboard/octopus/usb_pd_policy.c] + pd_dfp_exit_mode[common/usb_pd_policy.c:586]: + - svdm_exit_dp_mode[baseboard/octopus/usb_pd_policy.c] + - svdm_exit_gfu_mode[baseboard/octopus/usb_pd_policy.c] + # Indirect callsites in common structures - likely common for all boards + handle_command[common/console.c:248]: + - { name: __cmds, stride: 16, offset: 4 } + host_command_process[common/host_command.c:704]: + - { name: __hcmds, stride: 12, offset: 0 } + mkbp_get_next_event[common/mkbp_event.c:160]: + - { name: __mkbp_evt_srcs, stride: 8, offset: 4 } + hook_task[common/hooks.c:199]: + - { name: __deferred_funcs, stride: 4, offset: 0 } + # Note: This assumes worse case, where all hook functions can be called from + # any hook_notify call + # Generate using `grep hooks_.*_end build/$BOARD/R*/ec.R*.smap | + # sed -e 's/.*\(__hooks.*\)_end/ - { name: \1, stride: 8, offset: 0 }/' | + # sort -u` + hook_notify[common/hooks.c:129]: + - { name: __hooks_ac_change, stride: 8, offset: 0 } + - { name: __hooks_base_attached_change, stride: 8, offset: 0 } + - { name: __hooks_battery_soc_change, stride: 8, offset: 0 } + - { name: __hooks_chipset_pre_init, stride: 8, offset: 0 } + - { name: __hooks_chipset_reset, stride: 8, offset: 0 } + - { name: __hooks_chipset_resume, stride: 8, offset: 0 } + - { name: __hooks_chipset_shutdown, stride: 8, offset: 0 } + - { name: __hooks_chipset_startup, stride: 8, offset: 0 } + - { name: __hooks_chipset_suspend, stride: 8, offset: 0 } + - { name: __hooks_freq_change, stride: 8, offset: 0 } + - { name: __hooks_init, stride: 8, offset: 0 } + - { name: __hooks_lid_change, stride: 8, offset: 0 } + - { name: __hooks_pre_freq_change, stride: 8, offset: 0 } + - { name: __hooks_pwrbtn_change, stride: 8, offset: 0 } + - { name: __hooks_second, stride: 8, offset: 0 } + - { name: __hooks_sysjump, stride: 8, offset: 0 } + - { name: __hooks_tablet_mode_change, stride: 8, offset: 0 } + - { name: __hooks_tick, stride: 8, offset: 0 } + - { name: __hooks_usb_pd_disconnect, stride: 8, offset: 0 } + # NULL function pointers + i2c_command_passthru[common/i2c_master.c:678]: + - None + pd_svdm[common/usb_pd_policy.c:720]: + - None + usb_mux_init[driver/usb_mux.c:75]: + - None +remove: +# Remove panic callsites. Once panicking, we no longer care about stack usage +- panic_assert_fail +# Remove reset_device_and_notify for all non-PD analysis since it can only be called from PD task IDs. Comment this out for the PD tasks +- reset_device_and_notify +# Remove the LPM path because the PD_FLAGS_LPM_TRANSITION flag presents this loop +- [ reset_device_and_notify, tcpci_tcpm_init, [ tcpc_read, tcpc_write16 ], pd_wait_for_wakeup ] +# Remove nonesense hook paths that come from the general hook_notify above (Note: these are not a comprehensive list, but a list of +# paths that came up as longest during analysis +# These functions do not call HOOK_INIT +- [ [ s0ix_transition, charger_task, power_button_change_deferred, jump_to_image, tablet_set_mode, pd_set_suspend, set_state, extpower_deferred, lid_switch_open, lid_switch_close, espi_chipset_reset, lpc_chipset_reset ], hook_notify, [ usb_charger_init, baseboard_tcpc_init, motion_sense_startup, hall_sensor_init, powerbtn_x86_init, cbi_init ] ] +# These functions do not call HOOK_CHIPSET_SHUTDOWN +- [ [ s0ix_transition, charger_task, power_button_change_deferred, jump_to_image, tablet_set_mode, pd_set_suspend, set_state, extpower_deferred, lid_switch_open, lid_switch_close, hook_task, espi_chipset_reset, lpc_chipset_reset ], hook_notify, [ system_common_shutdown, motion_sense_shutdown, board_disable_a1_redriver ] ] +# These functions do not call HOOK_LID_CHANGE +- [ [ s0ix_transition, charger_task, power_button_change_deferred, jump_to_image, tablet_set_mode, pd_set_suspend, set_state, extpower_deferred, hook_task, espi_chipset_reset, lpc_chipset_reset ], hook_notify, powerbtn_x86_lid_change ] +# These functions do not call HOOK_BATTERY_SOC_CHANGE +- [ [ s0ix_transition, power_button_change_deferred, jump_to_image, tablet_set_mode, pd_set_suspend, set_state, extpower_deferred, lid_switch_open, lid_switch_close, hook_task, espi_chipset_reset, lpc_chipset_reset ], hook_notify, power_up_inhibited_cb ] +# These functions do not call HOOK_CHIPSET_STARTUP +- [ [ charger_task, power_button_change_deferred, jump_to_image, tablet_set_mode, pd_set_suspend, set_state, extpower_deferred, lid_switch_open, lid_switch_close, hook_task, espi_chipset_reset, lpc_chipset_reset ], hook_notify, board_enable_a1_redriver ] |