Skip to contentSkip to conversation

Oops on linux-next during reboot, possibly related to "mmc: core: Handle card shutdown from mmc_bus"

DISCUSSION Tuomas Tynkkynen 3 participants 3 messages Jul 1, 2013 – Jul 2, 2013 MMC, SD and SDIO

lore
Share & tools
lore
#0 lore raw

Hi,

On next-20130628 I get the following Oops during reboot:

[   89.814921] Unable to handle kernel NULL pointer dereference at virtual address 0000004c
[   89.824208] pgd = ecd54000
[   89.827276] [0000004c] *pgd=00000000
[   89.831340] Internal error: Oops: 5 [#1] PREEMPT SMP ARM

[<c040b244>] (mmc_bus_shutdown+0x24/0x70) from [<c032aa6c>] (device_shutdown+0x44/0x19c) [<c032aa6c>] (device_shutdown+0x44/0x19c) from [<c0054508>] (kernel_restart_prepare+0x44/0x48) [<c0054508>] (kernel_restart_prepare+0x44/0x48) from [<c0054528>] (kernel_restart+0x1c/0x70) [<c0054528>] (kernel_restart+0x1c/0x70) from [<c0054704>] (SyS_reboot+0x168/0x1f0) [<c0054704>] (SyS_reboot+0x168/0x1f0) from [<c000ed00>] (ret_fast_syscall+0x0/0x30)

The corresponding line in mmc_bus_shutdown is "drv->shutdown(card);" and 'drv' seems indeed to be NULL.

#1 lore raw

Hi Tuomas,

It seems to produce this problem when wifi is enabled. In case of WiFi, used the sdio_bus_register in sdio_bus.c.

Then i think right that "shutdown callback function" is existed in WiFi driver. And need to use the sdio_bus_shutdown, not mmc_bus_shutdown.

sdio is used sdio_driver and mmc/sd is used mmc_driver. I think that didnt consider this point.

Maybe need to check whether drv is NULL or not.
If i misunderstood something, let me know.

Best Regards,
Jaehoon Chung

Quoted 21 lines · Tuomas Tynkkynen

Hi,

On next-20130628 I get the following Oops during reboot:

[   89.814921] Unable to handle kernel NULL pointer dereference at virtual address 0000004c
[   89.824208] pgd = ecd54000
[   89.827276] [0000004c] *pgd=00000000
[   89.831340] Internal error: Oops: 5 [#1] PREEMPT SMP ARM

[<c040b244>] (mmc_bus_shutdown+0x24/0x70) from [<c032aa6c>] (device_shutdown+0x44/0x19c) [<c032aa6c>] (device_shutdown+0x44/0x19c) from [<c0054508>] (kernel_restart_prepare+0x44/0x48) [<c0054508>] (kernel_restart_prepare+0x44/0x48) from [<c0054528>] (kernel_restart+0x1c/0x70) [<c0054528>] (kernel_restart+0x1c/0x70) from [<c0054704>] (SyS_reboot+0x168/0x1f0) [<c0054704>] (SyS_reboot+0x168/0x1f0) from [<c000ed00>] (ret_fast_syscall+0x0/0x30)

The corresponding line in mmc_bus_shutdown is "drv->shutdown(card);" and 'drv' seems indeed to be NULL.
--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html

#2 lore raw
In reply to Tuomas Tynkkynen
Quoted 8 lines · Tuomas Tynkkynen

Hi,

On next-20130628 I get the following Oops during reboot:

[   89.814921] Unable to handle kernel NULL pointer dereference at virtual address 0000004c
[   89.824208] pgd = ecd54000
[   89.827276] [0000004c] *pgd=00000000
[   89.831340] Internal error: Oops: 5 [#1] PREEMPT SMP ARM
Quoted 8 lines

[<c040b244>] (mmc_bus_shutdown+0x24/0x70) from [<c032aa6c>] (device_shutdown+0x44/0x19c) [<c032aa6c>] (device_shutdown+0x44/0x19c) from [<c0054508>] (kernel_restart_prepare+0x44/0x48) [<c0054508>] (kernel_restart_prepare+0x44/0x48) from [<c0054528>] (kernel_restart+0x1c/0x70) [<c0054528>] (kernel_restart+0x1c/0x70) from [<c0054704>] (SyS_reboot+0x168/0x1f0) [<c0054704>] (SyS_reboot+0x168/0x1f0) from [<c000ed00>] (ret_fast_syscall+0x0/0x30)

The corresponding line in mmc_bus_shutdown is "drv->shutdown(card);" and 'drv' seems indeed to be NULL.

Hi Tuomas,

Your observations is correct, thanks for reporting and testing.

I have just sent a fixup patch that will solve the issue.

Kind regards
Ulf Hansson