diff options
author | Randall Spangler <rspangler@chromium.org> | 2012-09-07 13:48:23 -0700 |
---|---|---|
committer | Gerrit <chrome-bot@google.com> | 2012-09-09 11:00:34 -0700 |
commit | a3d62a3700206b9cd34e129f6a04967bed5e46e4 (patch) | |
tree | 7961d109a7bf74d000f283a678ed757b0bf0989b /board | |
parent | 22d13781dcd006f9305956d33bf1ce1581454d2e (diff) | |
download | chrome-ec-a3d62a3700206b9cd34e129f6a04967bed5e46e4.tar.gz |
Switch to variable-size stacks
Increase stack size slightly for vboot hash task since the vboot
SHA256 function allocates ~300 bytes of stack data. Reduce stack size
for watchdog, power LED, and a few other tasks with simple call trees
where we can be sure an error path isn't going to blow past the
reduced stack.
This frees up ~1KB of RAM on STM32.
BUG=chrome-os-partner:13814
BRANCH=all
TEST=boot system; shmem should show more unused RAM; taskinfo should show
tasks still have unused stack
Change-Id: I47d6b77564a0180d15d86667cc0566a8919b776e
Signed-off-by: Randall Spangler <rspangler@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/32608
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
Diffstat (limited to 'board')
-rw-r--r-- | board/bds/ec.tasklist | 9 | ||||
-rw-r--r-- | board/daisy/ec.tasklist | 19 | ||||
-rw-r--r-- | board/link/ec.tasklist | 39 | ||||
-rw-r--r-- | board/snow/ec.tasklist | 19 |
4 files changed, 45 insertions, 41 deletions
diff --git a/board/bds/ec.tasklist b/board/bds/ec.tasklist index beaaec5552..2e5408dd5b 100644 --- a/board/bds/ec.tasklist +++ b/board/bds/ec.tasklist @@ -8,12 +8,13 @@ * * The first one has the lowest priority. * - * For each task, use the macro TASK(n, r, d) where : + * For each task, use the macro TASK(n, r, d, s) where : * 'n' in the name of the task * 'r' in the main routine of the task * 'd' in an opaque parameter passed to the routine at startup + * 's' is the stack size in bytes; must be a multiple of 8 */ #define CONFIG_TASK_LIST \ - TASK(WATCHDOG, watchdog_task, NULL) \ - TASK(LIGHTBAR, lightbar_task, NULL) \ - TASK(CONSOLE, console_task, NULL) + TASK(WATCHDOG, watchdog_task, NULL, TASK_STACK_SIZE) \ + TASK(LIGHTBAR, lightbar_task, NULL, TASK_STACK_SIZE) \ + TASK(CONSOLE, console_task, NULL, TASK_STACK_SIZE) diff --git a/board/daisy/ec.tasklist b/board/daisy/ec.tasklist index c9785dd4a9..dc07f50e26 100644 --- a/board/daisy/ec.tasklist +++ b/board/daisy/ec.tasklist @@ -8,17 +8,18 @@ * * The first one has the lowest priority. * - * For each task, use the macro TASK(n, r, d) where : + * For each task, use the macro TASK(n, r, d, s) where : * 'n' in the name of the task * 'r' in the main routine of the task * 'd' in an opaque parameter passed to the routine at startup + * 's' is the stack size in bytes; must be a multiple of 8 */ #define CONFIG_TASK_LIST \ - TASK(WATCHDOG, watchdog_task, NULL) \ - TASK(VBOOTHASH, vboot_hash_task, NULL) \ - TASK(POWERLED, power_led_task, NULL) \ - TASK(PMU_TPS65090_CHARGER, pmu_charger_task, NULL) \ - TASK(KEYSCAN, keyboard_scan_task, NULL) \ - TASK(GAIAPOWER, gaia_power_task, NULL) \ - TASK(CONSOLE, console_task, NULL) \ - TASK(HOSTCMD, host_command_task, NULL) + TASK(WATCHDOG, watchdog_task, NULL, TASK_STACK_SIZE) \ + TASK(VBOOTHASH, vboot_hash_task, NULL, TASK_STACK_SIZE) \ + TASK(POWERLED, power_led_task, NULL, TASK_STACK_SIZE) \ + TASK(PMU_TPS65090_CHARGER, pmu_charger_task, NULL, TASK_STACK_SIZE) \ + TASK(KEYSCAN, keyboard_scan_task, NULL, TASK_STACK_SIZE) \ + TASK(GAIAPOWER, gaia_power_task, NULL, TASK_STACK_SIZE) \ + TASK(CONSOLE, console_task, NULL, TASK_STACK_SIZE) \ + TASK(HOSTCMD, host_command_task, NULL, TASK_STACK_SIZE) diff --git a/board/link/ec.tasklist b/board/link/ec.tasklist index b31a575bf9..3e50f0a745 100644 --- a/board/link/ec.tasklist +++ b/board/link/ec.tasklist @@ -1,4 +1,4 @@ -/* Copyright (c) 2011 The Chromium OS Authors. All rights reserved. +/* Copyright (c) 2012 The Chromium OS Authors. All rights reserved. * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ @@ -8,23 +8,24 @@ * * The first one has the lowest priority. * - * For each task, use the macro TASK(n, r, d) where : - * 'n' in the name of the task - * 'r' in the main routine of the task - * 'd' in an opaque parameter passed to the routine at startup + * For each task, use the macro TASK(n, r, d, s) where : + * 'n' is the name of the task + * 'r' is the main routine of the task + * 'd' is an opaque parameter passed to the routine at startup + * 's' is the stack size in bytes; must be a multiple of 8 */ #define CONFIG_TASK_LIST \ - TASK(WATCHDOG, watchdog_task, NULL) \ - TASK(VBOOTHASH, vboot_hash_task, NULL) \ - TASK(LIGHTBAR, lightbar_task, NULL) \ - TASK(POWERSTATE, charge_state_machine_task, NULL) \ - TASK(TEMPSENSOR, temp_sensor_task, NULL) \ - TASK(THERMAL, thermal_task, NULL) \ - TASK(PWM, pwm_task, NULL) \ - TASK(TYPEMATIC, keyboard_typematic_task, NULL) \ - TASK(X86POWER, x86_power_task, NULL) \ - TASK(I8042CMD, i8042_command_task, NULL) \ - TASK(HOSTCMD, host_command_task, NULL) \ - TASK(CONSOLE, console_task, NULL) \ - TASK(POWERBTN, power_button_task, NULL) \ - TASK(KEYSCAN, keyboard_scan_task, NULL) + TASK(WATCHDOG, watchdog_task, NULL, 256) \ + TASK(VBOOTHASH, vboot_hash_task, NULL, 512) \ + TASK(LIGHTBAR, lightbar_task, NULL, TASK_STACK_SIZE) \ + TASK(POWERSTATE, charge_state_machine_task, NULL, TASK_STACK_SIZE) \ + TASK(TEMPSENSOR, temp_sensor_task, NULL, TASK_STACK_SIZE) \ + TASK(THERMAL, thermal_task, NULL, TASK_STACK_SIZE) \ + TASK(PWM, pwm_task, NULL, TASK_STACK_SIZE) \ + TASK(TYPEMATIC, keyboard_typematic_task, NULL, TASK_STACK_SIZE) \ + TASK(X86POWER, x86_power_task, NULL, TASK_STACK_SIZE) \ + TASK(I8042CMD, i8042_command_task, NULL, TASK_STACK_SIZE) \ + TASK(HOSTCMD, host_command_task, NULL, TASK_STACK_SIZE) \ + TASK(CONSOLE, console_task, NULL, TASK_STACK_SIZE) \ + TASK(POWERBTN, power_button_task, NULL, TASK_STACK_SIZE) \ + TASK(KEYSCAN, keyboard_scan_task, NULL, TASK_STACK_SIZE) diff --git a/board/snow/ec.tasklist b/board/snow/ec.tasklist index c9785dd4a9..7c99047a1f 100644 --- a/board/snow/ec.tasklist +++ b/board/snow/ec.tasklist @@ -8,17 +8,18 @@ * * The first one has the lowest priority. * - * For each task, use the macro TASK(n, r, d) where : + * For each task, use the macro TASK(n, r, d, s) where : * 'n' in the name of the task * 'r' in the main routine of the task * 'd' in an opaque parameter passed to the routine at startup + * 's' is the stack size in bytes; must be a multiple of 8 */ #define CONFIG_TASK_LIST \ - TASK(WATCHDOG, watchdog_task, NULL) \ - TASK(VBOOTHASH, vboot_hash_task, NULL) \ - TASK(POWERLED, power_led_task, NULL) \ - TASK(PMU_TPS65090_CHARGER, pmu_charger_task, NULL) \ - TASK(KEYSCAN, keyboard_scan_task, NULL) \ - TASK(GAIAPOWER, gaia_power_task, NULL) \ - TASK(CONSOLE, console_task, NULL) \ - TASK(HOSTCMD, host_command_task, NULL) + TASK(WATCHDOG, watchdog_task, NULL, 256) \ + TASK(VBOOTHASH, vboot_hash_task, NULL, TASK_STACK_SIZE) \ + TASK(POWERLED, power_led_task, NULL, 256) \ + TASK(PMU_TPS65090_CHARGER, pmu_charger_task, NULL, TASK_STACK_SIZE) \ + TASK(KEYSCAN, keyboard_scan_task, NULL, 256) \ + TASK(GAIAPOWER, gaia_power_task, NULL, TASK_STACK_SIZE) \ + TASK(CONSOLE, console_task, NULL, TASK_STACK_SIZE) \ + TASK(HOSTCMD, host_command_task, NULL, TASK_STACK_SIZE) |