summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Boichat <drinkcat@chromium.org>2018-03-16 10:15:30 +0800
committerchrome-bot <chrome-bot@chromium.org>2018-03-19 05:43:46 -0700
commit9a810343abebf69f668d5d132d48ecd2b475cb08 (patch)
tree865db83d5f7c50f9cc04e34fc6901fcec39a218a
parent0cbb4b6f9dc71f6c6d90fd628f466bb61bae9dca (diff)
downloadchrome-ec-9a810343abebf69f668d5d132d48ecd2b475cb08.tar.gz
hammer: Add stack analysis annotations
make BOARD=staff SECTION=RO analyzestack | grep Task Task: RWSIG, Max size: 780 (716 + 64), Allocated size: 1280 Task: HOOKS, Max size: 960 (896 + 64), Allocated size: 2048 Task: CONSOLE, Max size: 840 (776 + 64), Allocated size: 1024 make BOARD=staff SECTION=RW analyzestack | grep Task Task: HOOKS, Max size: 1216 (1152 + 64), Allocated size: 2048 Task: TOUCHPAD, Max size: 548 (484 + 64), Allocated size: 640 Task: CONSOLE, Max size: 468 (404 + 64), Allocated size: 1024 Task: KEYSCAN, Max size: 408 (344 + 64), Allocated size: 488 BRANCH=poppy BUG=b:75234264 TEST=See results above. No more (or few) missing annotations in full results. No task stack overflow. Change-Id: Iaae99e0129f5eac3f0ed3bcacd89fffbceca7a7f Signed-off-by: Nicolas Boichat <drinkcat@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/966043 Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
-rw-r--r--board/hammer/analyzestack.yaml96
1 files changed, 96 insertions, 0 deletions
diff --git a/board/hammer/analyzestack.yaml b/board/hammer/analyzestack.yaml
new file mode 100644
index 0000000000..1294546b17
--- /dev/null
+++ b/board/hammer/analyzestack.yaml
@@ -0,0 +1,96 @@
+# Size of extra stack frame needed by exception context switch.
+exception_frame_size: 64
+# Add some missing calls.
+add:
+ # usb_ep_event: grep ep_._evt -A 1 build/hammer/RW/ec.RW.smap
+ usb_reset[chip/stm32/usb.c:370]:
+ - hid_touchpad_event
+ - hid_keyboard_event
+ - usb_update_ep_event
+ - i2c_usb__ep_event
+ usb_interrupt_handle_wake[chip/stm32/usb.c:608]:
+ - hid_touchpad_event
+ - hid_keyboard_event
+ - usb_update_ep_event
+ - i2c_usb__ep_event
+ # usb_ep_tx/rx: grep ep_._[rt]x -B 1 -A 1 build/hammer/RW/ec.RW.smap
+ usb_interrupt[chip/stm32/usb.c:640]:
+ - ep0_rx
+ - hid_keyboard_rx
+ - usb_update_ep_rx
+ - i2c_usb__ep_rx
+ - ep0_tx
+ - hid_touchpad_tx
+ - hid_keyboard_tx
+ - usb_update_ep_tx
+ - i2c_usb__ep_tx
+ # usb_interface_request
+ ep0_tx[chip/stm32/usb.c:337]:
+ - hid_touchpad_iface_request
+ - hid_keyboard_iface_request
+ ep0_rx[chip/stm32/usb.c:193]:
+ - hid_touchpad_iface_request
+ - hid_keyboard_iface_request
+ # Queue functions
+ queue_advance_tail[common/queue.c:116]:
+ - queue_add_direct
+ queue_add_memcpy[common/queue.c:152]:
+ - memcpy
+ queue_add_memcpy[common/queue.c:157]:
+ - memcpy
+ queue_read_safe.lto_priv.98[common/queue.c:174]:
+ - memcpy
+ queue_read_safe.lto_priv.98[common/queue.c:179]:
+ - memcpy
+ queue_advance_head[common/queue.c:105]:
+ - queue_remove_direct
+ queue_add_direct[common/queue_policies.c:18]:
+ - usb_i2c_written
+ - usb_written
+ - update_out_handler
+ queue_remove_direct[common/queue_policies.c:27]:
+ - usb_read
+ vfnprintf:
+ # This covers all the addchar in vfnprintf, but stackanalyzer does not
+ # realize that...
+ - __tx_char
+# gpio_interrupt[chip/stm32/gpio.c:146]:
+# TODO: All GPIO interrupt handlers should follow here
+ handle_command[common/console.c:248]:
+ - { name: __cmds, stride: 16, offset: 4 }
+ hook_task[common/hooks.c:197]:
+ - { 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
+ hook_notify[common/hooks.c:127]:
+ - { name: __hooks_pre_freq_change, stride: 8, offset: 0 }
+ - { name: __hooks_freq_change, stride: 8, offset: 0 }
+ - { name: __hooks_chipset_pre_init, stride: 8, offset: 0 }
+ - { name: __hooks_chipset_resume, stride: 8, offset: 0 }
+ - { name: __hooks_chipset_startup, stride: 8, offset: 0 }
+ - { name: __hooks_chipset_suspend, stride: 8, offset: 0 }
+ - { name: __hooks_sysjump, stride: 8, offset: 0 }
+ - { name: __hooks_chipset_shutdown, stride: 8, offset: 0 }
+ - { name: __hooks_ac_change, stride: 8, offset: 0 }
+ - { name: __hooks_battery_soc_change, stride: 8, offset: 0 }
+ - { name: __hooks_chipset_reset, stride: 8, offset: 0 }
+ - { name: __hooks_lid_change, stride: 8, offset: 0 }
+ - { name: __hooks_pwrbtn_change, stride: 8, offset: 0 }
+ - { name: __hooks_tablet_mode_change, stride: 8, offset: 0 }
+ - { name: __hooks_usb_change, stride: 8, offset: 0 }
+ jump_to_image.lto_priv.135[common/system.c:568]:
+ - None
+ irq_4_handler[core/cortex-m0/init.S:165]:
+ - exception_panic
+remove:
+ - panic_assert_fail
+ - [queue_add_direct, update_out_handler, [queue_add_unit, queue_add_memcpy], queue_add_direct, update_out_handler]
+ # set_touchpad_report/keyboard_state_changed add elements to a queue, but
+ # _not_ the queue that would call update_out handler
+ - [ touchpad_task, queue_add_unit, queue_add_direct, update_out_handler]
+ - [ keyboard_scan_task, queue_add_unit, queue_add_direct, update_out_handler]
+ # keyboard_raw_drive_column can't recurse more than once
+ - [keyboard_raw_drive_column, keyboard_raw_drive_column, keyboard_raw_drive_column]
+ - [system_common_shutdown, system_run_image_copy, jump_to_image.lto_priv.135, hook_notify, system_common_shutdown]