Skip to contentSkip to conversation

mmc: core: add missing pm event in mmc_pm_notify to fix hib restore

PATCH New grygorii.strashko at linaro.org 2 participants 3 messages Apr 23, 2015 – Apr 24, 2015 MMC, SD and SDIO

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 mmc: core: add missing pm event in mmc_pm_notify to fix hib restore

From: Grygorii Strashko <[email protected]>

The PM_RESTORE_PREPARE is not handled now in mmc_pm_notify(), as result mmc_rescan() could be scheduled and executed at late hibernation restore stages when MMC device is suspended already - which, in turn, will lead to system crash on TI dra7-evm board:

WARNING: CPU: 0 PID: 3188 at drivers/bus/omap_l3_noc.c:148 l3_interrupt_handler+0x258/0x374()

44000000.ocp:L3 Custom Error: MASTER MPU TARGET L4_PER1_P3 (Idle): Data Access in User mode during Functional access

Hence, add missed PM_RESTORE_PREPARE PM event in mmc_pm_notify().

---
 drivers/mmc/core/core.c | 1 +
 1 file changed, 1 insertion(+)
drivers/mmc/core/core.c +1 -0
index c296bc0..92e7671 100644
@@ -2651,6 +2651,7 @@ int mmc_pm_notify(struct notifier_block *notify_block,
 	switch (mode) {
 	case PM_HIBERNATION_PREPARE:
 	case PM_SUSPEND_PREPARE:
+	case PM_RESTORE_PREPARE:
 		spin_lock_irqsave(&host->lock, flags);
 		host->rescan_disable = 1;
 		spin_unlock_irqrestore(&host->lock, flags);
Signature · 1 line
1.9.1
#1 lore raw

PATCH 1/1 mmc: core: add missing pm event in mmc_pm_notify to fix hib restore

Quoted 7 lines · On 23 April 2015 at 12:43, <[email protected]> wrote:

From: Grygorii Strashko <[email protected]>

The PM_RESTORE_PREPARE is not handled now in mmc_pm_notify(), as result mmc_rescan() could be scheduled and executed at late hibernation restore stages when MMC device is suspended already - which, in turn, will lead to system crash on TI dra7-evm board:

Quoted 6 lines
WARNING: CPU: 0 PID: 3188 at drivers/bus/omap_l3_noc.c:148 l3_interrupt_handler+0x258/0x374()

44000000.ocp:L3 Custom Error: MASTER MPU TARGET L4_PER1_P3 (Idle): Data Access in User mode during Functional access

Hence, add missed PM_RESTORE_PREPARE PM event in mmc_pm_notify().

Huh, that was an old bug you found. :-)

I have applied it for fixes and added the below fixes tag.

Fixes 4c2ef25fe0b8 (mmc: fix all hangs related to mmc/sd card

insert/removal during suspend/resume)

Thanks and kind regards!
Uffe

Quoted 19 lines
---
 drivers/mmc/core/core.c | 1 +
 1 file changed, 1 insertion(+)
drivers/mmc/core/core.c +1 -1
index c296bc0..92e7671 100644
@@ -2651,6 +2651,7 @@ int mmc_pm_notify(struct notifier_block *notify_block,
        switch (mode) {
        case PM_HIBERNATION_PREPARE:
        case PM_SUSPEND_PREPARE:
+       case PM_RESTORE_PREPARE:
                spin_lock_irqsave(&host->lock, flags);
                host->rescan_disable = 1;
                spin_unlock_irqrestore(&host->lock, flags);
--

1.9.1

#2 lore raw

PATCH 1/1 mmc: core: add missing pm event in mmc_pm_notify to fix hib restore

Quoted 8 lines · Ulf Hansson
Quoted 7 lines · On 23 April 2015 at 12:43, <[email protected]> wrote:

From: Grygorii Strashko <[email protected]>

The PM_RESTORE_PREPARE is not handled now in mmc_pm_notify(), as result mmc_rescan() could be scheduled and executed at late hibernation restore stages when MMC device is suspended already - which, in turn, will lead to system crash on TI dra7-evm board:

Quoted 8 lines
Quoted 6 lines
WARNING: CPU: 0 PID: 3188 at drivers/bus/omap_l3_noc.c:148 l3_interrupt_handler+0x258/0x374()

44000000.ocp:L3 Custom Error: MASTER MPU TARGET L4_PER1_P3 (Idle): Data Access in User mode during Functional access

Hence, add missed PM_RESTORE_PREPARE PM event in mmc_pm_notify().

Huh, that was an old bug you found. :-)

oh yes. it's happened thanks to HW issue on my board which generates a flood of SDCD IRQs :)

It's the worst case ever to track wrong/missed PM notifiers (

Quoted 5 lines

I have applied it for fixes and added the below fixes tag.

Fixes 4c2ef25fe0b8 (mmc: fix all hangs related to mmc/sd card

insert/removal during suspend/resume)

Thanks.

Signature · 2 lines
regards,
-grygorii