diff options
author | Eric Yilun Lin <yllin@chromium.org> | 2020-11-11 13:57:08 +0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-11-12 03:16:43 +0000 |
commit | 2f1da8fe2f1ef9a2daf8e02dcf9650c2e37a37b2 (patch) | |
tree | d26ab047b07db954cf53d763e213858c0e3aeecd | |
parent | 48dfb28451d7ecf756a02261ce69fa001ddcc848 (diff) | |
download | chrome-ec-2f1da8fe2f1ef9a2daf8e02dcf9650c2e37a37b2.tar.gz |
kukui: enlarge task stacks
This CL adds analyzstack.yaml and ensure the stack
is enoguh for all the tasks.
Also, correct excpetion_frame_size from 224 to 64 and this reduces
the stack usage.
BUG=b:172182593
TEST=No stack overflow in the test:
cat <<"EOF" | bash
#!/bin/bash
BRDS=$(grep -r BASEBOARD:=kukui $(find . -name "build.mk") |
awk -F'/' '{print $3}')
BRDS+=" krane juniper"
echo $BRDS
for BRD in ${BRDS}; do
echo Analyzing ${BRD}
make BOARD=${BRD} -j 2>&1 > /dev/null &&
make BOARD=${BRD} analyzestack -j |
grep Task |
awk -F'[ :,]' '{if ($8>$NF)
printf " %-15s %-5s (used) > %-5s (allocated)\n", $3, $8, $NF}'
done
EOF
BRANCH=kukui
Change-Id: Ie30ac827df66ea4786598c7b74b1ab4fe1922a08
Signed-off-by: Eric Yilun Lin <yllin@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2530818
-rw-r--r-- | board/burnet/analyzestack.yaml | 246 | ||||
-rw-r--r-- | board/burnet/ec.tasklist | 8 | ||||
-rw-r--r-- | board/cerise/analyzestack.yaml | 246 | ||||
-rw-r--r-- | board/cerise/ec.tasklist | 8 | ||||
-rw-r--r-- | board/damu/analyzestack.yaml | 246 | ||||
-rw-r--r-- | board/damu/ec.tasklist | 8 | ||||
-rw-r--r-- | board/fennel/analyzestack.yaml | 246 | ||||
-rw-r--r-- | board/fennel/ec.tasklist | 8 | ||||
-rw-r--r-- | board/jacuzzi/analyzestack.yaml | 244 | ||||
-rw-r--r-- | board/jacuzzi/ec.tasklist | 8 | ||||
-rw-r--r-- | board/kakadu/analyzestack.yaml | 268 | ||||
-rw-r--r-- | board/kakadu/ec.tasklist | 4 | ||||
-rw-r--r-- | board/kappa/analyzestack.yaml | 244 | ||||
-rw-r--r-- | board/kappa/ec.tasklist | 10 | ||||
-rw-r--r-- | board/kodama/analyzestack.yaml | 285 | ||||
-rw-r--r-- | board/kodama/ec.tasklist | 10 | ||||
-rw-r--r-- | board/kukui/analyzestack.yaml | 10 | ||||
-rw-r--r-- | board/kukui/ec.tasklist | 2 | ||||
-rw-r--r-- | board/stern/analyzestack.yaml | 246 | ||||
-rw-r--r-- | board/stern/ec.tasklist | 8 | ||||
-rw-r--r-- | board/willow/analyzestack.yaml | 246 | ||||
-rw-r--r-- | board/willow/ec.tasklist | 8 |
22 files changed, 2567 insertions, 42 deletions
diff --git a/board/burnet/analyzestack.yaml b/board/burnet/analyzestack.yaml new file mode 100644 index 0000000000..76f8f523f2 --- /dev/null +++ b/board/burnet/analyzestack.yaml @@ -0,0 +1,246 @@ +# Check cortex-m/switch.S +exception_frame_size: 64 +add: +# TCPC functions, see fusb302_tcpm_drv struct. + tcpm_init[driver/tcpm/tcpm.h:121]: + - fusb302_tcpm_init + tcpm_release[driver/tcpm/tcpm.h:134]: + - fusb302_tcpm_release, + tcpm_select_rp_value[driver/tcpm/tcpm.h:150]: + - fusb302_tcpm_select_rp_value + tcpm_set_msg_header[driver/tcpm/tcpm.h:170]: + - fusb302_tcpm_set_msg_header + tcpm_enter_low_power_mode[driver/tcpm/tcpm.h:234]: + - fusb302_tcpm_enter_low_power_mode + tcpm_transmit[driver/tcpm/tcpm.h:188]: + - fusb302_tcpm_transmit + tcpm_get_cc[driver/tcpm/tcpm.h:140]: + - fusb302_tcpm_get_cc + tcpm_set_rx_enable[driver/tcpm/tcpm.h:176]: + - fusb302_tcpm_set_rx_enable + tcpm_set_vconn[driver/tcpm/tcpm.h:165]: + - fusb302_tcpm_set_vconn + tcpm_set_polarity[driver/tcpm/tcpm.h:160]: + - fusb302_tcpm_set_polarity + tcpm_set_cc[driver/tcpm/tcpm.h:155]: + - fusb302_tcpm_set_cc + tcpm_get_vbus_level[driver/tcpm/tcpm.h:145]: + - fusb302_tcpm_get_vbus_level + tcpm_enqueue_message[driver/tcpm/tcpci.c:468]: + - fusb302_tcpm_get_message_raw +# USB mux, see it5205_usb_mux_driver + usb_mux_flip[driver/usb_mux/usb_mux.c:164]: #get + - it5205_set_mux + usb_mux_flip[driver/usb_mux/usb_mux.c:175]: #set + - it5205_get_mux + usb_mux_init[driver/usb_mux/usb_mux.c:65]: #init + - it5205_init + usb_mux_init[driver/usb_mux/usb_mux.c:76]: # board_init + - None + enter_low_power_mode[driver/usb_mux/usb_mux.c:43]: + - it5205_enter_low_power_mode + usb_mux_set[driver/usb_mux/usb_mux.c:113]: + - it5205_set_mux + hc_usb_pd_mux_info[driver/usb_mux/usb_mux.c:241]: + - it5205_get_mux + usb_mux_get[driver/usb_mux/usb_mux.c:141]: + - it5205_get_mux +# usb_mux hpd_update + svdm_dp_post_config[baseboard/kukui/usb_pd_policy.c:200]: + - board_hpd_status + svdm_exit_dp_mode[baseboard/kukui/usb_pd_policy.c:263]: + - board_hpd_status + svdm_dp_attention[baseboard/kukui/usb_pd_policy.c:219]: + - board_hpd_status +# USB PD policy, see struct svdm_amode_fx + pd_svdm[common/usb_pd_policy.c:766]: + - svdm_dp_status + - svdm_gfu_status + pd_svdm[common/usb_pd_policy.c:777]: + - svdm_dp_config + - svdm_gfu_config + pd_svdm[common/usb_pd_policy.c:783]: + - svdm_dp_post_config + pd_dfp_enter_mode[common/usb_pd_policy.c:440]: + - svdm_enter_dp_mode + - svdm_enter_gfu_mode + pd_dfp_exit_mode[common/usb_pd_policy.c:544]: + - svdm_exit_dp_mode + - svdm_exit_gfu_mode + dfp_consume_attention[common/usb_pd_policy.c:478]: + - svdm_dp_attention + - svdm_gfu_attention + pd_dfp_exit_mode[common/usb_pd_policy.c:561]: + - svdm_exit_dp_mode + - svdm_exit_gfu_mode +# Motion sense: bmi160 + motion_sense_set_data_rate[common/motion_sense.c:156]: # set_data_rate + - set_data_rate[driver/accelgyro_bmi160.c] + motion_sense_set_data_rate[common/motion_sense.c:175]: # get_data_rate + - get_data_rate[driver/accelgyro_bmi160.c] + motion_sense_set_data_rate[common/motion_sense.c:184]: # get_data_rate + - get_data_rate[driver/accelgyro_bmi160.c] + motion_sense_set_motion_intervals[common/motion_sense.c:302]: # get_data_rate + - get_data_rate[driver/accelgyro_bmi160.c] + motion_sense_set_ec_rate_from_ap[common/motion_sense.c:196]: # get_data_rate + - get_data_rate[driver/accelgyro_bmi160.c] + motion_sense_init[common/motion_sense.c:327]: # init + - init[driver/accelgyro_bmi160.c] + sensor_init_done[common/motion_sense.c:353]: # get_range + - get_range[driver/accelgyro_bmi160.c] + motion_sense_shutdown[common/motion_sense.c:431]: # list_activities + - list_activities[driver/accelgyro_bmi160.c] + motion_sense_shutdown[common/motion_sense.c:437]: # manage_activity + - manage_activity[driver/accelgyro_bmi160.c] + motion_sense_shutdown[common/motion_sense.c:440]: # manage_activity + - manage_activity[driver/accelgyro_bmi160.c] + motion_sense_read[common/motion_sense.c:589]: # read + - read[driver/accelgyro_bmi160.c] + motion_sense_read[common/motion_sense.c:576]: # get_data_rate + - get_data_rate[driver/accelgyro_bmi160.c] + motion_sense_process[common/motion_sense.c:667]: # irq_handler + - irq_handler[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1153]: # set_range + - set_range[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1164]: # get_range + - get_range[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1179]: # set_offset + - set_offset[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1207]: # set_scale + - set_scale[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1233]: # perform_calib + - perform_calib[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1237]: # get_offset + - get_offset[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1313]: # list_activities + - list_activities[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1333]: # list_activities + - list_activities[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1337]: # manage_activity + - manage_activity[driver/accelgyro_bmi160.c] + command_accelrange[common/motion_sense.c:1455]: # set_range + - set_range[driver/accelgyro_bmi160.c] + command_accelrange[common/motion_sense.c:1460]: # get_range + - get_range[driver/accelgyro_bmi160.c] + command_accelresolution[common/motion_sense.c:1504]: # set_resolution + - None + command_accelresolution[common/motion_sense.c:1508]: # get_resolution + - get_resolution[driver/accelgyro_bmi160.c] + command_accel_data_rate[common/motion_sense.c:1560]: # get_data_rate + - get_data_rate[driver/accelgyro_bmi160.c] + command_accel_read_xyz[common/motion_sense.c:1595]: # read + - read[driver/accelgyro_bmi160.c] + +# Core + handle_command[common/console.c:248]: + - { name: __cmds, stride: 16, offset: 4 } + hook_task[common/hooks.c:200]: + - { name: __deferred_funcs, stride: 4, offset: 0 } + - { name: __hooks_second, stride: 8, offset: 0 } + - { name: __hooks_tick, stride: 8, 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/kukui/R*/ec.R*.smap | + # sed -e 's/.*\(__hooks.*\)_end/ - { name: \1, stride: 8, offset: 0 }/' | + # sort -u` + hook_notify[common/hooks.c:130]: + - { 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_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_sysjump, stride: 8, offset: 0 } + - { name: __hooks_tablet_mode_change, stride: 8, offset: 0 } + - { name: __hooks_usb_pd_connect, stride: 8, offset: 0 } + - { name: __hooks_usb_pd_disconnect, stride: 8, offset: 0 } + mkbp_get_next_event[common/mkbp_event.c:369]: + - { name: __mkbp_evt_srcs, stride: 8, offset: 4 } + host_command_process[common/host_command.c:708]: + - { name: __hcmds, stride: 12, offset: 0 } + vfnprintf: + # This covers all the addchar in vfnprintf, but stackanalyzer does not + # realize that... + - __tx_char + host_send_response[common/host_command.c:153]: # send_response + - spi_send_response + host_packet_respond[common/host_command.c:240]: + - spi_send_response_packet +# Misc + i2c_command_passthru[common/i2c_master.c:991]: + - None + cprints[common/console_output.c:108]: + - None # I'm not sure what this is?! + chip_i2c_xfer_with_notify[common/i2c_master.c:112]: # i2c_port->drv->xfer + - i2c_bitbang_xfer + default_handler[core/cortex-m0/init.S:100]: + - exception_panic + gpio_interrupt[chip/stm32/gpio.c:154]: + - None + +remove: +# Remove all callsites pointing to panic_assert_fail. +- panic_assert_fail + +# Remove paths that make no sense +# HOOK_USB_PD_DISCONNECT +- [ pd_request_power_swap, set_state.lto_priv.206, hook_notify, + [ motion_sense_shutdown, charger_enable_psys, charger_disable_psys, + system_common_shutdown ] ] +# HOOK_AC_CHANGE/HOOK_BATTERY_SOC_CHANGE +- [ charger_task, hook_notify, + [ motion_sense_shutdown, system_common_shutdown ] ] +# HOOK_LID_CHANGE +- [ [ lid_switch_open, lid_switch_close ], hook_notify, + [ motion_sense_shutdown, system_common_shutdown ] ] +# HOOK_BASE_ATTACHED_CHANGE/HOOK_TABLET_MODE_CHANGE +- [ tablet_set_mode, hook_notify, [ system_common_shutdown, charger_enable_psys, charger_disable_psys ] ] +# HOOK_POWER_BUTTON_CHANGE +- [ power_button_change_deferred, hook_notify, + [ motion_sense_shutdown, system_common_shutdown ] ] +# HOOK_SECOND +- [ hook_task, hook_notify, [ motion_sense_shutdown, system_common_shutdown ] ] +# HOOK_SYSJUMP +- [ jump_to_image, hook_notify, + [ motion_sense_shutdown, system_common_shutdown, charger_enable_psys, charger_disable_psys ] ] +- [ pd_request_power_swap, set_state, hook_notify, panic_init ] +# set_state(port, PD_STATE_SRC/SNK_SWAP_INIT); will not call these functions +- [ pd_request_power_swap, set_state, + [ pd_dfp_exit_mode, usb_mux_set, pd_power_supply_reset, tcpm_set_vconn ] ] +- [ [ pd_request_data_swap, pd_request_vconn_swap ] , set_state, pd_power_supply_reset ] +# All sensors will be shut down in S5 +- [ motion_sense_shutdown, motion_sense_switch_sensor_rate, + [ motion_sense_set_data_rate, motion_sense_init ] ] +# HOOK_CHIPSET_PRE_INIT, HOOK_CHIPSET_STARTUP, HOOK_CHIPSET_RESUME, +# HOOK_CHIPSET_SUSPEND, HOOK_CHIPSET_SHUTDOWN +- [ chipset_task, hook_notify ] +# TCPC, KEYBOARD, BC12 will not access battery's bitbang +- [ [ raw_read8.lto_priv.157, tcpc_read.lto_priv.352, tcpc_write.lto_priv.351, + it8801_ioex_write, it8801_read, it8801_write.lto_priv.336, raw_read16.lto_priv.349, + raw_write16.lto_priv.348, it5205_init.lto_priv.241, it5205_write, + raw_read8, tcpc_read.lto_priv.340 ], + [ i2c_write8, i2c_read8, i2c_write16, i2c_read16 ], [ i2c_write, i2c_read ], + i2c_xfer_unlocked, i2c_bitbang_xfer ] +- [ [ raw_read8.lto_priv.157, tcpc_read.lto_priv.352, tcpc_write.lto_priv.351, + it8801_ioex_write, it8801_read, it8801_write.lto_priv.336, raw_read16.lto_priv.349, + raw_write16.lto_priv.348, it5205_init.lto_priv.241, it5205_write, + raw_read8, tcpc_read.lto_priv.340 ], + [ i2c_write8, i2c_read8, i2c_write16, i2c_read16 ] , [ i2c_write, i2c_read ], + i2c_xfer, i2c_xfer_unlocked, i2c_bitbang_xfer ] +# PD_INT_C0_TASK +# pd_wait_exit_low_power -> reset_device_and_notify can only be called in a pd_task NOT pd_interrupt_handler_task +- [ pd_interrupt_handler_task, fusb302_tcpc_alert, pd_execute_hard_reset, set_state.lto_priv.206, + pd_power_supply_reset, charge_manager_source_port.part.10, charge_manager_save_log.part.9, + charge_manager_fill_power_info, tcpc_read.lto_priv.352, pd_wait_exit_low_power, reset_device_and_notify ] +# CONSOLE_TASK +# pd_wait_exit_low_power -> reset_device_and_notify can only be called in a pd_task NOT pd_interrupt_handler_task +- [ console_task, command_pd, set_state.lto_priv.206, pd_power_supply_reset, charge_manager_source_port.part.10, + charge_manager_save_log.part.9, charge_manager_fill_power_info, tcpc_read.lto_priv.352, pd_wait_exit_low_power, + reset_device_and_notify ] diff --git a/board/burnet/ec.tasklist b/board/burnet/ec.tasklist index 5622d67685..c7f7811cff 100644 --- a/board/burnet/ec.tasklist +++ b/board/burnet/ec.tasklist @@ -7,14 +7,14 @@ * See CONFIG_TASK_LIST in config.h for details. */ #define CONFIG_TASK_LIST \ - TASK_ALWAYS(HOOKS, hook_task, NULL, VENTI_TASK_STACK_SIZE) \ - TASK_ALWAYS(CHARGER, charger_task, NULL, VENTI_TASK_STACK_SIZE) \ + TASK_ALWAYS(HOOKS, hook_task, NULL, 1024) \ + TASK_ALWAYS(CHARGER, charger_task, NULL, 1152) \ TASK_ALWAYS(USB_CHG_P0, usb_charger_task, NULL, VENTI_TASK_STACK_SIZE) \ TASK_NOTEST(CHIPSET, chipset_task, NULL, LARGER_TASK_STACK_SIZE) \ TASK_ALWAYS_RW(MOTIONSENSE, motion_sense_task, NULL, VENTI_TASK_STACK_SIZE) \ TASK_NOTEST(PDCMD, pd_command_task, NULL, 1024) \ - TASK_ALWAYS(HOSTCMD, host_command_task, NULL, 1024) \ - TASK_ALWAYS(CONSOLE, console_task, NULL, VENTI_TASK_STACK_SIZE) \ + TASK_ALWAYS(HOSTCMD, host_command_task, NULL, 1152) \ + TASK_ALWAYS(CONSOLE, console_task, NULL, 1024) \ TASK_NOTEST(KEYSCAN, keyboard_scan_task, NULL, LARGER_TASK_STACK_SIZE) \ TASK_ALWAYS(PD_C0, pd_task, NULL, 1280) \ TASK_ALWAYS(PD_INT_C0, pd_interrupt_handler_task, 0, 1024) \ diff --git a/board/cerise/analyzestack.yaml b/board/cerise/analyzestack.yaml new file mode 100644 index 0000000000..76f8f523f2 --- /dev/null +++ b/board/cerise/analyzestack.yaml @@ -0,0 +1,246 @@ +# Check cortex-m/switch.S +exception_frame_size: 64 +add: +# TCPC functions, see fusb302_tcpm_drv struct. + tcpm_init[driver/tcpm/tcpm.h:121]: + - fusb302_tcpm_init + tcpm_release[driver/tcpm/tcpm.h:134]: + - fusb302_tcpm_release, + tcpm_select_rp_value[driver/tcpm/tcpm.h:150]: + - fusb302_tcpm_select_rp_value + tcpm_set_msg_header[driver/tcpm/tcpm.h:170]: + - fusb302_tcpm_set_msg_header + tcpm_enter_low_power_mode[driver/tcpm/tcpm.h:234]: + - fusb302_tcpm_enter_low_power_mode + tcpm_transmit[driver/tcpm/tcpm.h:188]: + - fusb302_tcpm_transmit + tcpm_get_cc[driver/tcpm/tcpm.h:140]: + - fusb302_tcpm_get_cc + tcpm_set_rx_enable[driver/tcpm/tcpm.h:176]: + - fusb302_tcpm_set_rx_enable + tcpm_set_vconn[driver/tcpm/tcpm.h:165]: + - fusb302_tcpm_set_vconn + tcpm_set_polarity[driver/tcpm/tcpm.h:160]: + - fusb302_tcpm_set_polarity + tcpm_set_cc[driver/tcpm/tcpm.h:155]: + - fusb302_tcpm_set_cc + tcpm_get_vbus_level[driver/tcpm/tcpm.h:145]: + - fusb302_tcpm_get_vbus_level + tcpm_enqueue_message[driver/tcpm/tcpci.c:468]: + - fusb302_tcpm_get_message_raw +# USB mux, see it5205_usb_mux_driver + usb_mux_flip[driver/usb_mux/usb_mux.c:164]: #get + - it5205_set_mux + usb_mux_flip[driver/usb_mux/usb_mux.c:175]: #set + - it5205_get_mux + usb_mux_init[driver/usb_mux/usb_mux.c:65]: #init + - it5205_init + usb_mux_init[driver/usb_mux/usb_mux.c:76]: # board_init + - None + enter_low_power_mode[driver/usb_mux/usb_mux.c:43]: + - it5205_enter_low_power_mode + usb_mux_set[driver/usb_mux/usb_mux.c:113]: + - it5205_set_mux + hc_usb_pd_mux_info[driver/usb_mux/usb_mux.c:241]: + - it5205_get_mux + usb_mux_get[driver/usb_mux/usb_mux.c:141]: + - it5205_get_mux +# usb_mux hpd_update + svdm_dp_post_config[baseboard/kukui/usb_pd_policy.c:200]: + - board_hpd_status + svdm_exit_dp_mode[baseboard/kukui/usb_pd_policy.c:263]: + - board_hpd_status + svdm_dp_attention[baseboard/kukui/usb_pd_policy.c:219]: + - board_hpd_status +# USB PD policy, see struct svdm_amode_fx + pd_svdm[common/usb_pd_policy.c:766]: + - svdm_dp_status + - svdm_gfu_status + pd_svdm[common/usb_pd_policy.c:777]: + - svdm_dp_config + - svdm_gfu_config + pd_svdm[common/usb_pd_policy.c:783]: + - svdm_dp_post_config + pd_dfp_enter_mode[common/usb_pd_policy.c:440]: + - svdm_enter_dp_mode + - svdm_enter_gfu_mode + pd_dfp_exit_mode[common/usb_pd_policy.c:544]: + - svdm_exit_dp_mode + - svdm_exit_gfu_mode + dfp_consume_attention[common/usb_pd_policy.c:478]: + - svdm_dp_attention + - svdm_gfu_attention + pd_dfp_exit_mode[common/usb_pd_policy.c:561]: + - svdm_exit_dp_mode + - svdm_exit_gfu_mode +# Motion sense: bmi160 + motion_sense_set_data_rate[common/motion_sense.c:156]: # set_data_rate + - set_data_rate[driver/accelgyro_bmi160.c] + motion_sense_set_data_rate[common/motion_sense.c:175]: # get_data_rate + - get_data_rate[driver/accelgyro_bmi160.c] + motion_sense_set_data_rate[common/motion_sense.c:184]: # get_data_rate + - get_data_rate[driver/accelgyro_bmi160.c] + motion_sense_set_motion_intervals[common/motion_sense.c:302]: # get_data_rate + - get_data_rate[driver/accelgyro_bmi160.c] + motion_sense_set_ec_rate_from_ap[common/motion_sense.c:196]: # get_data_rate + - get_data_rate[driver/accelgyro_bmi160.c] + motion_sense_init[common/motion_sense.c:327]: # init + - init[driver/accelgyro_bmi160.c] + sensor_init_done[common/motion_sense.c:353]: # get_range + - get_range[driver/accelgyro_bmi160.c] + motion_sense_shutdown[common/motion_sense.c:431]: # list_activities + - list_activities[driver/accelgyro_bmi160.c] + motion_sense_shutdown[common/motion_sense.c:437]: # manage_activity + - manage_activity[driver/accelgyro_bmi160.c] + motion_sense_shutdown[common/motion_sense.c:440]: # manage_activity + - manage_activity[driver/accelgyro_bmi160.c] + motion_sense_read[common/motion_sense.c:589]: # read + - read[driver/accelgyro_bmi160.c] + motion_sense_read[common/motion_sense.c:576]: # get_data_rate + - get_data_rate[driver/accelgyro_bmi160.c] + motion_sense_process[common/motion_sense.c:667]: # irq_handler + - irq_handler[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1153]: # set_range + - set_range[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1164]: # get_range + - get_range[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1179]: # set_offset + - set_offset[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1207]: # set_scale + - set_scale[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1233]: # perform_calib + - perform_calib[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1237]: # get_offset + - get_offset[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1313]: # list_activities + - list_activities[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1333]: # list_activities + - list_activities[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1337]: # manage_activity + - manage_activity[driver/accelgyro_bmi160.c] + command_accelrange[common/motion_sense.c:1455]: # set_range + - set_range[driver/accelgyro_bmi160.c] + command_accelrange[common/motion_sense.c:1460]: # get_range + - get_range[driver/accelgyro_bmi160.c] + command_accelresolution[common/motion_sense.c:1504]: # set_resolution + - None + command_accelresolution[common/motion_sense.c:1508]: # get_resolution + - get_resolution[driver/accelgyro_bmi160.c] + command_accel_data_rate[common/motion_sense.c:1560]: # get_data_rate + - get_data_rate[driver/accelgyro_bmi160.c] + command_accel_read_xyz[common/motion_sense.c:1595]: # read + - read[driver/accelgyro_bmi160.c] + +# Core + handle_command[common/console.c:248]: + - { name: __cmds, stride: 16, offset: 4 } + hook_task[common/hooks.c:200]: + - { name: __deferred_funcs, stride: 4, offset: 0 } + - { name: __hooks_second, stride: 8, offset: 0 } + - { name: __hooks_tick, stride: 8, 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/kukui/R*/ec.R*.smap | + # sed -e 's/.*\(__hooks.*\)_end/ - { name: \1, stride: 8, offset: 0 }/' | + # sort -u` + hook_notify[common/hooks.c:130]: + - { 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_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_sysjump, stride: 8, offset: 0 } + - { name: __hooks_tablet_mode_change, stride: 8, offset: 0 } + - { name: __hooks_usb_pd_connect, stride: 8, offset: 0 } + - { name: __hooks_usb_pd_disconnect, stride: 8, offset: 0 } + mkbp_get_next_event[common/mkbp_event.c:369]: + - { name: __mkbp_evt_srcs, stride: 8, offset: 4 } + host_command_process[common/host_command.c:708]: + - { name: __hcmds, stride: 12, offset: 0 } + vfnprintf: + # This covers all the addchar in vfnprintf, but stackanalyzer does not + # realize that... + - __tx_char + host_send_response[common/host_command.c:153]: # send_response + - spi_send_response + host_packet_respond[common/host_command.c:240]: + - spi_send_response_packet +# Misc + i2c_command_passthru[common/i2c_master.c:991]: + - None + cprints[common/console_output.c:108]: + - None # I'm not sure what this is?! + chip_i2c_xfer_with_notify[common/i2c_master.c:112]: # i2c_port->drv->xfer + - i2c_bitbang_xfer + default_handler[core/cortex-m0/init.S:100]: + - exception_panic + gpio_interrupt[chip/stm32/gpio.c:154]: + - None + +remove: +# Remove all callsites pointing to panic_assert_fail. +- panic_assert_fail + +# Remove paths that make no sense +# HOOK_USB_PD_DISCONNECT +- [ pd_request_power_swap, set_state.lto_priv.206, hook_notify, + [ motion_sense_shutdown, charger_enable_psys, charger_disable_psys, + system_common_shutdown ] ] +# HOOK_AC_CHANGE/HOOK_BATTERY_SOC_CHANGE +- [ charger_task, hook_notify, + [ motion_sense_shutdown, system_common_shutdown ] ] +# HOOK_LID_CHANGE +- [ [ lid_switch_open, lid_switch_close ], hook_notify, + [ motion_sense_shutdown, system_common_shutdown ] ] +# HOOK_BASE_ATTACHED_CHANGE/HOOK_TABLET_MODE_CHANGE +- [ tablet_set_mode, hook_notify, [ system_common_shutdown, charger_enable_psys, charger_disable_psys ] ] +# HOOK_POWER_BUTTON_CHANGE +- [ power_button_change_deferred, hook_notify, + [ motion_sense_shutdown, system_common_shutdown ] ] +# HOOK_SECOND +- [ hook_task, hook_notify, [ motion_sense_shutdown, system_common_shutdown ] ] +# HOOK_SYSJUMP +- [ jump_to_image, hook_notify, + [ motion_sense_shutdown, system_common_shutdown, charger_enable_psys, charger_disable_psys ] ] +- [ pd_request_power_swap, set_state, hook_notify, panic_init ] +# set_state(port, PD_STATE_SRC/SNK_SWAP_INIT); will not call these functions +- [ pd_request_power_swap, set_state, + [ pd_dfp_exit_mode, usb_mux_set, pd_power_supply_reset, tcpm_set_vconn ] ] +- [ [ pd_request_data_swap, pd_request_vconn_swap ] , set_state, pd_power_supply_reset ] +# All sensors will be shut down in S5 +- [ motion_sense_shutdown, motion_sense_switch_sensor_rate, + [ motion_sense_set_data_rate, motion_sense_init ] ] +# HOOK_CHIPSET_PRE_INIT, HOOK_CHIPSET_STARTUP, HOOK_CHIPSET_RESUME, +# HOOK_CHIPSET_SUSPEND, HOOK_CHIPSET_SHUTDOWN +- [ chipset_task, hook_notify ] +# TCPC, KEYBOARD, BC12 will not access battery's bitbang +- [ [ raw_read8.lto_priv.157, tcpc_read.lto_priv.352, tcpc_write.lto_priv.351, + it8801_ioex_write, it8801_read, it8801_write.lto_priv.336, raw_read16.lto_priv.349, + raw_write16.lto_priv.348, it5205_init.lto_priv.241, it5205_write, + raw_read8, tcpc_read.lto_priv.340 ], + [ i2c_write8, i2c_read8, i2c_write16, i2c_read16 ], [ i2c_write, i2c_read ], + i2c_xfer_unlocked, i2c_bitbang_xfer ] +- [ [ raw_read8.lto_priv.157, tcpc_read.lto_priv.352, tcpc_write.lto_priv.351, + it8801_ioex_write, it8801_read, it8801_write.lto_priv.336, raw_read16.lto_priv.349, + raw_write16.lto_priv.348, it5205_init.lto_priv.241, it5205_write, + raw_read8, tcpc_read.lto_priv.340 ], + [ i2c_write8, i2c_read8, i2c_write16, i2c_read16 ] , [ i2c_write, i2c_read ], + i2c_xfer, i2c_xfer_unlocked, i2c_bitbang_xfer ] +# PD_INT_C0_TASK +# pd_wait_exit_low_power -> reset_device_and_notify can only be called in a pd_task NOT pd_interrupt_handler_task +- [ pd_interrupt_handler_task, fusb302_tcpc_alert, pd_execute_hard_reset, set_state.lto_priv.206, + pd_power_supply_reset, charge_manager_source_port.part.10, charge_manager_save_log.part.9, + charge_manager_fill_power_info, tcpc_read.lto_priv.352, pd_wait_exit_low_power, reset_device_and_notify ] +# CONSOLE_TASK +# pd_wait_exit_low_power -> reset_device_and_notify can only be called in a pd_task NOT pd_interrupt_handler_task +- [ console_task, command_pd, set_state.lto_priv.206, pd_power_supply_reset, charge_manager_source_port.part.10, + charge_manager_save_log.part.9, charge_manager_fill_power_info, tcpc_read.lto_priv.352, pd_wait_exit_low_power, + reset_device_and_notify ] diff --git a/board/cerise/ec.tasklist b/board/cerise/ec.tasklist index 3549007a02..c7f7811cff 100644 --- a/board/cerise/ec.tasklist +++ b/board/cerise/ec.tasklist @@ -7,14 +7,14 @@ * See CONFIG_TASK_LIST in config.h for details. */ #define CONFIG_TASK_LIST \ - TASK_ALWAYS(HOOKS, hook_task, NULL, VENTI_TASK_STACK_SIZE) \ - TASK_ALWAYS(CHARGER, charger_task, NULL, 1024) \ + TASK_ALWAYS(HOOKS, hook_task, NULL, 1024) \ + TASK_ALWAYS(CHARGER, charger_task, NULL, 1152) \ TASK_ALWAYS(USB_CHG_P0, usb_charger_task, NULL, VENTI_TASK_STACK_SIZE) \ TASK_NOTEST(CHIPSET, chipset_task, NULL, LARGER_TASK_STACK_SIZE) \ TASK_ALWAYS_RW(MOTIONSENSE, motion_sense_task, NULL, VENTI_TASK_STACK_SIZE) \ TASK_NOTEST(PDCMD, pd_command_task, NULL, 1024) \ - TASK_ALWAYS(HOSTCMD, host_command_task, NULL, 1024) \ - TASK_ALWAYS(CONSOLE, console_task, NULL, LARGER_TASK_STACK_SIZE) \ + TASK_ALWAYS(HOSTCMD, host_command_task, NULL, 1152) \ + TASK_ALWAYS(CONSOLE, console_task, NULL, 1024) \ TASK_NOTEST(KEYSCAN, keyboard_scan_task, NULL, LARGER_TASK_STACK_SIZE) \ TASK_ALWAYS(PD_C0, pd_task, NULL, 1280) \ TASK_ALWAYS(PD_INT_C0, pd_interrupt_handler_task, 0, 1024) \ diff --git a/board/damu/analyzestack.yaml b/board/damu/analyzestack.yaml new file mode 100644 index 0000000000..76f8f523f2 --- /dev/null +++ b/board/damu/analyzestack.yaml @@ -0,0 +1,246 @@ +# Check cortex-m/switch.S +exception_frame_size: 64 +add: +# TCPC functions, see fusb302_tcpm_drv struct. + tcpm_init[driver/tcpm/tcpm.h:121]: + - fusb302_tcpm_init + tcpm_release[driver/tcpm/tcpm.h:134]: + - fusb302_tcpm_release, + tcpm_select_rp_value[driver/tcpm/tcpm.h:150]: + - fusb302_tcpm_select_rp_value + tcpm_set_msg_header[driver/tcpm/tcpm.h:170]: + - fusb302_tcpm_set_msg_header + tcpm_enter_low_power_mode[driver/tcpm/tcpm.h:234]: + - fusb302_tcpm_enter_low_power_mode + tcpm_transmit[driver/tcpm/tcpm.h:188]: + - fusb302_tcpm_transmit + tcpm_get_cc[driver/tcpm/tcpm.h:140]: + - fusb302_tcpm_get_cc + tcpm_set_rx_enable[driver/tcpm/tcpm.h:176]: + - fusb302_tcpm_set_rx_enable + tcpm_set_vconn[driver/tcpm/tcpm.h:165]: + - fusb302_tcpm_set_vconn + tcpm_set_polarity[driver/tcpm/tcpm.h:160]: + - fusb302_tcpm_set_polarity + tcpm_set_cc[driver/tcpm/tcpm.h:155]: + - fusb302_tcpm_set_cc + tcpm_get_vbus_level[driver/tcpm/tcpm.h:145]: + - fusb302_tcpm_get_vbus_level + tcpm_enqueue_message[driver/tcpm/tcpci.c:468]: + - fusb302_tcpm_get_message_raw +# USB mux, see it5205_usb_mux_driver + usb_mux_flip[driver/usb_mux/usb_mux.c:164]: #get + - it5205_set_mux + usb_mux_flip[driver/usb_mux/usb_mux.c:175]: #set + - it5205_get_mux + usb_mux_init[driver/usb_mux/usb_mux.c:65]: #init + - it5205_init + usb_mux_init[driver/usb_mux/usb_mux.c:76]: # board_init + - None + enter_low_power_mode[driver/usb_mux/usb_mux.c:43]: + - it5205_enter_low_power_mode + usb_mux_set[driver/usb_mux/usb_mux.c:113]: + - it5205_set_mux + hc_usb_pd_mux_info[driver/usb_mux/usb_mux.c:241]: + - it5205_get_mux + usb_mux_get[driver/usb_mux/usb_mux.c:141]: + - it5205_get_mux +# usb_mux hpd_update + svdm_dp_post_config[baseboard/kukui/usb_pd_policy.c:200]: + - board_hpd_status + svdm_exit_dp_mode[baseboard/kukui/usb_pd_policy.c:263]: + - board_hpd_status + svdm_dp_attention[baseboard/kukui/usb_pd_policy.c:219]: + - board_hpd_status +# USB PD policy, see struct svdm_amode_fx + pd_svdm[common/usb_pd_policy.c:766]: + - svdm_dp_status + - svdm_gfu_status + pd_svdm[common/usb_pd_policy.c:777]: + - svdm_dp_config + - svdm_gfu_config + pd_svdm[common/usb_pd_policy.c:783]: + - svdm_dp_post_config + pd_dfp_enter_mode[common/usb_pd_policy.c:440]: + - svdm_enter_dp_mode + - svdm_enter_gfu_mode + pd_dfp_exit_mode[common/usb_pd_policy.c:544]: + - svdm_exit_dp_mode + - svdm_exit_gfu_mode + dfp_consume_attention[common/usb_pd_policy.c:478]: + - svdm_dp_attention + - svdm_gfu_attention + pd_dfp_exit_mode[common/usb_pd_policy.c:561]: + - svdm_exit_dp_mode + - svdm_exit_gfu_mode +# Motion sense: bmi160 + motion_sense_set_data_rate[common/motion_sense.c:156]: # set_data_rate + - set_data_rate[driver/accelgyro_bmi160.c] + motion_sense_set_data_rate[common/motion_sense.c:175]: # get_data_rate + - get_data_rate[driver/accelgyro_bmi160.c] + motion_sense_set_data_rate[common/motion_sense.c:184]: # get_data_rate + - get_data_rate[driver/accelgyro_bmi160.c] + motion_sense_set_motion_intervals[common/motion_sense.c:302]: # get_data_rate + - get_data_rate[driver/accelgyro_bmi160.c] + motion_sense_set_ec_rate_from_ap[common/motion_sense.c:196]: # get_data_rate + - get_data_rate[driver/accelgyro_bmi160.c] + motion_sense_init[common/motion_sense.c:327]: # init + - init[driver/accelgyro_bmi160.c] + sensor_init_done[common/motion_sense.c:353]: # get_range + - get_range[driver/accelgyro_bmi160.c] + motion_sense_shutdown[common/motion_sense.c:431]: # list_activities + - list_activities[driver/accelgyro_bmi160.c] + motion_sense_shutdown[common/motion_sense.c:437]: # manage_activity + - manage_activity[driver/accelgyro_bmi160.c] + motion_sense_shutdown[common/motion_sense.c:440]: # manage_activity + - manage_activity[driver/accelgyro_bmi160.c] + motion_sense_read[common/motion_sense.c:589]: # read + - read[driver/accelgyro_bmi160.c] + motion_sense_read[common/motion_sense.c:576]: # get_data_rate + - get_data_rate[driver/accelgyro_bmi160.c] + motion_sense_process[common/motion_sense.c:667]: # irq_handler + - irq_handler[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1153]: # set_range + - set_range[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1164]: # get_range + - get_range[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1179]: # set_offset + - set_offset[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1207]: # set_scale + - set_scale[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1233]: # perform_calib + - perform_calib[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1237]: # get_offset + - get_offset[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1313]: # list_activities + - list_activities[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1333]: # list_activities + - list_activities[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1337]: # manage_activity + - manage_activity[driver/accelgyro_bmi160.c] + command_accelrange[common/motion_sense.c:1455]: # set_range + - set_range[driver/accelgyro_bmi160.c] + command_accelrange[common/motion_sense.c:1460]: # get_range + - get_range[driver/accelgyro_bmi160.c] + command_accelresolution[common/motion_sense.c:1504]: # set_resolution + - None + command_accelresolution[common/motion_sense.c:1508]: # get_resolution + - get_resolution[driver/accelgyro_bmi160.c] + command_accel_data_rate[common/motion_sense.c:1560]: # get_data_rate + - get_data_rate[driver/accelgyro_bmi160.c] + command_accel_read_xyz[common/motion_sense.c:1595]: # read + - read[driver/accelgyro_bmi160.c] + +# Core + handle_command[common/console.c:248]: + - { name: __cmds, stride: 16, offset: 4 } + hook_task[common/hooks.c:200]: + - { name: __deferred_funcs, stride: 4, offset: 0 } + - { name: __hooks_second, stride: 8, offset: 0 } + - { name: __hooks_tick, stride: 8, 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/kukui/R*/ec.R*.smap | + # sed -e 's/.*\(__hooks.*\)_end/ - { name: \1, stride: 8, offset: 0 }/' | + # sort -u` + hook_notify[common/hooks.c:130]: + - { 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_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_sysjump, stride: 8, offset: 0 } + - { name: __hooks_tablet_mode_change, stride: 8, offset: 0 } + - { name: __hooks_usb_pd_connect, stride: 8, offset: 0 } + - { name: __hooks_usb_pd_disconnect, stride: 8, offset: 0 } + mkbp_get_next_event[common/mkbp_event.c:369]: + - { name: __mkbp_evt_srcs, stride: 8, offset: 4 } + host_command_process[common/host_command.c:708]: + - { name: __hcmds, stride: 12, offset: 0 } + vfnprintf: + # This covers all the addchar in vfnprintf, but stackanalyzer does not + # realize that... + - __tx_char + host_send_response[common/host_command.c:153]: # send_response + - spi_send_response + host_packet_respond[common/host_command.c:240]: + - spi_send_response_packet +# Misc + i2c_command_passthru[common/i2c_master.c:991]: + - None + cprints[common/console_output.c:108]: + - None # I'm not sure what this is?! + chip_i2c_xfer_with_notify[common/i2c_master.c:112]: # i2c_port->drv->xfer + - i2c_bitbang_xfer + default_handler[core/cortex-m0/init.S:100]: + - exception_panic + gpio_interrupt[chip/stm32/gpio.c:154]: + - None + +remove: +# Remove all callsites pointing to panic_assert_fail. +- panic_assert_fail + +# Remove paths that make no sense +# HOOK_USB_PD_DISCONNECT +- [ pd_request_power_swap, set_state.lto_priv.206, hook_notify, + [ motion_sense_shutdown, charger_enable_psys, charger_disable_psys, + system_common_shutdown ] ] +# HOOK_AC_CHANGE/HOOK_BATTERY_SOC_CHANGE +- [ charger_task, hook_notify, + [ motion_sense_shutdown, system_common_shutdown ] ] +# HOOK_LID_CHANGE +- [ [ lid_switch_open, lid_switch_close ], hook_notify, + [ motion_sense_shutdown, system_common_shutdown ] ] +# HOOK_BASE_ATTACHED_CHANGE/HOOK_TABLET_MODE_CHANGE +- [ tablet_set_mode, hook_notify, [ system_common_shutdown, charger_enable_psys, charger_disable_psys ] ] +# HOOK_POWER_BUTTON_CHANGE +- [ power_button_change_deferred, hook_notify, + [ motion_sense_shutdown, system_common_shutdown ] ] +# HOOK_SECOND +- [ hook_task, hook_notify, [ motion_sense_shutdown, system_common_shutdown ] ] +# HOOK_SYSJUMP +- [ jump_to_image, hook_notify, + [ motion_sense_shutdown, system_common_shutdown, charger_enable_psys, charger_disable_psys ] ] +- [ pd_request_power_swap, set_state, hook_notify, panic_init ] +# set_state(port, PD_STATE_SRC/SNK_SWAP_INIT); will not call these functions +- [ pd_request_power_swap, set_state, + [ pd_dfp_exit_mode, usb_mux_set, pd_power_supply_reset, tcpm_set_vconn ] ] +- [ [ pd_request_data_swap, pd_request_vconn_swap ] , set_state, pd_power_supply_reset ] +# All sensors will be shut down in S5 +- [ motion_sense_shutdown, motion_sense_switch_sensor_rate, + [ motion_sense_set_data_rate, motion_sense_init ] ] +# HOOK_CHIPSET_PRE_INIT, HOOK_CHIPSET_STARTUP, HOOK_CHIPSET_RESUME, +# HOOK_CHIPSET_SUSPEND, HOOK_CHIPSET_SHUTDOWN +- [ chipset_task, hook_notify ] +# TCPC, KEYBOARD, BC12 will not access battery's bitbang +- [ [ raw_read8.lto_priv.157, tcpc_read.lto_priv.352, tcpc_write.lto_priv.351, + it8801_ioex_write, it8801_read, it8801_write.lto_priv.336, raw_read16.lto_priv.349, + raw_write16.lto_priv.348, it5205_init.lto_priv.241, it5205_write, + raw_read8, tcpc_read.lto_priv.340 ], + [ i2c_write8, i2c_read8, i2c_write16, i2c_read16 ], [ i2c_write, i2c_read ], + i2c_xfer_unlocked, i2c_bitbang_xfer ] +- [ [ raw_read8.lto_priv.157, tcpc_read.lto_priv.352, tcpc_write.lto_priv.351, + it8801_ioex_write, it8801_read, it8801_write.lto_priv.336, raw_read16.lto_priv.349, + raw_write16.lto_priv.348, it5205_init.lto_priv.241, it5205_write, + raw_read8, tcpc_read.lto_priv.340 ], + [ i2c_write8, i2c_read8, i2c_write16, i2c_read16 ] , [ i2c_write, i2c_read ], + i2c_xfer, i2c_xfer_unlocked, i2c_bitbang_xfer ] +# PD_INT_C0_TASK +# pd_wait_exit_low_power -> reset_device_and_notify can only be called in a pd_task NOT pd_interrupt_handler_task +- [ pd_interrupt_handler_task, fusb302_tcpc_alert, pd_execute_hard_reset, set_state.lto_priv.206, + pd_power_supply_reset, charge_manager_source_port.part.10, charge_manager_save_log.part.9, + charge_manager_fill_power_info, tcpc_read.lto_priv.352, pd_wait_exit_low_power, reset_device_and_notify ] +# CONSOLE_TASK +# pd_wait_exit_low_power -> reset_device_and_notify can only be called in a pd_task NOT pd_interrupt_handler_task +- [ console_task, command_pd, set_state.lto_priv.206, pd_power_supply_reset, charge_manager_source_port.part.10, + charge_manager_save_log.part.9, charge_manager_fill_power_info, tcpc_read.lto_priv.352, pd_wait_exit_low_power, + reset_device_and_notify ] diff --git a/board/damu/ec.tasklist b/board/damu/ec.tasklist index 84d1ebcb2f..75c10654d3 100644 --- a/board/damu/ec.tasklist +++ b/board/damu/ec.tasklist @@ -7,14 +7,14 @@ * See CONFIG_TASK_LIST in config.h for details. */ #define CONFIG_TASK_LIST \ - TASK_ALWAYS(HOOKS, hook_task, NULL, VENTI_TASK_STACK_SIZE) \ - TASK_ALWAYS(CHARGER, charger_task, NULL, 1024) \ + TASK_ALWAYS(HOOKS, hook_task, NULL, 1024) \ + TASK_ALWAYS(CHARGER, charger_task, NULL, 1152) \ TASK_ALWAYS(USB_CHG_P0, usb_charger_task, NULL, VENTI_TASK_STACK_SIZE) \ TASK_NOTEST(CHIPSET, chipset_task, NULL, LARGER_TASK_STACK_SIZE) \ TASK_ALWAYS_RW(MOTIONSENSE, motion_sense_task, NULL, VENTI_TASK_STACK_SIZE) \ TASK_NOTEST(PDCMD, pd_command_task, NULL, 1024) \ - TASK_ALWAYS(HOSTCMD, host_command_task, NULL, 1024) \ - TASK_ALWAYS(CONSOLE, console_task, NULL, LARGER_TASK_STACK_SIZE) \ + TASK_ALWAYS(HOSTCMD, host_command_task, NULL, 1152) \ + TASK_ALWAYS(CONSOLE, console_task, NULL, 1024) \ TASK_NOTEST(KEYSCAN, keyboard_scan_task, NULL, LARGER_TASK_STACK_SIZE) \ TASK_ALWAYS(PD_C0, pd_task, NULL, 1280) \ TASK_ALWAYS(PD_INT_C0, pd_interrupt_handler_task, 0, 1024) \ diff --git a/board/fennel/analyzestack.yaml b/board/fennel/analyzestack.yaml new file mode 100644 index 0000000000..76f8f523f2 --- /dev/null +++ b/board/fennel/analyzestack.yaml @@ -0,0 +1,246 @@ +# Check cortex-m/switch.S +exception_frame_size: 64 +add: +# TCPC functions, see fusb302_tcpm_drv struct. + tcpm_init[driver/tcpm/tcpm.h:121]: + - fusb302_tcpm_init + tcpm_release[driver/tcpm/tcpm.h:134]: + - fusb302_tcpm_release, + tcpm_select_rp_value[driver/tcpm/tcpm.h:150]: + - fusb302_tcpm_select_rp_value + tcpm_set_msg_header[driver/tcpm/tcpm.h:170]: + - fusb302_tcpm_set_msg_header + tcpm_enter_low_power_mode[driver/tcpm/tcpm.h:234]: + - fusb302_tcpm_enter_low_power_mode + tcpm_transmit[driver/tcpm/tcpm.h:188]: + - fusb302_tcpm_transmit + tcpm_get_cc[driver/tcpm/tcpm.h:140]: + - fusb302_tcpm_get_cc + tcpm_set_rx_enable[driver/tcpm/tcpm.h:176]: + - fusb302_tcpm_set_rx_enable + tcpm_set_vconn[driver/tcpm/tcpm.h:165]: + - fusb302_tcpm_set_vconn + tcpm_set_polarity[driver/tcpm/tcpm.h:160]: + - fusb302_tcpm_set_polarity + tcpm_set_cc[driver/tcpm/tcpm.h:155]: + - fusb302_tcpm_set_cc + tcpm_get_vbus_level[driver/tcpm/tcpm.h:145]: + - fusb302_tcpm_get_vbus_level + tcpm_enqueue_message[driver/tcpm/tcpci.c:468]: + - fusb302_tcpm_get_message_raw +# USB mux, see it5205_usb_mux_driver + usb_mux_flip[driver/usb_mux/usb_mux.c:164]: #get + - it5205_set_mux + usb_mux_flip[driver/usb_mux/usb_mux.c:175]: #set + - it5205_get_mux + usb_mux_init[driver/usb_mux/usb_mux.c:65]: #init + - it5205_init + usb_mux_init[driver/usb_mux/usb_mux.c:76]: # board_init + - None + enter_low_power_mode[driver/usb_mux/usb_mux.c:43]: + - it5205_enter_low_power_mode + usb_mux_set[driver/usb_mux/usb_mux.c:113]: + - it5205_set_mux + hc_usb_pd_mux_info[driver/usb_mux/usb_mux.c:241]: + - it5205_get_mux + usb_mux_get[driver/usb_mux/usb_mux.c:141]: + - it5205_get_mux +# usb_mux hpd_update + svdm_dp_post_config[baseboard/kukui/usb_pd_policy.c:200]: + - board_hpd_status + svdm_exit_dp_mode[baseboard/kukui/usb_pd_policy.c:263]: + - board_hpd_status + svdm_dp_attention[baseboard/kukui/usb_pd_policy.c:219]: + - board_hpd_status +# USB PD policy, see struct svdm_amode_fx + pd_svdm[common/usb_pd_policy.c:766]: + - svdm_dp_status + - svdm_gfu_status + pd_svdm[common/usb_pd_policy.c:777]: + - svdm_dp_config + - svdm_gfu_config + pd_svdm[common/usb_pd_policy.c:783]: + - svdm_dp_post_config + pd_dfp_enter_mode[common/usb_pd_policy.c:440]: + - svdm_enter_dp_mode + - svdm_enter_gfu_mode + pd_dfp_exit_mode[common/usb_pd_policy.c:544]: + - svdm_exit_dp_mode + - svdm_exit_gfu_mode + dfp_consume_attention[common/usb_pd_policy.c:478]: + - svdm_dp_attention + - svdm_gfu_attention + pd_dfp_exit_mode[common/usb_pd_policy.c:561]: + - svdm_exit_dp_mode + - svdm_exit_gfu_mode +# Motion sense: bmi160 + motion_sense_set_data_rate[common/motion_sense.c:156]: # set_data_rate + - set_data_rate[driver/accelgyro_bmi160.c] + motion_sense_set_data_rate[common/motion_sense.c:175]: # get_data_rate + - get_data_rate[driver/accelgyro_bmi160.c] + motion_sense_set_data_rate[common/motion_sense.c:184]: # get_data_rate + - get_data_rate[driver/accelgyro_bmi160.c] + motion_sense_set_motion_intervals[common/motion_sense.c:302]: # get_data_rate + - get_data_rate[driver/accelgyro_bmi160.c] + motion_sense_set_ec_rate_from_ap[common/motion_sense.c:196]: # get_data_rate + - get_data_rate[driver/accelgyro_bmi160.c] + motion_sense_init[common/motion_sense.c:327]: # init + - init[driver/accelgyro_bmi160.c] + sensor_init_done[common/motion_sense.c:353]: # get_range + - get_range[driver/accelgyro_bmi160.c] + motion_sense_shutdown[common/motion_sense.c:431]: # list_activities + - list_activities[driver/accelgyro_bmi160.c] + motion_sense_shutdown[common/motion_sense.c:437]: # manage_activity + - manage_activity[driver/accelgyro_bmi160.c] + motion_sense_shutdown[common/motion_sense.c:440]: # manage_activity + - manage_activity[driver/accelgyro_bmi160.c] + motion_sense_read[common/motion_sense.c:589]: # read + - read[driver/accelgyro_bmi160.c] + motion_sense_read[common/motion_sense.c:576]: # get_data_rate + - get_data_rate[driver/accelgyro_bmi160.c] + motion_sense_process[common/motion_sense.c:667]: # irq_handler + - irq_handler[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1153]: # set_range + - set_range[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1164]: # get_range + - get_range[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1179]: # set_offset + - set_offset[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1207]: # set_scale + - set_scale[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1233]: # perform_calib + - perform_calib[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1237]: # get_offset + - get_offset[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1313]: # list_activities + - list_activities[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1333]: # list_activities + - list_activities[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1337]: # manage_activity + - manage_activity[driver/accelgyro_bmi160.c] + command_accelrange[common/motion_sense.c:1455]: # set_range + - set_range[driver/accelgyro_bmi160.c] + command_accelrange[common/motion_sense.c:1460]: # get_range + - get_range[driver/accelgyro_bmi160.c] + command_accelresolution[common/motion_sense.c:1504]: # set_resolution + - None + command_accelresolution[common/motion_sense.c:1508]: # get_resolution + - get_resolution[driver/accelgyro_bmi160.c] + command_accel_data_rate[common/motion_sense.c:1560]: # get_data_rate + - get_data_rate[driver/accelgyro_bmi160.c] + command_accel_read_xyz[common/motion_sense.c:1595]: # read + - read[driver/accelgyro_bmi160.c] + +# Core + handle_command[common/console.c:248]: + - { name: __cmds, stride: 16, offset: 4 } + hook_task[common/hooks.c:200]: + - { name: __deferred_funcs, stride: 4, offset: 0 } + - { name: __hooks_second, stride: 8, offset: 0 } + - { name: __hooks_tick, stride: 8, 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/kukui/R*/ec.R*.smap | + # sed -e 's/.*\(__hooks.*\)_end/ - { name: \1, stride: 8, offset: 0 }/' | + # sort -u` + hook_notify[common/hooks.c:130]: + - { 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_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_sysjump, stride: 8, offset: 0 } + - { name: __hooks_tablet_mode_change, stride: 8, offset: 0 } + - { name: __hooks_usb_pd_connect, stride: 8, offset: 0 } + - { name: __hooks_usb_pd_disconnect, stride: 8, offset: 0 } + mkbp_get_next_event[common/mkbp_event.c:369]: + - { name: __mkbp_evt_srcs, stride: 8, offset: 4 } + host_command_process[common/host_command.c:708]: + - { name: __hcmds, stride: 12, offset: 0 } + vfnprintf: + # This covers all the addchar in vfnprintf, but stackanalyzer does not + # realize that... + - __tx_char + host_send_response[common/host_command.c:153]: # send_response + - spi_send_response + host_packet_respond[common/host_command.c:240]: + - spi_send_response_packet +# Misc + i2c_command_passthru[common/i2c_master.c:991]: + - None + cprints[common/console_output.c:108]: + - None # I'm not sure what this is?! + chip_i2c_xfer_with_notify[common/i2c_master.c:112]: # i2c_port->drv->xfer + - i2c_bitbang_xfer + default_handler[core/cortex-m0/init.S:100]: + - exception_panic + gpio_interrupt[chip/stm32/gpio.c:154]: + - None + +remove: +# Remove all callsites pointing to panic_assert_fail. +- panic_assert_fail + +# Remove paths that make no sense +# HOOK_USB_PD_DISCONNECT +- [ pd_request_power_swap, set_state.lto_priv.206, hook_notify, + [ motion_sense_shutdown, charger_enable_psys, charger_disable_psys, + system_common_shutdown ] ] +# HOOK_AC_CHANGE/HOOK_BATTERY_SOC_CHANGE +- [ charger_task, hook_notify, + [ motion_sense_shutdown, system_common_shutdown ] ] +# HOOK_LID_CHANGE +- [ [ lid_switch_open, lid_switch_close ], hook_notify, + [ motion_sense_shutdown, system_common_shutdown ] ] +# HOOK_BASE_ATTACHED_CHANGE/HOOK_TABLET_MODE_CHANGE +- [ tablet_set_mode, hook_notify, [ system_common_shutdown, charger_enable_psys, charger_disable_psys ] ] +# HOOK_POWER_BUTTON_CHANGE +- [ power_button_change_deferred, hook_notify, + [ motion_sense_shutdown, system_common_shutdown ] ] +# HOOK_SECOND +- [ hook_task, hook_notify, [ motion_sense_shutdown, system_common_shutdown ] ] +# HOOK_SYSJUMP +- [ jump_to_image, hook_notify, + [ motion_sense_shutdown, system_common_shutdown, charger_enable_psys, charger_disable_psys ] ] +- [ pd_request_power_swap, set_state, hook_notify, panic_init ] +# set_state(port, PD_STATE_SRC/SNK_SWAP_INIT); will not call these functions +- [ pd_request_power_swap, set_state, + [ pd_dfp_exit_mode, usb_mux_set, pd_power_supply_reset, tcpm_set_vconn ] ] +- [ [ pd_request_data_swap, pd_request_vconn_swap ] , set_state, pd_power_supply_reset ] +# All sensors will be shut down in S5 +- [ motion_sense_shutdown, motion_sense_switch_sensor_rate, + [ motion_sense_set_data_rate, motion_sense_init ] ] +# HOOK_CHIPSET_PRE_INIT, HOOK_CHIPSET_STARTUP, HOOK_CHIPSET_RESUME, +# HOOK_CHIPSET_SUSPEND, HOOK_CHIPSET_SHUTDOWN +- [ chipset_task, hook_notify ] +# TCPC, KEYBOARD, BC12 will not access battery's bitbang +- [ [ raw_read8.lto_priv.157, tcpc_read.lto_priv.352, tcpc_write.lto_priv.351, + it8801_ioex_write, it8801_read, it8801_write.lto_priv.336, raw_read16.lto_priv.349, + raw_write16.lto_priv.348, it5205_init.lto_priv.241, it5205_write, + raw_read8, tcpc_read.lto_priv.340 ], + [ i2c_write8, i2c_read8, i2c_write16, i2c_read16 ], [ i2c_write, i2c_read ], + i2c_xfer_unlocked, i2c_bitbang_xfer ] +- [ [ raw_read8.lto_priv.157, tcpc_read.lto_priv.352, tcpc_write.lto_priv.351, + it8801_ioex_write, it8801_read, it8801_write.lto_priv.336, raw_read16.lto_priv.349, + raw_write16.lto_priv.348, it5205_init.lto_priv.241, it5205_write, + raw_read8, tcpc_read.lto_priv.340 ], + [ i2c_write8, i2c_read8, i2c_write16, i2c_read16 ] , [ i2c_write, i2c_read ], + i2c_xfer, i2c_xfer_unlocked, i2c_bitbang_xfer ] +# PD_INT_C0_TASK +# pd_wait_exit_low_power -> reset_device_and_notify can only be called in a pd_task NOT pd_interrupt_handler_task +- [ pd_interrupt_handler_task, fusb302_tcpc_alert, pd_execute_hard_reset, set_state.lto_priv.206, + pd_power_supply_reset, charge_manager_source_port.part.10, charge_manager_save_log.part.9, + charge_manager_fill_power_info, tcpc_read.lto_priv.352, pd_wait_exit_low_power, reset_device_and_notify ] +# CONSOLE_TASK +# pd_wait_exit_low_power -> reset_device_and_notify can only be called in a pd_task NOT pd_interrupt_handler_task +- [ console_task, command_pd, set_state.lto_priv.206, pd_power_supply_reset, charge_manager_source_port.part.10, + charge_manager_save_log.part.9, charge_manager_fill_power_info, tcpc_read.lto_priv.352, pd_wait_exit_low_power, + reset_device_and_notify ] diff --git a/board/fennel/ec.tasklist b/board/fennel/ec.tasklist index 5622d67685..c7f7811cff 100644 --- a/board/fennel/ec.tasklist +++ b/board/fennel/ec.tasklist @@ -7,14 +7,14 @@ * See CONFIG_TASK_LIST in config.h for details. */ #define CONFIG_TASK_LIST \ - TASK_ALWAYS(HOOKS, hook_task, NULL, VENTI_TASK_STACK_SIZE) \ - TASK_ALWAYS(CHARGER, charger_task, NULL, VENTI_TASK_STACK_SIZE) \ + TASK_ALWAYS(HOOKS, hook_task, NULL, 1024) \ + TASK_ALWAYS(CHARGER, charger_task, NULL, 1152) \ TASK_ALWAYS(USB_CHG_P0, usb_charger_task, NULL, VENTI_TASK_STACK_SIZE) \ TASK_NOTEST(CHIPSET, chipset_task, NULL, LARGER_TASK_STACK_SIZE) \ TASK_ALWAYS_RW(MOTIONSENSE, motion_sense_task, NULL, VENTI_TASK_STACK_SIZE) \ TASK_NOTEST(PDCMD, pd_command_task, NULL, 1024) \ - TASK_ALWAYS(HOSTCMD, host_command_task, NULL, 1024) \ - TASK_ALWAYS(CONSOLE, console_task, NULL, VENTI_TASK_STACK_SIZE) \ + TASK_ALWAYS(HOSTCMD, host_command_task, NULL, 1152) \ + TASK_ALWAYS(CONSOLE, console_task, NULL, 1024) \ TASK_NOTEST(KEYSCAN, keyboard_scan_task, NULL, LARGER_TASK_STACK_SIZE) \ TASK_ALWAYS(PD_C0, pd_task, NULL, 1280) \ TASK_ALWAYS(PD_INT_C0, pd_interrupt_handler_task, 0, 1024) \ diff --git a/board/jacuzzi/analyzestack.yaml b/board/jacuzzi/analyzestack.yaml new file mode 100644 index 0000000000..b89da4c25b --- /dev/null +++ b/board/jacuzzi/analyzestack.yaml @@ -0,0 +1,244 @@ +# Check cortex-m/switch.S +exception_frame_size: 64 +add: +# TCPC functions, see fusb302_tcpm_drv struct. + tcpm_init[driver/tcpm/tcpm.h:121]: + - fusb302_tcpm_init + tcpm_release[driver/tcpm/tcpm.h:134]: + - fusb302_tcpm_release, + tcpm_select_rp_value[driver/tcpm/tcpm.h:150]: + - fusb302_tcpm_select_rp_value + tcpm_set_msg_header[driver/tcpm/tcpm.h:170]: + - fusb302_tcpm_set_msg_header + tcpm_enter_low_power_mode[driver/tcpm/tcpm.h:234]: + - fusb302_tcpm_enter_low_power_mode + tcpm_transmit[driver/tcpm/tcpm.h:188]: + - fusb302_tcpm_transmit + tcpm_get_cc[driver/tcpm/tcpm.h:140]: + - fusb302_tcpm_get_cc + tcpm_set_rx_enable[driver/tcpm/tcpm.h:176]: + - fusb302_tcpm_set_rx_enable + tcpm_set_vconn[driver/tcpm/tcpm.h:165]: + - fusb302_tcpm_set_vconn + tcpm_set_polarity[driver/tcpm/tcpm.h:160]: + - fusb302_tcpm_set_polarity + tcpm_set_cc[driver/tcpm/tcpm.h:155]: + - fusb302_tcpm_set_cc + tcpm_get_vbus_level[driver/tcpm/tcpm.h:145]: + - fusb302_tcpm_get_vbus_level + tcpm_enqueue_message[driver/tcpm/tcpci.c:468]: + - fusb302_tcpm_get_message_raw +# USB mux, see it5205_usb_mux_driver + usb_mux_flip[driver/usb_mux/usb_mux.c:164]: #get + - it5205_set_mux + usb_mux_flip[driver/usb_mux/usb_mux.c:175]: #set + - it5205_get_mux + usb_mux_init[driver/usb_mux/usb_mux.c:65]: #init + - it5205_init + usb_mux_init[driver/usb_mux/usb_mux.c:76]: # board_init + - None + enter_low_power_mode[driver/usb_mux/usb_mux.c:43]: + - it5205_enter_low_power_mode + usb_mux_set[driver/usb_mux/usb_mux.c:113]: + - it5205_set_mux + hc_usb_pd_mux_info[driver/usb_mux/usb_mux.c:241]: + - it5205_get_mux + usb_mux_get[driver/usb_mux/usb_mux.c:141]: + - it5205_get_mux +# usb_mux hpd_update + svdm_dp_post_config[baseboard/kukui/usb_pd_policy.c:200]: + - board_hpd_status + svdm_exit_dp_mode[baseboard/kukui/usb_pd_policy.c:263]: + - board_hpd_status + svdm_dp_attention[baseboard/kukui/usb_pd_policy.c:219]: + - board_hpd_status +# USB PD policy, see struct svdm_amode_fx + pd_svdm[common/usb_pd_policy.c:766]: + - svdm_dp_status + - svdm_gfu_status + pd_svdm[common/usb_pd_policy.c:777]: + - svdm_dp_config + - svdm_gfu_config + pd_svdm[common/usb_pd_policy.c:783]: + - svdm_dp_post_config + pd_dfp_enter_mode[common/usb_pd_policy.c:440]: + - svdm_enter_dp_mode + - svdm_enter_gfu_mode + pd_dfp_exit_mode[common/usb_pd_policy.c:544]: + - svdm_exit_dp_mode + - svdm_exit_gfu_mode + dfp_consume_attention[common/usb_pd_policy.c:478]: + - svdm_dp_attention + - svdm_gfu_attention + pd_dfp_exit_mode[common/usb_pd_policy.c:561]: + - svdm_exit_dp_mode + - svdm_exit_gfu_mode +# Motion sense: bmi160 + motion_sense_set_data_rate[common/motion_sense.c:156]: # set_data_rate + - set_data_rate[driver/accelgyro_bmi160.c] + motion_sense_set_data_rate[common/motion_sense.c:175]: # get_data_rate + - get_data_rate[driver/accelgyro_bmi160.c] + motion_sense_set_data_rate[common/motion_sense.c:184]: # get_data_rate + - get_data_rate[driver/accelgyro_bmi160.c] + motion_sense_set_motion_intervals[common/motion_sense.c:302]: # get_data_rate + - get_data_rate[driver/accelgyro_bmi160.c] + motion_sense_set_ec_rate_from_ap[common/motion_sense.c:196]: # get_data_rate + - get_data_rate[driver/accelgyro_bmi160.c] + motion_sense_init[common/motion_sense.c:327]: # init + - init[driver/accelgyro_bmi160.c] + sensor_init_done[common/motion_sense.c:353]: # get_range + - get_range[driver/accelgyro_bmi160.c] + motion_sense_shutdown[common/motion_sense.c:431]: # list_activities + - list_activities[driver/accelgyro_bmi160.c] + motion_sense_shutdown[common/motion_sense.c:437]: # manage_activity + - manage_activity[driver/accelgyro_bmi160.c] + motion_sense_shutdown[common/motion_sense.c:440]: # manage_activity + - manage_activity[driver/accelgyro_bmi160.c] + motion_sense_read[common/motion_sense.c:589]: # read + - read[driver/accelgyro_bmi160.c] + motion_sense_read[common/motion_sense.c:576]: # get_data_rate + - get_data_rate[driver/accelgyro_bmi160.c] + motion_sense_process[common/motion_sense.c:667]: # irq_handler + - irq_handler[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1153]: # set_range + - set_range[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1164]: # get_range + - get_range[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1179]: # set_offset + - set_offset[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1207]: # set_scale + - set_scale[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1233]: # perform_calib + - perform_calib[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1237]: # get_offset + - get_offset[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1313]: # list_activities + - list_activities[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1333]: # list_activities + - list_activities[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1337]: # manage_activity + - manage_activity[driver/accelgyro_bmi160.c] + command_accelrange[common/motion_sense.c:1455]: # set_range + - set_range[driver/accelgyro_bmi160.c] + command_accelrange[common/motion_sense.c:1460]: # get_range + - get_range[driver/accelgyro_bmi160.c] + command_accelresolution[common/motion_sense.c:1504]: # set_resolution + - None + command_accelresolution[common/motion_sense.c:1508]: # get_resolution + - get_resolution[driver/accelgyro_bmi160.c] + command_accel_data_rate[common/motion_sense.c:1560]: # get_data_rate + - get_data_rate[driver/accelgyro_bmi160.c] + command_accel_read_xyz[common/motion_sense.c:1595]: # read + - read[driver/accelgyro_bmi160.c] + +# Core + handle_command[common/console.c:248]: + - { name: __cmds, stride: 16, offset: 4 } + hook_task[common/hooks.c:200]: + - { name: __deferred_funcs, stride: 4, offset: 0 } + - { name: __hooks_second, stride: 8, offset: 0 } + - { name: __hooks_tick, stride: 8, 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/kukui/R*/ec.R*.smap | + # sed -e 's/.*\(__hooks.*\)_end/ - { name: \1, stride: 8, offset: 0 }/' | + # sort -u` + hook_notify[common/hooks.c:130]: + - { 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_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_sysjump, stride: 8, offset: 0 } + - { name: __hooks_tablet_mode_change, stride: 8, offset: 0 } + - { name: __hooks_usb_pd_connect, stride: 8, offset: 0 } + - { name: __hooks_usb_pd_disconnect, stride: 8, offset: 0 } + mkbp_get_next_event[common/mkbp_event.c:369]: + - { name: __mkbp_evt_srcs, stride: 8, offset: 4 } + host_command_process[common/host_command.c:708]: + - { name: __hcmds, stride: 12, offset: 0 } + vfnprintf: + # This covers all the addchar in vfnprintf, but stackanalyzer does not + # realize that... + - __tx_char + host_send_response[common/host_command.c:153]: # send_response + - spi_send_response + host_packet_respond[common/host_command.c:240]: + - spi_send_response_packet +# Misc + i2c_command_passthru[common/i2c_master.c:991]: + - None + cprints[common/console_output.c:108]: + - None # I'm not sure what this is?! + chip_i2c_xfer_with_notify[common/i2c_master.c:112]: # i2c_port->drv->xfer + - i2c_bitbang_xfer + default_handler[core/cortex-m0/init.S:100]: + - exception_panic + gpio_interrupt[chip/stm32/gpio.c:154]: + - None + +remove: +# Remove all callsites pointing to panic_assert_fail. +- panic_assert_fail + +# Remove paths that make no sense +# HOOK_USB_PD_DISCONNECT +- [ pd_request_power_swap, set_state.lto_priv.206, hook_notify, + [ motion_sense_shutdown, charger_enable_psys, charger_disable_psys, + system_common_shutdown ] ] +# HOOK_AC_CHANGE/HOOK_BATTERY_SOC_CHANGE +- [ charger_task, hook_notify, + [ motion_sense_shutdown, system_common_shutdown ] ] +# HOOK_LID_CHANGE +- [ [ lid_switch_open, lid_switch_close ], hook_notify, + [ motion_sense_shutdown, system_common_shutdown ] ] +# HOOK_BASE_ATTACHED_CHANGE/HOOK_TABLET_MODE_CHANGE +- [ tablet_set_mode, hook_notify, [ system_common_shutdown, charger_enable_psys, charger_disable_psys ] ] +# HOOK_POWER_BUTTON_CHANGE +- [ power_button_change_deferred, hook_notify, + [ motion_sense_shutdown, system_common_shutdown ] ] +# HOOK_SECOND +- [ hook_task, hook_notify, [ motion_sense_shutdown, system_common_shutdown ] ] +# HOOK_SYSJUMP +- [ jump_to_image, hook_notify, + [ motion_sense_shutdown, system_common_shutdown, charger_enable_psys, charger_disable_psys ] ] +- [ pd_request_power_swap, set_state, hook_notify, panic_init ] +# set_state(port, PD_STATE_SRC/SNK_SWAP_INIT); will not call these functions +- [ pd_request_power_swap, set_state, + [ pd_dfp_exit_mode, usb_mux_set, pd_power_supply_reset, tcpm_set_vconn ] ] +- [ [ pd_request_data_swap, pd_request_vconn_swap ] , set_state, pd_power_supply_reset ] +# All sensors will be shut down in S5 +- [ motion_sense_shutdown, motion_sense_switch_sensor_rate, + [ motion_sense_set_data_rate, motion_sense_init ] ] +# HOOK_CHIPSET_PRE_INIT, HOOK_CHIPSET_STARTUP, HOOK_CHIPSET_RESUME, +# HOOK_CHIPSET_SUSPEND, HOOK_CHIPSET_SHUTDOWN +- [ chipset_task, hook_notify ] +# TCPC, KEYBOARD, BC12 will not access battery's bitbang +- [ [ raw_read8.lto_priv.157, tcpc_read.lto_priv.352, tcpc_write.lto_priv.351, + it8801_ioex_write, it8801_read, it8801_write.lto_priv.336, raw_read16.lto_priv.349, + raw_write16.lto_priv.348, raw_read8.lto_priv.157 ], + [ i2c_write8, i2c_read8, i2c_write16, i2c_read16 ], [ i2c_write, i2c_read ], + i2c_xfer_unlocked, i2c_bitbang_xfer ] +- [ [ raw_read8.lto_priv.157, tcpc_read.lto_priv.352, tcpc_write.lto_priv.351, + it8801_ioex_write, it8801_read, it8801_write.lto_priv.336, raw_read16.lto_priv.349, + raw_write16.lto_priv.348, raw_read8.lto_priv.157 ], + [ i2c_write8, i2c_read8, i2c_write16, i2c_read16 ] , [ i2c_write, i2c_read ], + i2c_xfer, i2c_xfer_unlocked, i2c_bitbang_xfer ] +# PD_INT_C0_TASK +# pd_wait_exit_low_power -> reset_device_and_notify can only be called in a pd_task NOT pd_interrupt_handler_task +- [ pd_interrupt_handler_task, fusb302_tcpc_alert, pd_execute_hard_reset, set_state.lto_priv.206, + pd_power_supply_reset, charge_manager_source_port.part.10, charge_manager_save_log.part.9, + charge_manager_fill_power_info, tcpc_read.lto_priv.352, pd_wait_exit_low_power, reset_device_and_notify ] +# CONSOLE_TASK +# pd_wait_exit_low_power -> reset_device_and_notify can only be called in a pd_task NOT pd_interrupt_handler_task +- [ console_task, command_pd, set_state.lto_priv.206, pd_power_supply_reset, charge_manager_source_port.part.10, + charge_manager_save_log.part.9, charge_manager_fill_power_info, tcpc_read.lto_priv.352, pd_wait_exit_low_power, + reset_device_and_notify ] diff --git a/board/jacuzzi/ec.tasklist b/board/jacuzzi/ec.tasklist index a1e20808cc..75c10654d3 100644 --- a/board/jacuzzi/ec.tasklist +++ b/board/jacuzzi/ec.tasklist @@ -7,14 +7,14 @@ * See CONFIG_TASK_LIST in config.h for details. */ #define CONFIG_TASK_LIST \ - TASK_ALWAYS(HOOKS, hook_task, NULL, VENTI_TASK_STACK_SIZE) \ - TASK_ALWAYS(CHARGER, charger_task, NULL, VENTI_TASK_STACK_SIZE) \ + TASK_ALWAYS(HOOKS, hook_task, NULL, 1024) \ + TASK_ALWAYS(CHARGER, charger_task, NULL, 1152) \ TASK_ALWAYS(USB_CHG_P0, usb_charger_task, NULL, VENTI_TASK_STACK_SIZE) \ TASK_NOTEST(CHIPSET, chipset_task, NULL, LARGER_TASK_STACK_SIZE) \ TASK_ALWAYS_RW(MOTIONSENSE, motion_sense_task, NULL, VENTI_TASK_STACK_SIZE) \ TASK_NOTEST(PDCMD, pd_command_task, NULL, 1024) \ - TASK_ALWAYS(HOSTCMD, host_command_task, NULL, 1024) \ - TASK_ALWAYS(CONSOLE, console_task, NULL, VENTI_TASK_STACK_SIZE) \ + TASK_ALWAYS(HOSTCMD, host_command_task, NULL, 1152) \ + TASK_ALWAYS(CONSOLE, console_task, NULL, 1024) \ TASK_NOTEST(KEYSCAN, keyboard_scan_task, NULL, LARGER_TASK_STACK_SIZE) \ TASK_ALWAYS(PD_C0, pd_task, NULL, 1280) \ TASK_ALWAYS(PD_INT_C0, pd_interrupt_handler_task, 0, 1024) \ diff --git a/board/kakadu/analyzestack.yaml b/board/kakadu/analyzestack.yaml index 4a057ce818..21d1f66b8b 100644 --- a/board/kakadu/analyzestack.yaml +++ b/board/kakadu/analyzestack.yaml @@ -1,3 +1,271 @@ +# Check cortex-m/switch.S +exception_frame_size: 64 +add: +# TCPC functions, see mt6370_tcpm_drv struct. + tcpm_init[driver/tcpm/tcpm.h:121]: + - mt6370_init + tcpm_release[driver/tcpm/tcpm.h:134]: + - tcpci_tcpm_release + tcpm_select_rp_value[driver/tcpm/tcpm.h:150]: + - tcpci_tcpm_select_rp_value + tcpm_set_msg_header[driver/tcpm/tcpm.h:170]: + - tcpci_tcpm_set_msg_header + tcpm_enable_drp_toggle[driver/tcpm/tcpm.h:227]: + - tcpci_tcpc_drp_toggle + tcpm_enter_low_power_mode[driver/tcpm/tcpm.h:234]: + - mt6370_enter_low_power_mode + tcpm_transmit[driver/tcpm/tcpm.h:188]: + - tcpci_tcpm_transmit + tcpm_get_chip_info[driver/tcpm/tcpm.h:256]: + - tcpci_get_chip_info + tcpm_get_cc[driver/tcpm/tcpm.h:140]: + - mt6370_get_cc + tcpm_set_rx_enable[driver/tcpm/tcpm.h:176]: + - tcpci_tcpm_set_rx_enable + tcpm_set_vconn[driver/tcpm/tcpm.h:165]: + - tcpci_tcpm_set_vconn + tcpm_set_polarity[driver/tcpm/tcpm.h:160]: + - mt6370_set_polarity + tcpm_set_cc[driver/tcpm/tcpm.h:155]: + - mt6370_set_cc + tcpm_get_vbus_level[driver/tcpm/tcpm.h:145]: + - tcpci_tcpm_get_vbus_level + tcpm_enqueue_message[driver/tcpm/tcpci.c:468]: + - tcpci_tcpm_get_message_raw +# USB mux, see it5205_usb_mux_driver + usb_mux_flip[driver/usb_mux/usb_mux.c:164]: #get + - it5205_set_mux + usb_mux_flip[driver/usb_mux/usb_mux.c:175]: #set + - it5205_get_mux + usb_mux_init[driver/usb_mux/usb_mux.c:65]: #init + - it5205_init + usb_mux_init[driver/usb_mux/usb_mux.c:76]: # board_init + - None + enter_low_power_mode[driver/usb_mux/usb_mux.c:43]: + - it5205_enter_low_power_mode + usb_mux_set[driver/usb_mux/usb_mux.c:113]: + - it5205_set_mux + hc_usb_pd_mux_info[driver/usb_mux/usb_mux.c:241]: + - it5205_get_mux + usb_mux_get[driver/usb_mux/usb_mux.c:141]: + - it5205_get_mux +# usb_mux hpd_update + svdm_dp_post_config[baseboard/kukui/usb_pd_policy.c:200]: + - board_hpd_update + svdm_exit_dp_mode[baseboard/kukui/usb_pd_policy.c:263]: + - board_hpd_update + svdm_dp_attention[baseboard/kukui/usb_pd_policy.c:219]: + - board_hpd_update +# USB PD policy, see struct svdm_amode_fx + pd_svdm[common/usb_pd_policy.c:766]: + - svdm_dp_status + - svdm_gfu_status + pd_svdm[common/usb_pd_policy.c:777]: + - svdm_dp_config + - svdm_gfu_config + pd_svdm[common/usb_pd_policy.c:783]: + - svdm_dp_post_config + pd_dfp_enter_mode[common/usb_pd_policy.c:440]: + - svdm_enter_dp_mode + - svdm_enter_gfu_mode + pd_dfp_exit_mode[common/usb_pd_policy.c:544]: + - svdm_exit_dp_mode + - svdm_exit_gfu_mode + dfp_consume_attention[common/usb_pd_policy.c:478]: + - svdm_dp_attention + - svdm_gfu_attention + pd_dfp_exit_mode[common/usb_pd_policy.c:561]: + - svdm_exit_dp_mode + - svdm_exit_gfu_mode +# Motion sense: bmi160 and tcs3400_drv, tcs3400_rgb_drv + motion_sense_set_data_rate[common/motion_sense.c:156]: # set_data_rate + - tcs3400_set_data_rate + - tcs3400_rgb_set_data_rate + - set_data_rate[driver/accelgyro_bmi160.c] + motion_sense_set_data_rate[common/motion_sense.c:175]: # get_data_rate + - tcs3400_get_data_rate + - tcs3400_rgb_get_data_rate + - get_data_rate[driver/accelgyro_bmi160.c] + motion_sense_set_data_rate[common/motion_sense.c:184]: # get_data_rate + - tcs3400_get_data_rate + - tcs3400_rgb_get_data_rate + - get_data_rate[driver/accelgyro_bmi160.c] + motion_sense_set_motion_intervals[common/motion_sense.c:302]: # get_data_rate + - tcs3400_get_data_rate + - tcs3400_rgb_get_data_rate + - get_data_rate[driver/accelgyro_bmi160.c] + motion_sense_set_ec_rate_from_ap[common/motion_sense.c:196]: # get_data_rate + - tcs3400_get_data_rate + - tcs3400_rgb_get_data_rate + - get_data_rate[driver/accelgyro_bmi160.c] + motion_sense_init[common/motion_sense.c:327]: # init + - tcs3400_init + - tcs3400_rgb_init + - init[driver/accelgyro_bmi160.c] + sensor_init_done[common/motion_sense.c:353]: # get_range + - tcs3400_get_range + - get_range[driver/accelgyro_bmi160.c] + - set_range[driver/accelgyro_bmi160.c] + motion_sense_shutdown[common/motion_sense.c:431]: # list_activities + - list_activities[driver/accelgyro_bmi160.c] + motion_sense_shutdown[common/motion_sense.c:437]: # manage_activity + - manage_activity[driver/accelgyro_bmi160.c] + motion_sense_shutdown[common/motion_sense.c:440]: # manage_activity + - manage_activity[driver/accelgyro_bmi160.c] + motion_sense_read[common/motion_sense.c:589]: # read + - tcs3400_read + - tcs3400_rgb_read + - read[driver/accelgyro_bmi160.c] + motion_sense_read[common/motion_sense.c:576]: # get_data_rate + - tcs3400_get_data_rate + - tcs3400_rgb_get_data_rate + - get_data_rate[driver/accelgyro_bmi160.c] + motion_sense_process[common/motion_sense.c:667]: # irq_handler + - tcs3400_irq_handler + - irq_handler[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1153]: # set_range + - tcs3400_set_range + - set_range[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1164]: # get_range + - tcs3400_get_range + - get_range[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1179]: # set_offset + - tcs3400_set_offset + - tcs3400_rgb_set_offset + - set_offset[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1207]: # set_scale + - tcs3400_set_scale + - tcs3400_rgb_set_scale + - set_scale[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1233]: # perform_calib + - tcs3400_perform_calib + - perform_calib[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1237]: # get_offset + - tcs3400_get_offset + - tcs3400_rgb_get_offset + - get_offset[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1313]: # list_activities + - list_activities[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1333]: # list_activities + - list_activities[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1337]: # manage_activity + - manage_activity[driver/accelgyro_bmi160.c] + command_accelrange[common/motion_sense.c:1455]: # set_range + - tcs3400_set_range + - set_range[driver/accelgyro_bmi160.c] + command_accelrange[common/motion_sense.c:1460]: # get_range + - tcs3400_get_range + - get_range[driver/accelgyro_bmi160.c] + command_accelresolution[common/motion_sense.c:1504]: # set_resolution + - None + command_accelresolution[common/motion_sense.c:1508]: # get_resolution + - get_resolution[driver/accelgyro_bmi160.c] + command_accel_data_rate[common/motion_sense.c:1560]: # get_data_rate + - tcs3400_get_data_rate + - tcs3400_rgb_get_data_rate + - get_data_rate[driver/accelgyro_bmi160.c] + command_accel_read_xyz[common/motion_sense.c:1595]: # read + - tcs3400_read + - tcs3400_rgb_read + - read[driver/accelgyro_bmi160.c] + config_interrupt[driver/accelgyro_bmi160.c:1073]: # get_range + - get_range[driver/accelgyro_bmi160.c] + +# Core + handle_command[common/console.c:248]: + - { name: __cmds, stride: 16, offset: 4 } + hook_task[common/hooks.c:200]: + - { name: __deferred_funcs, stride: 4, offset: 0 } + - { name: __hooks_second, stride: 8, offset: 0 } + - { name: __hooks_tick, stride: 8, 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/kukui/R*/ec.R*.smap | + # sed -e 's/.*\(__hooks.*\)_end/ - { name: \1, stride: 8, offset: 0 }/' | + # sort -u` + hook_notify[common/hooks.c:130]: + - { 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_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_sysjump, stride: 8, offset: 0 } + - { name: __hooks_tablet_mode_change, stride: 8, offset: 0 } + - { name: __hooks_usb_pd_connect, stride: 8, offset: 0 } + - { name: __hooks_usb_pd_disconnect, stride: 8, offset: 0 } + mkbp_get_next_event[common/mkbp_event.c:369]: + - { name: __mkbp_evt_srcs, stride: 8, offset: 4 } + host_command_process[common/host_command.c:708]: + - { name: __hcmds, stride: 12, offset: 0 } + vfnprintf: + # This covers all the addchar in vfnprintf, but stackanalyzer does not + # realize that... + - __tx_char + host_send_response[common/host_command.c:153]: # send_response + - spi_send_response + host_packet_respond[common/host_command.c:240]: + - spi_send_response_packet +# Misc + i2c_command_passthru[common/i2c_master.c:991]: + - None + cprints[common/console_output.c:108]: + - None # I'm not sure what this is?! + chip_i2c_xfer_with_notify[common/i2c_master.c:112]: # i2c_port->drv->xfer + - i2c_bitbang_xfer + default_handler[core/cortex-m0/init.S:100]: + - exception_panic + rt946x_enable_hz[driver/charger/rt946x.c:370]: + - rt946x_set_bit + - rt946x_clr_bit + gpio_interrupt[chip/stm32/gpio.c:154]: + - None + remove: # Remove all callsites pointing to panic_assert_fail. - panic_assert_fail + +# Remove paths that make no sense +# HOOK_USB_PD_DISCONNECT +- [ pd_request_power_swap, set_state.lto_priv.196, hook_notify, + [ debug_mode_handle, motion_sense_shutdown, rt946x_usb_connect, + system_common_shutdown, board_charge_termination] ] +- [ hook_task, resume_pd_port.lto_priv.263, pd_set_suspend, + set_state.lto_priv.194, hook_notify, rt946x_usb_connect ] +# HOOK_AC_CHANGE/HOOK_BATTERY_SOC_CHANGE +- [ [ check_ac_state, charger_task ], hook_notify, + [ debug_mode_handle, motion_sense_shutdown, rt946x_usb_connect, system_common_shutdown] ] +# HOOK_LID_CHANGE +- [ [ lid_switch_open, lid_switch_close ], hook_notify, + [ motion_sense_shutdown, system_common_shutdown] ] +# HOOK_BASE_ATTACHED_CHANGE +- [ base_set_state, hook_notify, system_common_shutdown ] +# HOOK_POWER_BUTTON_CHANGE +- [ power_button_change_deferred, hook_notify, + [ motion_sense_shutdown, system_common_shutdown] ] +# HOOK_SECOND +- [ hook_task, hook_notify, [ motion_sense_shutdown, system_common_shutdown ] ] +- [ hook_task, resume_pd_port.lto_priv.263, pd_set_suspend, + set_state.lto_priv.194, hook_notify, [ motion_sense_shutdown, + system_common_shutdown ] ] +# HOOK_SYSJUMP +- [ jump_to_image, hook_notify, + [ debug_mode_handle, motion_sense_shutdown, rt946x_usb_connect, system_common_shutdown] ] +- [ pd_request_power_swap, set_state, hook_notify, panic_init ] +# set_state(port, PD_STATE_SRC/SNK_SWAP_INIT); will not call these functions +- [ pd_request_power_swap, set_state, + [ pd_dfp_exit_mode, usb_mux_set, pd_power_supply_reset, tcpm_set_vconn ] ] +- [ [ pd_request_data_swap, pd_request_vconn_swap ] , set_state, pd_power_supply_reset ] +# All sensors will be shut down in S5 +- [ motion_sense_shutdown, motion_sense_switch_sensor_rate, + [ motion_sense_set_data_rate, motion_sense_init ] ] +# HOOK_CHIPSET_PRE_INIT, HOOK_CHIPSET_STARTUP, HOOK_CHIPSET_RESUME, +# HOOK_CHIPSET_SUSPEND, HOOK_CHIPSET_SHUTDOWN +- [ chipset_task, hook_notify, [ rt946x_usb_connect, debug_mode_handle ] ] diff --git a/board/kakadu/ec.tasklist b/board/kakadu/ec.tasklist index 20f30efbd2..e2e02df0eb 100644 --- a/board/kakadu/ec.tasklist +++ b/board/kakadu/ec.tasklist @@ -7,13 +7,13 @@ * See CONFIG_TASK_LIST in config.h for details. */ #define CONFIG_TASK_LIST \ - TASK_ALWAYS(HOOKS, hook_task, NULL, VENTI_TASK_STACK_SIZE) \ + TASK_ALWAYS(HOOKS, hook_task, NULL, 1024) \ TASK_ALWAYS(CHARGER, charger_task, NULL, VENTI_TASK_STACK_SIZE) \ TASK_ALWAYS(USB_CHG, usb_charger_task, NULL, 832) \ TASK_NOTEST(CHIPSET, chipset_task, NULL, VENTI_TASK_STACK_SIZE) \ TASK_ALWAYS_RW(MOTIONSENSE, motion_sense_task, NULL, VENTI_TASK_STACK_SIZE) \ TASK_NOTEST(PDCMD, pd_command_task, NULL, 1024) \ - TASK_ALWAYS(HOSTCMD, host_command_task, NULL, 1088) \ + TASK_ALWAYS(HOSTCMD, host_command_task, NULL, 1152) \ TASK_ALWAYS(CONSOLE, console_task, NULL, 1152) \ TASK_ALWAYS(PD_C0, pd_task, NULL, 1280) \ TASK_ALWAYS(PD_INT_C0, pd_interrupt_handler_task, 0, 1088) \ diff --git a/board/kappa/analyzestack.yaml b/board/kappa/analyzestack.yaml new file mode 100644 index 0000000000..b89da4c25b --- /dev/null +++ b/board/kappa/analyzestack.yaml @@ -0,0 +1,244 @@ +# Check cortex-m/switch.S +exception_frame_size: 64 +add: +# TCPC functions, see fusb302_tcpm_drv struct. + tcpm_init[driver/tcpm/tcpm.h:121]: + - fusb302_tcpm_init + tcpm_release[driver/tcpm/tcpm.h:134]: + - fusb302_tcpm_release, + tcpm_select_rp_value[driver/tcpm/tcpm.h:150]: + - fusb302_tcpm_select_rp_value + tcpm_set_msg_header[driver/tcpm/tcpm.h:170]: + - fusb302_tcpm_set_msg_header + tcpm_enter_low_power_mode[driver/tcpm/tcpm.h:234]: + - fusb302_tcpm_enter_low_power_mode + tcpm_transmit[driver/tcpm/tcpm.h:188]: + - fusb302_tcpm_transmit + tcpm_get_cc[driver/tcpm/tcpm.h:140]: + - fusb302_tcpm_get_cc + tcpm_set_rx_enable[driver/tcpm/tcpm.h:176]: + - fusb302_tcpm_set_rx_enable + tcpm_set_vconn[driver/tcpm/tcpm.h:165]: + - fusb302_tcpm_set_vconn + tcpm_set_polarity[driver/tcpm/tcpm.h:160]: + - fusb302_tcpm_set_polarity + tcpm_set_cc[driver/tcpm/tcpm.h:155]: + - fusb302_tcpm_set_cc + tcpm_get_vbus_level[driver/tcpm/tcpm.h:145]: + - fusb302_tcpm_get_vbus_level + tcpm_enqueue_message[driver/tcpm/tcpci.c:468]: + - fusb302_tcpm_get_message_raw +# USB mux, see it5205_usb_mux_driver + usb_mux_flip[driver/usb_mux/usb_mux.c:164]: #get + - it5205_set_mux + usb_mux_flip[driver/usb_mux/usb_mux.c:175]: #set + - it5205_get_mux + usb_mux_init[driver/usb_mux/usb_mux.c:65]: #init + - it5205_init + usb_mux_init[driver/usb_mux/usb_mux.c:76]: # board_init + - None + enter_low_power_mode[driver/usb_mux/usb_mux.c:43]: + - it5205_enter_low_power_mode + usb_mux_set[driver/usb_mux/usb_mux.c:113]: + - it5205_set_mux + hc_usb_pd_mux_info[driver/usb_mux/usb_mux.c:241]: + - it5205_get_mux + usb_mux_get[driver/usb_mux/usb_mux.c:141]: + - it5205_get_mux +# usb_mux hpd_update + svdm_dp_post_config[baseboard/kukui/usb_pd_policy.c:200]: + - board_hpd_status + svdm_exit_dp_mode[baseboard/kukui/usb_pd_policy.c:263]: + - board_hpd_status + svdm_dp_attention[baseboard/kukui/usb_pd_policy.c:219]: + - board_hpd_status +# USB PD policy, see struct svdm_amode_fx + pd_svdm[common/usb_pd_policy.c:766]: + - svdm_dp_status + - svdm_gfu_status + pd_svdm[common/usb_pd_policy.c:777]: + - svdm_dp_config + - svdm_gfu_config + pd_svdm[common/usb_pd_policy.c:783]: + - svdm_dp_post_config + pd_dfp_enter_mode[common/usb_pd_policy.c:440]: + - svdm_enter_dp_mode + - svdm_enter_gfu_mode + pd_dfp_exit_mode[common/usb_pd_policy.c:544]: + - svdm_exit_dp_mode + - svdm_exit_gfu_mode + dfp_consume_attention[common/usb_pd_policy.c:478]: + - svdm_dp_attention + - svdm_gfu_attention + pd_dfp_exit_mode[common/usb_pd_policy.c:561]: + - svdm_exit_dp_mode + - svdm_exit_gfu_mode +# Motion sense: bmi160 + motion_sense_set_data_rate[common/motion_sense.c:156]: # set_data_rate + - set_data_rate[driver/accelgyro_bmi160.c] + motion_sense_set_data_rate[common/motion_sense.c:175]: # get_data_rate + - get_data_rate[driver/accelgyro_bmi160.c] + motion_sense_set_data_rate[common/motion_sense.c:184]: # get_data_rate + - get_data_rate[driver/accelgyro_bmi160.c] + motion_sense_set_motion_intervals[common/motion_sense.c:302]: # get_data_rate + - get_data_rate[driver/accelgyro_bmi160.c] + motion_sense_set_ec_rate_from_ap[common/motion_sense.c:196]: # get_data_rate + - get_data_rate[driver/accelgyro_bmi160.c] + motion_sense_init[common/motion_sense.c:327]: # init + - init[driver/accelgyro_bmi160.c] + sensor_init_done[common/motion_sense.c:353]: # get_range + - get_range[driver/accelgyro_bmi160.c] + motion_sense_shutdown[common/motion_sense.c:431]: # list_activities + - list_activities[driver/accelgyro_bmi160.c] + motion_sense_shutdown[common/motion_sense.c:437]: # manage_activity + - manage_activity[driver/accelgyro_bmi160.c] + motion_sense_shutdown[common/motion_sense.c:440]: # manage_activity + - manage_activity[driver/accelgyro_bmi160.c] + motion_sense_read[common/motion_sense.c:589]: # read + - read[driver/accelgyro_bmi160.c] + motion_sense_read[common/motion_sense.c:576]: # get_data_rate + - get_data_rate[driver/accelgyro_bmi160.c] + motion_sense_process[common/motion_sense.c:667]: # irq_handler + - irq_handler[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1153]: # set_range + - set_range[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1164]: # get_range + - get_range[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1179]: # set_offset + - set_offset[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1207]: # set_scale + - set_scale[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1233]: # perform_calib + - perform_calib[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1237]: # get_offset + - get_offset[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1313]: # list_activities + - list_activities[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1333]: # list_activities + - list_activities[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1337]: # manage_activity + - manage_activity[driver/accelgyro_bmi160.c] + command_accelrange[common/motion_sense.c:1455]: # set_range + - set_range[driver/accelgyro_bmi160.c] + command_accelrange[common/motion_sense.c:1460]: # get_range + - get_range[driver/accelgyro_bmi160.c] + command_accelresolution[common/motion_sense.c:1504]: # set_resolution + - None + command_accelresolution[common/motion_sense.c:1508]: # get_resolution + - get_resolution[driver/accelgyro_bmi160.c] + command_accel_data_rate[common/motion_sense.c:1560]: # get_data_rate + - get_data_rate[driver/accelgyro_bmi160.c] + command_accel_read_xyz[common/motion_sense.c:1595]: # read + - read[driver/accelgyro_bmi160.c] + +# Core + handle_command[common/console.c:248]: + - { name: __cmds, stride: 16, offset: 4 } + hook_task[common/hooks.c:200]: + - { name: __deferred_funcs, stride: 4, offset: 0 } + - { name: __hooks_second, stride: 8, offset: 0 } + - { name: __hooks_tick, stride: 8, 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/kukui/R*/ec.R*.smap | + # sed -e 's/.*\(__hooks.*\)_end/ - { name: \1, stride: 8, offset: 0 }/' | + # sort -u` + hook_notify[common/hooks.c:130]: + - { 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_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_sysjump, stride: 8, offset: 0 } + - { name: __hooks_tablet_mode_change, stride: 8, offset: 0 } + - { name: __hooks_usb_pd_connect, stride: 8, offset: 0 } + - { name: __hooks_usb_pd_disconnect, stride: 8, offset: 0 } + mkbp_get_next_event[common/mkbp_event.c:369]: + - { name: __mkbp_evt_srcs, stride: 8, offset: 4 } + host_command_process[common/host_command.c:708]: + - { name: __hcmds, stride: 12, offset: 0 } + vfnprintf: + # This covers all the addchar in vfnprintf, but stackanalyzer does not + # realize that... + - __tx_char + host_send_response[common/host_command.c:153]: # send_response + - spi_send_response + host_packet_respond[common/host_command.c:240]: + - spi_send_response_packet +# Misc + i2c_command_passthru[common/i2c_master.c:991]: + - None + cprints[common/console_output.c:108]: + - None # I'm not sure what this is?! + chip_i2c_xfer_with_notify[common/i2c_master.c:112]: # i2c_port->drv->xfer + - i2c_bitbang_xfer + default_handler[core/cortex-m0/init.S:100]: + - exception_panic + gpio_interrupt[chip/stm32/gpio.c:154]: + - None + +remove: +# Remove all callsites pointing to panic_assert_fail. +- panic_assert_fail + +# Remove paths that make no sense +# HOOK_USB_PD_DISCONNECT +- [ pd_request_power_swap, set_state.lto_priv.206, hook_notify, + [ motion_sense_shutdown, charger_enable_psys, charger_disable_psys, + system_common_shutdown ] ] +# HOOK_AC_CHANGE/HOOK_BATTERY_SOC_CHANGE +- [ charger_task, hook_notify, + [ motion_sense_shutdown, system_common_shutdown ] ] +# HOOK_LID_CHANGE +- [ [ lid_switch_open, lid_switch_close ], hook_notify, + [ motion_sense_shutdown, system_common_shutdown ] ] +# HOOK_BASE_ATTACHED_CHANGE/HOOK_TABLET_MODE_CHANGE +- [ tablet_set_mode, hook_notify, [ system_common_shutdown, charger_enable_psys, charger_disable_psys ] ] +# HOOK_POWER_BUTTON_CHANGE +- [ power_button_change_deferred, hook_notify, + [ motion_sense_shutdown, system_common_shutdown ] ] +# HOOK_SECOND +- [ hook_task, hook_notify, [ motion_sense_shutdown, system_common_shutdown ] ] +# HOOK_SYSJUMP +- [ jump_to_image, hook_notify, + [ motion_sense_shutdown, system_common_shutdown, charger_enable_psys, charger_disable_psys ] ] +- [ pd_request_power_swap, set_state, hook_notify, panic_init ] +# set_state(port, PD_STATE_SRC/SNK_SWAP_INIT); will not call these functions +- [ pd_request_power_swap, set_state, + [ pd_dfp_exit_mode, usb_mux_set, pd_power_supply_reset, tcpm_set_vconn ] ] +- [ [ pd_request_data_swap, pd_request_vconn_swap ] , set_state, pd_power_supply_reset ] +# All sensors will be shut down in S5 +- [ motion_sense_shutdown, motion_sense_switch_sensor_rate, + [ motion_sense_set_data_rate, motion_sense_init ] ] +# HOOK_CHIPSET_PRE_INIT, HOOK_CHIPSET_STARTUP, HOOK_CHIPSET_RESUME, +# HOOK_CHIPSET_SUSPEND, HOOK_CHIPSET_SHUTDOWN +- [ chipset_task, hook_notify ] +# TCPC, KEYBOARD, BC12 will not access battery's bitbang +- [ [ raw_read8.lto_priv.157, tcpc_read.lto_priv.352, tcpc_write.lto_priv.351, + it8801_ioex_write, it8801_read, it8801_write.lto_priv.336, raw_read16.lto_priv.349, + raw_write16.lto_priv.348, raw_read8.lto_priv.157 ], + [ i2c_write8, i2c_read8, i2c_write16, i2c_read16 ], [ i2c_write, i2c_read ], + i2c_xfer_unlocked, i2c_bitbang_xfer ] +- [ [ raw_read8.lto_priv.157, tcpc_read.lto_priv.352, tcpc_write.lto_priv.351, + it8801_ioex_write, it8801_read, it8801_write.lto_priv.336, raw_read16.lto_priv.349, + raw_write16.lto_priv.348, raw_read8.lto_priv.157 ], + [ i2c_write8, i2c_read8, i2c_write16, i2c_read16 ] , [ i2c_write, i2c_read ], + i2c_xfer, i2c_xfer_unlocked, i2c_bitbang_xfer ] +# PD_INT_C0_TASK +# pd_wait_exit_low_power -> reset_device_and_notify can only be called in a pd_task NOT pd_interrupt_handler_task +- [ pd_interrupt_handler_task, fusb302_tcpc_alert, pd_execute_hard_reset, set_state.lto_priv.206, + pd_power_supply_reset, charge_manager_source_port.part.10, charge_manager_save_log.part.9, + charge_manager_fill_power_info, tcpc_read.lto_priv.352, pd_wait_exit_low_power, reset_device_and_notify ] +# CONSOLE_TASK +# pd_wait_exit_low_power -> reset_device_and_notify can only be called in a pd_task NOT pd_interrupt_handler_task +- [ console_task, command_pd, set_state.lto_priv.206, pd_power_supply_reset, charge_manager_source_port.part.10, + charge_manager_save_log.part.9, charge_manager_fill_power_info, tcpc_read.lto_priv.352, pd_wait_exit_low_power, + reset_device_and_notify ] diff --git a/board/kappa/ec.tasklist b/board/kappa/ec.tasklist index a1e20808cc..13fd1821ae 100644 --- a/board/kappa/ec.tasklist +++ b/board/kappa/ec.tasklist @@ -7,14 +7,14 @@ * See CONFIG_TASK_LIST in config.h for details. */ #define CONFIG_TASK_LIST \ - TASK_ALWAYS(HOOKS, hook_task, NULL, VENTI_TASK_STACK_SIZE) \ - TASK_ALWAYS(CHARGER, charger_task, NULL, VENTI_TASK_STACK_SIZE) \ - TASK_ALWAYS(USB_CHG_P0, usb_charger_task, NULL, VENTI_TASK_STACK_SIZE) \ + TASK_ALWAYS(HOOKS, hook_task, NULL, 1024) \ + TASK_ALWAYS(CHARGER, charger_task, NULL, 1152) \ + TASK_ALWAYS(USB_CHG_P0, usb_charger_task, NULL, 1024) \ TASK_NOTEST(CHIPSET, chipset_task, NULL, LARGER_TASK_STACK_SIZE) \ TASK_ALWAYS_RW(MOTIONSENSE, motion_sense_task, NULL, VENTI_TASK_STACK_SIZE) \ TASK_NOTEST(PDCMD, pd_command_task, NULL, 1024) \ - TASK_ALWAYS(HOSTCMD, host_command_task, NULL, 1024) \ - TASK_ALWAYS(CONSOLE, console_task, NULL, VENTI_TASK_STACK_SIZE) \ + TASK_ALWAYS(HOSTCMD, host_command_task, NULL, 1152) \ + TASK_ALWAYS(CONSOLE, console_task, NULL, 1024) \ TASK_NOTEST(KEYSCAN, keyboard_scan_task, NULL, LARGER_TASK_STACK_SIZE) \ TASK_ALWAYS(PD_C0, pd_task, NULL, 1280) \ TASK_ALWAYS(PD_INT_C0, pd_interrupt_handler_task, 0, 1024) \ diff --git a/board/kodama/analyzestack.yaml b/board/kodama/analyzestack.yaml index 4a057ce818..e2f93ab763 100644 --- a/board/kodama/analyzestack.yaml +++ b/board/kodama/analyzestack.yaml @@ -1,3 +1,288 @@ +# Check cortex-m/switch.S +exception_frame_size: 64 +add: +# TCPC functions, see mt6370_tcpm_drv struct. + tcpm_init[driver/tcpm/tcpm.h:121]: + - mt6370_init + tcpm_release[driver/tcpm/tcpm.h:134]: + - tcpci_tcpm_release + tcpm_select_rp_value[driver/tcpm/tcpm.h:150]: + - tcpci_tcpm_select_rp_value + tcpm_set_msg_header[driver/tcpm/tcpm.h:170]: + - tcpci_tcpm_set_msg_header + tcpm_enable_drp_toggle[driver/tcpm/tcpm.h:227]: + - tcpci_tcpc_drp_toggle + tcpm_enter_low_power_mode[driver/tcpm/tcpm.h:234]: + - mt6370_enter_low_power_mode + tcpm_transmit[driver/tcpm/tcpm.h:188]: + - tcpci_tcpm_transmit + tcpm_get_chip_info[driver/tcpm/tcpm.h:256]: + - tcpci_get_chip_info + tcpm_get_cc[driver/tcpm/tcpm.h:140]: + - mt6370_get_cc + tcpm_set_rx_enable[driver/tcpm/tcpm.h:176]: + - tcpci_tcpm_set_rx_enable + tcpm_set_vconn[driver/tcpm/tcpm.h:165]: + - tcpci_tcpm_set_vconn + tcpm_set_polarity[driver/tcpm/tcpm.h:160]: + - mt6370_set_polarity + tcpm_set_cc[driver/tcpm/tcpm.h:155]: + - mt6370_set_cc + tcpm_get_vbus_level[driver/tcpm/tcpm.h:145]: + - tcpci_tcpm_get_vbus_level + tcpm_enqueue_message[driver/tcpm/tcpci.c:468]: + - tcpci_tcpm_get_message_raw +# USB mux, see it5205_usb_mux_driver + usb_mux_flip[driver/usb_mux/usb_mux.c:164]: #get + - it5205_set_mux + usb_mux_flip[driver/usb_mux/usb_mux.c:175]: #set + - it5205_get_mux + usb_mux_init[driver/usb_mux/usb_mux.c:65]: #init + - it5205_init + usb_mux_init[driver/usb_mux/usb_mux.c:76]: # board_init + - None + enter_low_power_mode[driver/usb_mux/usb_mux.c:43]: + - it5205_enter_low_power_mode + usb_mux_set[driver/usb_mux/usb_mux.c:113]: + - it5205_set_mux + hc_usb_pd_mux_info[driver/usb_mux/usb_mux.c:241]: + - it5205_get_mux + usb_mux_get[driver/usb_mux/usb_mux.c:141]: + - it5205_get_mux +# usb_mux hpd_update + svdm_dp_post_config[baseboard/kukui/usb_pd_policy.c:200]: + - board_hpd_update + svdm_exit_dp_mode[baseboard/kukui/usb_pd_policy.c:263]: + - board_hpd_update + svdm_dp_attention[baseboard/kukui/usb_pd_policy.c:219]: + - board_hpd_update +# USB PD policy, see struct svdm_amode_fx + pd_svdm[common/usb_pd_policy.c:766]: + - svdm_dp_status + - svdm_gfu_status + pd_svdm[common/usb_pd_policy.c:777]: + - svdm_dp_config + - svdm_gfu_config + pd_svdm[common/usb_pd_policy.c:783]: + - svdm_dp_post_config + pd_dfp_enter_mode[common/usb_pd_policy.c:440]: + - svdm_enter_dp_mode + - svdm_enter_gfu_mode + pd_dfp_exit_mode[common/usb_pd_policy.c:544]: + - svdm_exit_dp_mode + - svdm_exit_gfu_mode + dfp_consume_attention[common/usb_pd_policy.c:478]: + - svdm_dp_attention + - svdm_gfu_attention + pd_dfp_exit_mode[common/usb_pd_policy.c:561]: + - svdm_exit_dp_mode + - svdm_exit_gfu_mode +# Motion sense: bmi160 and tcs3400_drv, tcs3400_rgb_drv + motion_sense_set_data_rate[common/motion_sense.c:156]: # set_data_rate + - tcs3400_set_data_rate + - tcs3400_rgb_set_data_rate + - set_data_rate[driver/accelgyro_bmi160.c] + motion_sense_set_data_rate[common/motion_sense.c:175]: # get_data_rate + - tcs3400_get_data_rate + - tcs3400_rgb_get_data_rate + - get_data_rate[driver/accelgyro_bmi160.c] + motion_sense_set_data_rate[common/motion_sense.c:184]: # get_data_rate + - tcs3400_get_data_rate + - tcs3400_rgb_get_data_rate + - get_data_rate[driver/accelgyro_bmi160.c] + motion_sense_set_motion_intervals[common/motion_sense.c:302]: # get_data_rate + - tcs3400_get_data_rate + - tcs3400_rgb_get_data_rate + - get_data_rate[driver/accelgyro_bmi160.c] + motion_sense_set_ec_rate_from_ap[common/motion_sense.c:196]: # get_data_rate + - tcs3400_get_data_rate + - tcs3400_rgb_get_data_rate + - get_data_rate[driver/accelgyro_bmi160.c] + motion_sense_init[common/motion_sense.c:327]: # init + - tcs3400_init + - tcs3400_rgb_init + - init[driver/accelgyro_bmi160.c] + sensor_init_done[common/motion_sense.c:353]: # get_range + - tcs3400_get_range + - get_range[driver/accelgyro_bmi160.c] + - set_range[driver/accelgyro_bmi160.c] + motion_sense_shutdown[common/motion_sense.c:431]: # list_activities + - list_activities[driver/accelgyro_bmi160.c] + motion_sense_shutdown[common/motion_sense.c:437]: # manage_activity + - manage_activity[driver/accelgyro_bmi160.c] + motion_sense_shutdown[common/motion_sense.c:440]: # manage_activity + - manage_activity[driver/accelgyro_bmi160.c] + motion_sense_read[common/motion_sense.c:589]: # read + - tcs3400_read + - tcs3400_rgb_read + - read[driver/accelgyro_bmi160.c] + motion_sense_read[common/motion_sense.c:576]: # get_data_rate + - tcs3400_get_data_rate + - tcs3400_rgb_get_data_rate + - get_data_rate[driver/accelgyro_bmi160.c] + motion_sense_process[common/motion_sense.c:667]: # irq_handler + - tcs3400_irq_handler + - irq_handler[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1153]: # set_range + - tcs3400_set_range + - set_range[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1164]: # get_range + - tcs3400_get_range + - get_range[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1179]: # set_offset + - tcs3400_set_offset + - tcs3400_rgb_set_offset + - set_offset[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1207]: # set_scale + - tcs3400_set_scale + - tcs3400_rgb_set_scale + - set_scale[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1233]: # perform_calib + - tcs3400_perform_calib + - perform_calib[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1237]: # get_offset + - tcs3400_get_offset + - tcs3400_rgb_get_offset + - get_offset[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1313]: # list_activities + - list_activities[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1333]: # list_activities + - list_activities[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1337]: # manage_activity + - manage_activity[driver/accelgyro_bmi160.c] + command_accelrange[common/motion_sense.c:1455]: # set_range + - tcs3400_set_range + - set_range[driver/accelgyro_bmi160.c] + command_accelrange[common/motion_sense.c:1460]: # get_range + - tcs3400_get_range + - get_range[driver/accelgyro_bmi160.c] + command_accelresolution[common/motion_sense.c:1504]: # set_resolution + - None + command_accelresolution[common/motion_sense.c:1508]: # get_resolution + - get_resolution[driver/accelgyro_bmi160.c] + command_accel_data_rate[common/motion_sense.c:1560]: # get_data_rate + - tcs3400_get_data_rate + - tcs3400_rgb_get_data_rate + - get_data_rate[driver/accelgyro_bmi160.c] + command_accel_read_xyz[common/motion_sense.c:1595]: # read + - tcs3400_read + - tcs3400_rgb_read + - read[driver/accelgyro_bmi160.c] + config_interrupt[driver/accelgyro_bmi160.c:1073]: # get_range + - get_range[driver/accelgyro_bmi160.c] + +# Core + handle_command[common/console.c:248]: + - { name: __cmds, stride: 16, offset: 4 } + hook_task[common/hooks.c:200]: + - { name: __deferred_funcs, stride: 4, offset: 0 } + - { name: __hooks_second, stride: 8, offset: 0 } + - { name: __hooks_tick, stride: 8, 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/kukui/R*/ec.R*.smap | + # sed -e 's/.*\(__hooks.*\)_end/ - { name: \1, stride: 8, offset: 0 }/' | + # sort -u` + hook_notify[common/hooks.c:130]: + - { 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_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_sysjump, stride: 8, offset: 0 } + - { name: __hooks_tablet_mode_change, stride: 8, offset: 0 } + - { name: __hooks_usb_pd_connect, stride: 8, offset: 0 } + - { name: __hooks_usb_pd_disconnect, stride: 8, offset: 0 } + mkbp_get_next_event[common/mkbp_event.c:369]: + - { name: __mkbp_evt_srcs, stride: 8, offset: 4 } + host_command_process[common/host_command.c:708]: + - { name: __hcmds, stride: 12, offset: 0 } + vfnprintf: + # This covers all the addchar in vfnprintf, but stackanalyzer does not + # realize that... + - __tx_char + host_send_response[common/host_command.c:153]: # send_response + - spi_send_response + host_packet_respond[common/host_command.c:240]: + - spi_send_response_packet +# Misc + i2c_command_passthru[common/i2c_master.c:991]: + - None + cprints[common/console_output.c:108]: + - None # I'm not sure what this is?! + chip_i2c_xfer_with_notify[common/i2c_master.c:112]: # i2c_port->drv->xfer + - i2c_bitbang_xfer + default_handler[core/cortex-m0/init.S:100]: + - exception_panic + rt946x_enable_hz[driver/charger/rt946x.c:370]: + - rt946x_set_bit + - rt946x_clr_bit + gpio_interrupt[chip/stm32/gpio.c:154]: + - None + remove: # Remove all callsites pointing to panic_assert_fail. - panic_assert_fail + +# Remove paths that make no sense +# HOOK_USB_PD_DISCONNECT +- [ pd_request_power_swap, set_state.lto_priv.196, hook_notify, + [ debug_mode_handle, motion_sense_shutdown, rt946x_usb_connect, + system_common_shutdown, board_charge_termination] ] +- [ hook_task, resume_pd_port.lto_priv.263, pd_set_suspend, + set_state.lto_priv.194, hook_notify, rt946x_usb_connect ] +# HOOK_AC_CHANGE/HOOK_BATTERY_SOC_CHANGE +- [ [ check_ac_state, charger_task ], hook_notify, + [ debug_mode_handle, motion_sense_shutdown, rt946x_usb_connect, system_common_shutdown] ] +# HOOK_LID_CHANGE +- [ [ lid_switch_open, lid_switch_close ], hook_notify, + [ motion_sense_shutdown, system_common_shutdown ] ] +- [ set_state.lto_priv.189, hook_notify, mkbp_lid_change ] +# HOOK_BASE_ATTACHED_CHANGE +- [ base_set_state, hook_notify, system_common_shutdown ] +- [ set_state.lto_priv.189, hook_notify, mkbp_base_attached_change ] +# HOOK_POWER_BUTTON_CHANGE +- [ power_button_change_deferred, hook_notify, + [ motion_sense_shutdown, system_common_shutdown ] ] +- [ set_state.lto_priv.189, hook_notify, keyboard_power_button ] +# HOOK_SECOND +- [ hook_task, hook_notify, [ motion_sense_shutdown, system_common_shutdown ] ] +- [ hook_task, resume_pd_port.lto_priv.263, pd_set_suspend, + set_state.lto_priv.194, hook_notify, [ motion_sense_shutdown, + system_common_shutdown ] ] +# HOOK_SYSJUMP +- [ jump_to_image, hook_notify, + [ debug_mode_handle, motion_sense_shutdown, rt946x_usb_connect, + system_common_shutdown ] ] +- [ pd_request_power_swap, set_state, hook_notify, panic_init ] +# set_state(port, PD_STATE_SRC/SNK_SWAP_INIT); will not call these functions +- [ pd_request_power_swap, set_state, + [ pd_dfp_exit_mode, usb_mux_set, pd_power_supply_reset, tcpm_set_vconn ] ] +- [ [ pd_request_data_swap, pd_request_vconn_swap ] , set_state, pd_power_supply_reset ] +# All sensors will be shut down in S5 +- [ motion_sense_shutdown, motion_sense_switch_sensor_rate, + [ motion_sense_set_data_rate, motion_sense_init ] ] +# HOOK_CHIPSET_PRE_INIT, HOOK_CHIPSET_STARTUP, HOOK_CHIPSET_RESUME, +# HOOK_CHIPSET_SUSPEND, HOOK_CHIPSET_SHUTDOWN +- [ chipset_task, hook_notify, [ rt946x_usb_connect, debug_mode_handle ] ] +# TCPC, battery bitbang +- [ [ tcpc_read16, tcpc_read, tcpc_write16, tcpc_write, it5205_init.lto_priv.322, + it5205_write, rt946x_read8.lto_priv.327, rt946x_write8.lto_priv.334 ], + [ i2c_write8, i2c_read8, i2c_write16, i2c_read16 ], [ i2c_write, i2c_read ], + i2c_xfer_unlocked, i2c_bitbang_xfer ] +- [ [ tcpc_read16, tcpc_read, tcpc_write16, tcpc_write, it5205_init.lto_priv.322, + it5205_write, it5205_read, rt946x_read8.lto_priv.327, rt946x_write8.lto_priv.334 ], + [ i2c_write8, i2c_read8, i2c_write16, i2c_read16 ], [ i2c_write, i2c_read ], + i2c_xfer, i2c_xfer_unlocked, i2c_bitbang_xfer ] +- [ [ tcpc_read16, tcpc_read, tcpc_write16, tcpc_write, it5205_init.lto_priv.322 ], + [ i2c_write8, i2c_read8, i2c_write16, i2c_read16 ], [ i2c_write, i2c_read ], + i2c_bitbang_xfer ] +- [ mt6370_enable_hidden_mode, i2c_write_block, i2c_bitbang_xfer ] diff --git a/board/kodama/ec.tasklist b/board/kodama/ec.tasklist index df944a1b07..530089ca74 100644 --- a/board/kodama/ec.tasklist +++ b/board/kodama/ec.tasklist @@ -7,14 +7,14 @@ * See CONFIG_TASK_LIST in config.h for details. */ #define CONFIG_TASK_LIST \ - TASK_ALWAYS(HOOKS, hook_task, NULL, VENTI_TASK_STACK_SIZE) \ - TASK_ALWAYS(CHARGER, charger_task, NULL, VENTI_TASK_STACK_SIZE) \ + TASK_ALWAYS(HOOKS, hook_task, NULL, 1024) \ + TASK_ALWAYS(CHARGER, charger_task, NULL, 1152) \ TASK_ALWAYS(USB_CHG, usb_charger_task, NULL, VENTI_TASK_STACK_SIZE) \ - TASK_NOTEST(CHIPSET, chipset_task, NULL, LARGER_TASK_STACK_SIZE) \ + TASK_NOTEST(CHIPSET, chipset_task, NULL, 1024) \ TASK_ALWAYS_RW(MOTIONSENSE, motion_sense_task, NULL, VENTI_TASK_STACK_SIZE) \ TASK_NOTEST(PDCMD, pd_command_task, NULL, 1024) \ - TASK_ALWAYS(HOSTCMD, host_command_task, NULL, 1024) \ - TASK_ALWAYS(CONSOLE, console_task, NULL, LARGER_TASK_STACK_SIZE) \ + TASK_ALWAYS(HOSTCMD, host_command_task, NULL, 1152) \ + TASK_ALWAYS(CONSOLE, console_task, NULL, 1024) \ TASK_ALWAYS(PD_C0, pd_task, NULL, 1280) \ TASK_ALWAYS(PD_INT_C0, pd_interrupt_handler_task, 0, 1024) \ TASK_ALWAYS_RO(EMMC, emmc_task, NULL, LARGER_TASK_STACK_SIZE) diff --git a/board/kukui/analyzestack.yaml b/board/kukui/analyzestack.yaml index 535e661469..21d1f66b8b 100644 --- a/board/kukui/analyzestack.yaml +++ b/board/kukui/analyzestack.yaml @@ -1,3 +1,5 @@ +# Check cortex-m/switch.S +exception_frame_size: 64 add: # TCPC functions, see mt6370_tcpm_drv struct. tcpm_init[driver/tcpm/tcpm.h:121]: @@ -103,6 +105,7 @@ add: sensor_init_done[common/motion_sense.c:353]: # get_range - tcs3400_get_range - get_range[driver/accelgyro_bmi160.c] + - set_range[driver/accelgyro_bmi160.c] motion_sense_shutdown[common/motion_sense.c:431]: # list_activities - list_activities[driver/accelgyro_bmi160.c] motion_sense_shutdown[common/motion_sense.c:437]: # manage_activity @@ -234,6 +237,8 @@ remove: - [ pd_request_power_swap, set_state.lto_priv.196, hook_notify, [ debug_mode_handle, motion_sense_shutdown, rt946x_usb_connect, system_common_shutdown, board_charge_termination] ] +- [ hook_task, resume_pd_port.lto_priv.263, pd_set_suspend, + set_state.lto_priv.194, hook_notify, rt946x_usb_connect ] # HOOK_AC_CHANGE/HOOK_BATTERY_SOC_CHANGE - [ [ check_ac_state, charger_task ], hook_notify, [ debug_mode_handle, motion_sense_shutdown, rt946x_usb_connect, system_common_shutdown] ] @@ -246,7 +251,10 @@ remove: - [ power_button_change_deferred, hook_notify, [ motion_sense_shutdown, system_common_shutdown] ] # HOOK_SECOND -- [ hook_task, hook_notify, [ motion_sense_shutdown, system_common_shutdown] ] +- [ hook_task, hook_notify, [ motion_sense_shutdown, system_common_shutdown ] ] +- [ hook_task, resume_pd_port.lto_priv.263, pd_set_suspend, + set_state.lto_priv.194, hook_notify, [ motion_sense_shutdown, + system_common_shutdown ] ] # HOOK_SYSJUMP - [ jump_to_image, hook_notify, [ debug_mode_handle, motion_sense_shutdown, rt946x_usb_connect, system_common_shutdown] ] diff --git a/board/kukui/ec.tasklist b/board/kukui/ec.tasklist index dc4971f187..afc39c8e47 100644 --- a/board/kukui/ec.tasklist +++ b/board/kukui/ec.tasklist @@ -7,7 +7,7 @@ * See CONFIG_TASK_LIST in config.h for details. */ #define CONFIG_TASK_LIST \ - TASK_ALWAYS(HOOKS, hook_task, NULL, VENTI_TASK_STACK_SIZE) \ + TASK_ALWAYS(HOOKS, hook_task, NULL, 1024) \ TASK_ALWAYS(CHARGER, charger_task, NULL, VENTI_TASK_STACK_SIZE) \ TASK_ALWAYS(USB_CHG, usb_charger_task, NULL, 832) \ TASK_NOTEST(CHIPSET, chipset_task, NULL, VENTI_TASK_STACK_SIZE) \ diff --git a/board/stern/analyzestack.yaml b/board/stern/analyzestack.yaml new file mode 100644 index 0000000000..76f8f523f2 --- /dev/null +++ b/board/stern/analyzestack.yaml @@ -0,0 +1,246 @@ +# Check cortex-m/switch.S +exception_frame_size: 64 +add: +# TCPC functions, see fusb302_tcpm_drv struct. + tcpm_init[driver/tcpm/tcpm.h:121]: + - fusb302_tcpm_init + tcpm_release[driver/tcpm/tcpm.h:134]: + - fusb302_tcpm_release, + tcpm_select_rp_value[driver/tcpm/tcpm.h:150]: + - fusb302_tcpm_select_rp_value + tcpm_set_msg_header[driver/tcpm/tcpm.h:170]: + - fusb302_tcpm_set_msg_header + tcpm_enter_low_power_mode[driver/tcpm/tcpm.h:234]: + - fusb302_tcpm_enter_low_power_mode + tcpm_transmit[driver/tcpm/tcpm.h:188]: + - fusb302_tcpm_transmit + tcpm_get_cc[driver/tcpm/tcpm.h:140]: + - fusb302_tcpm_get_cc + tcpm_set_rx_enable[driver/tcpm/tcpm.h:176]: + - fusb302_tcpm_set_rx_enable + tcpm_set_vconn[driver/tcpm/tcpm.h:165]: + - fusb302_tcpm_set_vconn + tcpm_set_polarity[driver/tcpm/tcpm.h:160]: + - fusb302_tcpm_set_polarity + tcpm_set_cc[driver/tcpm/tcpm.h:155]: + - fusb302_tcpm_set_cc + tcpm_get_vbus_level[driver/tcpm/tcpm.h:145]: + - fusb302_tcpm_get_vbus_level + tcpm_enqueue_message[driver/tcpm/tcpci.c:468]: + - fusb302_tcpm_get_message_raw +# USB mux, see it5205_usb_mux_driver + usb_mux_flip[driver/usb_mux/usb_mux.c:164]: #get + - it5205_set_mux + usb_mux_flip[driver/usb_mux/usb_mux.c:175]: #set + - it5205_get_mux + usb_mux_init[driver/usb_mux/usb_mux.c:65]: #init + - it5205_init + usb_mux_init[driver/usb_mux/usb_mux.c:76]: # board_init + - None + enter_low_power_mode[driver/usb_mux/usb_mux.c:43]: + - it5205_enter_low_power_mode + usb_mux_set[driver/usb_mux/usb_mux.c:113]: + - it5205_set_mux + hc_usb_pd_mux_info[driver/usb_mux/usb_mux.c:241]: + - it5205_get_mux + usb_mux_get[driver/usb_mux/usb_mux.c:141]: + - it5205_get_mux +# usb_mux hpd_update + svdm_dp_post_config[baseboard/kukui/usb_pd_policy.c:200]: + - board_hpd_status + svdm_exit_dp_mode[baseboard/kukui/usb_pd_policy.c:263]: + - board_hpd_status + svdm_dp_attention[baseboard/kukui/usb_pd_policy.c:219]: + - board_hpd_status +# USB PD policy, see struct svdm_amode_fx + pd_svdm[common/usb_pd_policy.c:766]: + - svdm_dp_status + - svdm_gfu_status + pd_svdm[common/usb_pd_policy.c:777]: + - svdm_dp_config + - svdm_gfu_config + pd_svdm[common/usb_pd_policy.c:783]: + - svdm_dp_post_config + pd_dfp_enter_mode[common/usb_pd_policy.c:440]: + - svdm_enter_dp_mode + - svdm_enter_gfu_mode + pd_dfp_exit_mode[common/usb_pd_policy.c:544]: + - svdm_exit_dp_mode + - svdm_exit_gfu_mode + dfp_consume_attention[common/usb_pd_policy.c:478]: + - svdm_dp_attention + - svdm_gfu_attention + pd_dfp_exit_mode[common/usb_pd_policy.c:561]: + - svdm_exit_dp_mode + - svdm_exit_gfu_mode +# Motion sense: bmi160 + motion_sense_set_data_rate[common/motion_sense.c:156]: # set_data_rate + - set_data_rate[driver/accelgyro_bmi160.c] + motion_sense_set_data_rate[common/motion_sense.c:175]: # get_data_rate + - get_data_rate[driver/accelgyro_bmi160.c] + motion_sense_set_data_rate[common/motion_sense.c:184]: # get_data_rate + - get_data_rate[driver/accelgyro_bmi160.c] + motion_sense_set_motion_intervals[common/motion_sense.c:302]: # get_data_rate + - get_data_rate[driver/accelgyro_bmi160.c] + motion_sense_set_ec_rate_from_ap[common/motion_sense.c:196]: # get_data_rate + - get_data_rate[driver/accelgyro_bmi160.c] + motion_sense_init[common/motion_sense.c:327]: # init + - init[driver/accelgyro_bmi160.c] + sensor_init_done[common/motion_sense.c:353]: # get_range + - get_range[driver/accelgyro_bmi160.c] + motion_sense_shutdown[common/motion_sense.c:431]: # list_activities + - list_activities[driver/accelgyro_bmi160.c] + motion_sense_shutdown[common/motion_sense.c:437]: # manage_activity + - manage_activity[driver/accelgyro_bmi160.c] + motion_sense_shutdown[common/motion_sense.c:440]: # manage_activity + - manage_activity[driver/accelgyro_bmi160.c] + motion_sense_read[common/motion_sense.c:589]: # read + - read[driver/accelgyro_bmi160.c] + motion_sense_read[common/motion_sense.c:576]: # get_data_rate + - get_data_rate[driver/accelgyro_bmi160.c] + motion_sense_process[common/motion_sense.c:667]: # irq_handler + - irq_handler[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1153]: # set_range + - set_range[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1164]: # get_range + - get_range[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1179]: # set_offset + - set_offset[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1207]: # set_scale + - set_scale[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1233]: # perform_calib + - perform_calib[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1237]: # get_offset + - get_offset[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1313]: # list_activities + - list_activities[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1333]: # list_activities + - list_activities[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1337]: # manage_activity + - manage_activity[driver/accelgyro_bmi160.c] + command_accelrange[common/motion_sense.c:1455]: # set_range + - set_range[driver/accelgyro_bmi160.c] + command_accelrange[common/motion_sense.c:1460]: # get_range + - get_range[driver/accelgyro_bmi160.c] + command_accelresolution[common/motion_sense.c:1504]: # set_resolution + - None + command_accelresolution[common/motion_sense.c:1508]: # get_resolution + - get_resolution[driver/accelgyro_bmi160.c] + command_accel_data_rate[common/motion_sense.c:1560]: # get_data_rate + - get_data_rate[driver/accelgyro_bmi160.c] + command_accel_read_xyz[common/motion_sense.c:1595]: # read + - read[driver/accelgyro_bmi160.c] + +# Core + handle_command[common/console.c:248]: + - { name: __cmds, stride: 16, offset: 4 } + hook_task[common/hooks.c:200]: + - { name: __deferred_funcs, stride: 4, offset: 0 } + - { name: __hooks_second, stride: 8, offset: 0 } + - { name: __hooks_tick, stride: 8, 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/kukui/R*/ec.R*.smap | + # sed -e 's/.*\(__hooks.*\)_end/ - { name: \1, stride: 8, offset: 0 }/' | + # sort -u` + hook_notify[common/hooks.c:130]: + - { 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_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_sysjump, stride: 8, offset: 0 } + - { name: __hooks_tablet_mode_change, stride: 8, offset: 0 } + - { name: __hooks_usb_pd_connect, stride: 8, offset: 0 } + - { name: __hooks_usb_pd_disconnect, stride: 8, offset: 0 } + mkbp_get_next_event[common/mkbp_event.c:369]: + - { name: __mkbp_evt_srcs, stride: 8, offset: 4 } + host_command_process[common/host_command.c:708]: + - { name: __hcmds, stride: 12, offset: 0 } + vfnprintf: + # This covers all the addchar in vfnprintf, but stackanalyzer does not + # realize that... + - __tx_char + host_send_response[common/host_command.c:153]: # send_response + - spi_send_response + host_packet_respond[common/host_command.c:240]: + - spi_send_response_packet +# Misc + i2c_command_passthru[common/i2c_master.c:991]: + - None + cprints[common/console_output.c:108]: + - None # I'm not sure what this is?! + chip_i2c_xfer_with_notify[common/i2c_master.c:112]: # i2c_port->drv->xfer + - i2c_bitbang_xfer + default_handler[core/cortex-m0/init.S:100]: + - exception_panic + gpio_interrupt[chip/stm32/gpio.c:154]: + - None + +remove: +# Remove all callsites pointing to panic_assert_fail. +- panic_assert_fail + +# Remove paths that make no sense +# HOOK_USB_PD_DISCONNECT +- [ pd_request_power_swap, set_state.lto_priv.206, hook_notify, + [ motion_sense_shutdown, charger_enable_psys, charger_disable_psys, + system_common_shutdown ] ] +# HOOK_AC_CHANGE/HOOK_BATTERY_SOC_CHANGE +- [ charger_task, hook_notify, + [ motion_sense_shutdown, system_common_shutdown ] ] +# HOOK_LID_CHANGE +- [ [ lid_switch_open, lid_switch_close ], hook_notify, + [ motion_sense_shutdown, system_common_shutdown ] ] +# HOOK_BASE_ATTACHED_CHANGE/HOOK_TABLET_MODE_CHANGE +- [ tablet_set_mode, hook_notify, [ system_common_shutdown, charger_enable_psys, charger_disable_psys ] ] +# HOOK_POWER_BUTTON_CHANGE +- [ power_button_change_deferred, hook_notify, + [ motion_sense_shutdown, system_common_shutdown ] ] +# HOOK_SECOND +- [ hook_task, hook_notify, [ motion_sense_shutdown, system_common_shutdown ] ] +# HOOK_SYSJUMP +- [ jump_to_image, hook_notify, + [ motion_sense_shutdown, system_common_shutdown, charger_enable_psys, charger_disable_psys ] ] +- [ pd_request_power_swap, set_state, hook_notify, panic_init ] +# set_state(port, PD_STATE_SRC/SNK_SWAP_INIT); will not call these functions +- [ pd_request_power_swap, set_state, + [ pd_dfp_exit_mode, usb_mux_set, pd_power_supply_reset, tcpm_set_vconn ] ] +- [ [ pd_request_data_swap, pd_request_vconn_swap ] , set_state, pd_power_supply_reset ] +# All sensors will be shut down in S5 +- [ motion_sense_shutdown, motion_sense_switch_sensor_rate, + [ motion_sense_set_data_rate, motion_sense_init ] ] +# HOOK_CHIPSET_PRE_INIT, HOOK_CHIPSET_STARTUP, HOOK_CHIPSET_RESUME, +# HOOK_CHIPSET_SUSPEND, HOOK_CHIPSET_SHUTDOWN +- [ chipset_task, hook_notify ] +# TCPC, KEYBOARD, BC12 will not access battery's bitbang +- [ [ raw_read8.lto_priv.157, tcpc_read.lto_priv.352, tcpc_write.lto_priv.351, + it8801_ioex_write, it8801_read, it8801_write.lto_priv.336, raw_read16.lto_priv.349, + raw_write16.lto_priv.348, it5205_init.lto_priv.241, it5205_write, + raw_read8, tcpc_read.lto_priv.340 ], + [ i2c_write8, i2c_read8, i2c_write16, i2c_read16 ], [ i2c_write, i2c_read ], + i2c_xfer_unlocked, i2c_bitbang_xfer ] +- [ [ raw_read8.lto_priv.157, tcpc_read.lto_priv.352, tcpc_write.lto_priv.351, + it8801_ioex_write, it8801_read, it8801_write.lto_priv.336, raw_read16.lto_priv.349, + raw_write16.lto_priv.348, it5205_init.lto_priv.241, it5205_write, + raw_read8, tcpc_read.lto_priv.340 ], + [ i2c_write8, i2c_read8, i2c_write16, i2c_read16 ] , [ i2c_write, i2c_read ], + i2c_xfer, i2c_xfer_unlocked, i2c_bitbang_xfer ] +# PD_INT_C0_TASK +# pd_wait_exit_low_power -> reset_device_and_notify can only be called in a pd_task NOT pd_interrupt_handler_task +- [ pd_interrupt_handler_task, fusb302_tcpc_alert, pd_execute_hard_reset, set_state.lto_priv.206, + pd_power_supply_reset, charge_manager_source_port.part.10, charge_manager_save_log.part.9, + charge_manager_fill_power_info, tcpc_read.lto_priv.352, pd_wait_exit_low_power, reset_device_and_notify ] +# CONSOLE_TASK +# pd_wait_exit_low_power -> reset_device_and_notify can only be called in a pd_task NOT pd_interrupt_handler_task +- [ console_task, command_pd, set_state.lto_priv.206, pd_power_supply_reset, charge_manager_source_port.part.10, + charge_manager_save_log.part.9, charge_manager_fill_power_info, tcpc_read.lto_priv.352, pd_wait_exit_low_power, + reset_device_and_notify ] diff --git a/board/stern/ec.tasklist b/board/stern/ec.tasklist index 3549007a02..c7f7811cff 100644 --- a/board/stern/ec.tasklist +++ b/board/stern/ec.tasklist @@ -7,14 +7,14 @@ * See CONFIG_TASK_LIST in config.h for details. */ #define CONFIG_TASK_LIST \ - TASK_ALWAYS(HOOKS, hook_task, NULL, VENTI_TASK_STACK_SIZE) \ - TASK_ALWAYS(CHARGER, charger_task, NULL, 1024) \ + TASK_ALWAYS(HOOKS, hook_task, NULL, 1024) \ + TASK_ALWAYS(CHARGER, charger_task, NULL, 1152) \ TASK_ALWAYS(USB_CHG_P0, usb_charger_task, NULL, VENTI_TASK_STACK_SIZE) \ TASK_NOTEST(CHIPSET, chipset_task, NULL, LARGER_TASK_STACK_SIZE) \ TASK_ALWAYS_RW(MOTIONSENSE, motion_sense_task, NULL, VENTI_TASK_STACK_SIZE) \ TASK_NOTEST(PDCMD, pd_command_task, NULL, 1024) \ - TASK_ALWAYS(HOSTCMD, host_command_task, NULL, 1024) \ - TASK_ALWAYS(CONSOLE, console_task, NULL, LARGER_TASK_STACK_SIZE) \ + TASK_ALWAYS(HOSTCMD, host_command_task, NULL, 1152) \ + TASK_ALWAYS(CONSOLE, console_task, NULL, 1024) \ TASK_NOTEST(KEYSCAN, keyboard_scan_task, NULL, LARGER_TASK_STACK_SIZE) \ TASK_ALWAYS(PD_C0, pd_task, NULL, 1280) \ TASK_ALWAYS(PD_INT_C0, pd_interrupt_handler_task, 0, 1024) \ diff --git a/board/willow/analyzestack.yaml b/board/willow/analyzestack.yaml new file mode 100644 index 0000000000..76f8f523f2 --- /dev/null +++ b/board/willow/analyzestack.yaml @@ -0,0 +1,246 @@ +# Check cortex-m/switch.S +exception_frame_size: 64 +add: +# TCPC functions, see fusb302_tcpm_drv struct. + tcpm_init[driver/tcpm/tcpm.h:121]: + - fusb302_tcpm_init + tcpm_release[driver/tcpm/tcpm.h:134]: + - fusb302_tcpm_release, + tcpm_select_rp_value[driver/tcpm/tcpm.h:150]: + - fusb302_tcpm_select_rp_value + tcpm_set_msg_header[driver/tcpm/tcpm.h:170]: + - fusb302_tcpm_set_msg_header + tcpm_enter_low_power_mode[driver/tcpm/tcpm.h:234]: + - fusb302_tcpm_enter_low_power_mode + tcpm_transmit[driver/tcpm/tcpm.h:188]: + - fusb302_tcpm_transmit + tcpm_get_cc[driver/tcpm/tcpm.h:140]: + - fusb302_tcpm_get_cc + tcpm_set_rx_enable[driver/tcpm/tcpm.h:176]: + - fusb302_tcpm_set_rx_enable + tcpm_set_vconn[driver/tcpm/tcpm.h:165]: + - fusb302_tcpm_set_vconn + tcpm_set_polarity[driver/tcpm/tcpm.h:160]: + - fusb302_tcpm_set_polarity + tcpm_set_cc[driver/tcpm/tcpm.h:155]: + - fusb302_tcpm_set_cc + tcpm_get_vbus_level[driver/tcpm/tcpm.h:145]: + - fusb302_tcpm_get_vbus_level + tcpm_enqueue_message[driver/tcpm/tcpci.c:468]: + - fusb302_tcpm_get_message_raw +# USB mux, see it5205_usb_mux_driver + usb_mux_flip[driver/usb_mux/usb_mux.c:164]: #get + - it5205_set_mux + usb_mux_flip[driver/usb_mux/usb_mux.c:175]: #set + - it5205_get_mux + usb_mux_init[driver/usb_mux/usb_mux.c:65]: #init + - it5205_init + usb_mux_init[driver/usb_mux/usb_mux.c:76]: # board_init + - None + enter_low_power_mode[driver/usb_mux/usb_mux.c:43]: + - it5205_enter_low_power_mode + usb_mux_set[driver/usb_mux/usb_mux.c:113]: + - it5205_set_mux + hc_usb_pd_mux_info[driver/usb_mux/usb_mux.c:241]: + - it5205_get_mux + usb_mux_get[driver/usb_mux/usb_mux.c:141]: + - it5205_get_mux +# usb_mux hpd_update + svdm_dp_post_config[baseboard/kukui/usb_pd_policy.c:200]: + - board_hpd_status + svdm_exit_dp_mode[baseboard/kukui/usb_pd_policy.c:263]: + - board_hpd_status + svdm_dp_attention[baseboard/kukui/usb_pd_policy.c:219]: + - board_hpd_status +# USB PD policy, see struct svdm_amode_fx + pd_svdm[common/usb_pd_policy.c:766]: + - svdm_dp_status + - svdm_gfu_status + pd_svdm[common/usb_pd_policy.c:777]: + - svdm_dp_config + - svdm_gfu_config + pd_svdm[common/usb_pd_policy.c:783]: + - svdm_dp_post_config + pd_dfp_enter_mode[common/usb_pd_policy.c:440]: + - svdm_enter_dp_mode + - svdm_enter_gfu_mode + pd_dfp_exit_mode[common/usb_pd_policy.c:544]: + - svdm_exit_dp_mode + - svdm_exit_gfu_mode + dfp_consume_attention[common/usb_pd_policy.c:478]: + - svdm_dp_attention + - svdm_gfu_attention + pd_dfp_exit_mode[common/usb_pd_policy.c:561]: + - svdm_exit_dp_mode + - svdm_exit_gfu_mode +# Motion sense: bmi160 + motion_sense_set_data_rate[common/motion_sense.c:156]: # set_data_rate + - set_data_rate[driver/accelgyro_bmi160.c] + motion_sense_set_data_rate[common/motion_sense.c:175]: # get_data_rate + - get_data_rate[driver/accelgyro_bmi160.c] + motion_sense_set_data_rate[common/motion_sense.c:184]: # get_data_rate + - get_data_rate[driver/accelgyro_bmi160.c] + motion_sense_set_motion_intervals[common/motion_sense.c:302]: # get_data_rate + - get_data_rate[driver/accelgyro_bmi160.c] + motion_sense_set_ec_rate_from_ap[common/motion_sense.c:196]: # get_data_rate + - get_data_rate[driver/accelgyro_bmi160.c] + motion_sense_init[common/motion_sense.c:327]: # init + - init[driver/accelgyro_bmi160.c] + sensor_init_done[common/motion_sense.c:353]: # get_range + - get_range[driver/accelgyro_bmi160.c] + motion_sense_shutdown[common/motion_sense.c:431]: # list_activities + - list_activities[driver/accelgyro_bmi160.c] + motion_sense_shutdown[common/motion_sense.c:437]: # manage_activity + - manage_activity[driver/accelgyro_bmi160.c] + motion_sense_shutdown[common/motion_sense.c:440]: # manage_activity + - manage_activity[driver/accelgyro_bmi160.c] + motion_sense_read[common/motion_sense.c:589]: # read + - read[driver/accelgyro_bmi160.c] + motion_sense_read[common/motion_sense.c:576]: # get_data_rate + - get_data_rate[driver/accelgyro_bmi160.c] + motion_sense_process[common/motion_sense.c:667]: # irq_handler + - irq_handler[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1153]: # set_range + - set_range[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1164]: # get_range + - get_range[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1179]: # set_offset + - set_offset[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1207]: # set_scale + - set_scale[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1233]: # perform_calib + - perform_calib[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1237]: # get_offset + - get_offset[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1313]: # list_activities + - list_activities[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1333]: # list_activities + - list_activities[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1337]: # manage_activity + - manage_activity[driver/accelgyro_bmi160.c] + command_accelrange[common/motion_sense.c:1455]: # set_range + - set_range[driver/accelgyro_bmi160.c] + command_accelrange[common/motion_sense.c:1460]: # get_range + - get_range[driver/accelgyro_bmi160.c] + command_accelresolution[common/motion_sense.c:1504]: # set_resolution + - None + command_accelresolution[common/motion_sense.c:1508]: # get_resolution + - get_resolution[driver/accelgyro_bmi160.c] + command_accel_data_rate[common/motion_sense.c:1560]: # get_data_rate + - get_data_rate[driver/accelgyro_bmi160.c] + command_accel_read_xyz[common/motion_sense.c:1595]: # read + - read[driver/accelgyro_bmi160.c] + +# Core + handle_command[common/console.c:248]: + - { name: __cmds, stride: 16, offset: 4 } + hook_task[common/hooks.c:200]: + - { name: __deferred_funcs, stride: 4, offset: 0 } + - { name: __hooks_second, stride: 8, offset: 0 } + - { name: __hooks_tick, stride: 8, 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/kukui/R*/ec.R*.smap | + # sed -e 's/.*\(__hooks.*\)_end/ - { name: \1, stride: 8, offset: 0 }/' | + # sort -u` + hook_notify[common/hooks.c:130]: + - { 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_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_sysjump, stride: 8, offset: 0 } + - { name: __hooks_tablet_mode_change, stride: 8, offset: 0 } + - { name: __hooks_usb_pd_connect, stride: 8, offset: 0 } + - { name: __hooks_usb_pd_disconnect, stride: 8, offset: 0 } + mkbp_get_next_event[common/mkbp_event.c:369]: + - { name: __mkbp_evt_srcs, stride: 8, offset: 4 } + host_command_process[common/host_command.c:708]: + - { name: __hcmds, stride: 12, offset: 0 } + vfnprintf: + # This covers all the addchar in vfnprintf, but stackanalyzer does not + # realize that... + - __tx_char + host_send_response[common/host_command.c:153]: # send_response + - spi_send_response + host_packet_respond[common/host_command.c:240]: + - spi_send_response_packet +# Misc + i2c_command_passthru[common/i2c_master.c:991]: + - None + cprints[common/console_output.c:108]: + - None # I'm not sure what this is?! + chip_i2c_xfer_with_notify[common/i2c_master.c:112]: # i2c_port->drv->xfer + - i2c_bitbang_xfer + default_handler[core/cortex-m0/init.S:100]: + - exception_panic + gpio_interrupt[chip/stm32/gpio.c:154]: + - None + +remove: +# Remove all callsites pointing to panic_assert_fail. +- panic_assert_fail + +# Remove paths that make no sense +# HOOK_USB_PD_DISCONNECT +- [ pd_request_power_swap, set_state.lto_priv.206, hook_notify, + [ motion_sense_shutdown, charger_enable_psys, charger_disable_psys, + system_common_shutdown ] ] +# HOOK_AC_CHANGE/HOOK_BATTERY_SOC_CHANGE +- [ charger_task, hook_notify, + [ motion_sense_shutdown, system_common_shutdown ] ] +# HOOK_LID_CHANGE +- [ [ lid_switch_open, lid_switch_close ], hook_notify, + [ motion_sense_shutdown, system_common_shutdown ] ] +# HOOK_BASE_ATTACHED_CHANGE/HOOK_TABLET_MODE_CHANGE +- [ tablet_set_mode, hook_notify, [ system_common_shutdown, charger_enable_psys, charger_disable_psys ] ] +# HOOK_POWER_BUTTON_CHANGE +- [ power_button_change_deferred, hook_notify, + [ motion_sense_shutdown, system_common_shutdown ] ] +# HOOK_SECOND +- [ hook_task, hook_notify, [ motion_sense_shutdown, system_common_shutdown ] ] +# HOOK_SYSJUMP +- [ jump_to_image, hook_notify, + [ motion_sense_shutdown, system_common_shutdown, charger_enable_psys, charger_disable_psys ] ] +- [ pd_request_power_swap, set_state, hook_notify, panic_init ] +# set_state(port, PD_STATE_SRC/SNK_SWAP_INIT); will not call these functions +- [ pd_request_power_swap, set_state, + [ pd_dfp_exit_mode, usb_mux_set, pd_power_supply_reset, tcpm_set_vconn ] ] +- [ [ pd_request_data_swap, pd_request_vconn_swap ] , set_state, pd_power_supply_reset ] +# All sensors will be shut down in S5 +- [ motion_sense_shutdown, motion_sense_switch_sensor_rate, + [ motion_sense_set_data_rate, motion_sense_init ] ] +# HOOK_CHIPSET_PRE_INIT, HOOK_CHIPSET_STARTUP, HOOK_CHIPSET_RESUME, +# HOOK_CHIPSET_SUSPEND, HOOK_CHIPSET_SHUTDOWN +- [ chipset_task, hook_notify ] +# TCPC, KEYBOARD, BC12 will not access battery's bitbang +- [ [ raw_read8.lto_priv.157, tcpc_read.lto_priv.352, tcpc_write.lto_priv.351, + it8801_ioex_write, it8801_read, it8801_write.lto_priv.336, raw_read16.lto_priv.349, + raw_write16.lto_priv.348, it5205_init.lto_priv.241, it5205_write, + raw_read8, tcpc_read.lto_priv.340 ], + [ i2c_write8, i2c_read8, i2c_write16, i2c_read16 ], [ i2c_write, i2c_read ], + i2c_xfer_unlocked, i2c_bitbang_xfer ] +- [ [ raw_read8.lto_priv.157, tcpc_read.lto_priv.352, tcpc_write.lto_priv.351, + it8801_ioex_write, it8801_read, it8801_write.lto_priv.336, raw_read16.lto_priv.349, + raw_write16.lto_priv.348, it5205_init.lto_priv.241, it5205_write, + raw_read8, tcpc_read.lto_priv.340 ], + [ i2c_write8, i2c_read8, i2c_write16, i2c_read16 ] , [ i2c_write, i2c_read ], + i2c_xfer, i2c_xfer_unlocked, i2c_bitbang_xfer ] +# PD_INT_C0_TASK +# pd_wait_exit_low_power -> reset_device_and_notify can only be called in a pd_task NOT pd_interrupt_handler_task +- [ pd_interrupt_handler_task, fusb302_tcpc_alert, pd_execute_hard_reset, set_state.lto_priv.206, + pd_power_supply_reset, charge_manager_source_port.part.10, charge_manager_save_log.part.9, + charge_manager_fill_power_info, tcpc_read.lto_priv.352, pd_wait_exit_low_power, reset_device_and_notify ] +# CONSOLE_TASK +# pd_wait_exit_low_power -> reset_device_and_notify can only be called in a pd_task NOT pd_interrupt_handler_task +- [ console_task, command_pd, set_state.lto_priv.206, pd_power_supply_reset, charge_manager_source_port.part.10, + charge_manager_save_log.part.9, charge_manager_fill_power_info, tcpc_read.lto_priv.352, pd_wait_exit_low_power, + reset_device_and_notify ] diff --git a/board/willow/ec.tasklist b/board/willow/ec.tasklist index 5622d67685..c7f7811cff 100644 --- a/board/willow/ec.tasklist +++ b/board/willow/ec.tasklist @@ -7,14 +7,14 @@ * See CONFIG_TASK_LIST in config.h for details. */ #define CONFIG_TASK_LIST \ - TASK_ALWAYS(HOOKS, hook_task, NULL, VENTI_TASK_STACK_SIZE) \ - TASK_ALWAYS(CHARGER, charger_task, NULL, VENTI_TASK_STACK_SIZE) \ + TASK_ALWAYS(HOOKS, hook_task, NULL, 1024) \ + TASK_ALWAYS(CHARGER, charger_task, NULL, 1152) \ TASK_ALWAYS(USB_CHG_P0, usb_charger_task, NULL, VENTI_TASK_STACK_SIZE) \ TASK_NOTEST(CHIPSET, chipset_task, NULL, LARGER_TASK_STACK_SIZE) \ TASK_ALWAYS_RW(MOTIONSENSE, motion_sense_task, NULL, VENTI_TASK_STACK_SIZE) \ TASK_NOTEST(PDCMD, pd_command_task, NULL, 1024) \ - TASK_ALWAYS(HOSTCMD, host_command_task, NULL, 1024) \ - TASK_ALWAYS(CONSOLE, console_task, NULL, VENTI_TASK_STACK_SIZE) \ + TASK_ALWAYS(HOSTCMD, host_command_task, NULL, 1152) \ + TASK_ALWAYS(CONSOLE, console_task, NULL, 1024) \ TASK_NOTEST(KEYSCAN, keyboard_scan_task, NULL, LARGER_TASK_STACK_SIZE) \ TASK_ALWAYS(PD_C0, pd_task, NULL, 1280) \ TASK_ALWAYS(PD_INT_C0, pd_interrupt_handler_task, 0, 1024) \ |