summaryrefslogtreecommitdiff
path: root/board
diff options
context:
space:
mode:
authorRandall Spangler <rspangler@chromium.org>2012-09-07 13:48:23 -0700
committerGerrit <chrome-bot@google.com>2012-09-09 11:00:34 -0700
commita3d62a3700206b9cd34e129f6a04967bed5e46e4 (patch)
tree7961d109a7bf74d000f283a678ed757b0bf0989b /board
parent22d13781dcd006f9305956d33bf1ce1581454d2e (diff)
downloadchrome-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.tasklist9
-rw-r--r--board/daisy/ec.tasklist19
-rw-r--r--board/link/ec.tasklist39
-rw-r--r--board/snow/ec.tasklist19
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)