zephyr/soc/arm
Daniel Leung b935903543 soc: mec1501: modifies interrupt restoration after deep sleep
z_power_soc_deep_sleep() is called with interrupt locked already
so restoring BASEPRI is pointless here, as it would only allow
exceptions afterwards. The situation is complicated by the fact
that kernel/idle.c:idle() only locks interrupt without unlocking
which means the BASEBRI at entry of z_power_soc_deep_sleep() is
already set to allow exceptions only but not lower priority
interrupts like timer. So when, e.g. timer, interrupt fires,
the SoC would come out of deep sleep but the waking interrupts
are never delivered since they are masked, and idle() will try
to sleep again. And now it gets into a loop of going into deep
sleep briefly and waking up immediately and it goes on and on.
The solution is not to restore BASEPRI and simply leave it at
zero. This is a workaround as a proper fix would involve
invasion changes to the PM subsystem.

Also, _sys_pm_power_state_exit_post_ops() is not being called
when deep sleep is involved, so PRIMASK needs to be reset
after coming out of deep sleep.

Fixes #23274

Signed-off-by: Daniel Leung <daniel.leung@intel.com>
2020-04-10 07:48:33 -04:00
..
arm drivers: gpio: cmsdk_ahb: Convert driver to be full DTS based 2020-04-03 04:11:36 -05:00
atmel_sam soc: sam4e: fix uart1 pinmap 2020-03-28 10:16:42 -05:00
atmel_sam0 soc: atmel_sam0: Convert to new DT_INST macros 2020-03-27 11:02:57 -05:00
bcm_vk
common/cortex_m
cypress
microchip_mec soc: mec1501: modifies interrupt restoration after deep sleep 2020-04-10 07:48:33 -04:00
nordic_nrf soc: nordic_nrf: validate base addresses with new DT API 2020-04-07 08:00:29 -05:00
nxp_imx drivers: counter: imx_epit: Convert driver to new DT_INST macros 2020-04-04 09:34:00 -05:00
nxp_kinetis global: Replace BUILD_ASSERT_MSG() with BUILD_ASSERT() 2020-03-31 07:18:06 +02:00
nxp_lpc boards: lpcxpresso54114: Enable i2c instance 4 2020-04-09 08:52:13 -05:00
qemu_cortex_a53 soc: arm: qemu_cortex_a53: Convert to new DT_INST macros 2020-03-31 19:28:47 -05:00
silabs_exx32 soc: silabs: Convert to new DT_INST macros 2020-03-26 05:26:23 -05:00
st_stm32 soc: arm: st_stm32: stm32l0: Add RTC support 2020-04-08 12:18:16 -05:00
ti_lm3s6965
ti_simplelink kernel/timeout: Make timeout arguments an opaque type 2020-03-31 19:40:47 -04:00
xilinx_zynqmp arch: arm: aarch32: Rename cortex_r to cortex_a_r 2020-03-26 11:20:36 +01:00
CMakeLists.txt
Kconfig