public inbox for linux-mmc@vger.kernel.org
 help / color / mirror / Atom feed
* 2.36.1 sdhci R5C822 regression
@ 2010-12-17 10:14 Bringfried Stecklum
  2010-12-17 15:30 ` Chris Ball
  0 siblings, 1 reply; 6+ messages in thread
From: Bringfried Stecklum @ 2010-12-17 10:14 UTC (permalink / raw)
  To: linux-mmc; +Cc: cjb

I recently upgraded from 3.6.31-22 to 3.6.36-1 (Ubuntu kernel nomenclature) and
am quite happy with it apart from the card reader

stecklum@extragalactix:~$ lspci |grep Ricoh
03:01.0 FireWire (IEEE 1394): Ricoh Co Ltd R5C832 IEEE 1394 Controller (rev 05)
03:01.1 SD Host controller: Ricoh Co Ltd R5C822 SD/SDIO/MMC/MS/MSPro Host
Adapter (rev 22)
03:01.2 System peripheral: Ricoh Co Ltd R5C592 Memory Stick Bus Host Adapter
(rev 12)
03:01.3 System peripheral: Ricoh Co Ltd xD-Picture Card Controller (rev 12)

which used to work flawlessly in the past, e.g. with previous kernel 2.6.31-22.

On resume from hibernation (suspend is fine) a kernel trace happens along with
the well-know "IRQ nobody cared" statement (see below). The interrupt gets
disabled, and since mmc0 is compiled into the kernel, I cannot do anything about
it (I tried CONFIG_MMC_RICOH_MMC=m but this will be overriden during the build).

I checked with both WLAN and WWAN disabled in BIOS, same behaviour. So spurious 
interrupts can be ruled out. Also booting with irqpoll does not help.


extragalactix kernel: [  156.991348] Restarting tasks ... done.
Nov 24 09:58:43 extragalactix kernel: [  157.420395] tg3 0000:09:00.0: eth0:
Link is up at 100 Mbps, full duplex
Nov 24 09:58:43 extragalactix kernel: [  157.420404] tg3 0000:09:00.0: eth0:
Flow control is on for TX and on for RX
Nov 24 09:58:43 extragalactix anacron[6896]: Anacron 2.3 started on 2010-11-24
Nov 24 09:58:43 extragalactix anacron[6896]: Normal exit (0 jobs run)
Nov 24 09:58:43 extragalactix laptop-mode: Laptop mode
Nov 24 09:58:43 extragalactix laptop-mode: enabled,
Nov 24 09:58:43 extragalactix laptop-mode: not active [unchanged]
Nov 24 09:58:43 extragalactix kernel: [  158.018563] irq 18: nobody cared(try
booting with the "irqpoll" option)
Nov 24 09:58:43 extragalactix kernel: [  158.018724] Pid: 0, comm: swapper
Tainted: P            2.6.36-1-generic #7
Nov 24 09:58:43 extragalactix kernel: [  158.018726] Call Trace:
Nov 24 09:58:43 extragalactix kernel: [  158.018728]  <IRQ>
[<ffffffffa00c5ead>] ? r852_irq+0xfd/0x290 [r852]
Nov 24 09:58:43 extragalactix kernel: [  158.018746]  [<ffffffff810ca5e6>]
__report_bad_irq+0x26/0xa0
Nov 24 09:58:43 extragalactix kernel: [  158.018749]  [<ffffffff810ca7e8>]
note_interrupt+0x188/0x1d0
Nov 24 09:58:43 extragalactix kernel: [  158.018751]  [<ffffffff810caffd>]
handle_fasteoi_irq+0xdd/0x110
Nov 24 09:58:43 extragalactix kernel: [  158.018755]  [<ffffffff8100dbaf>]
handle_irq+0x1f/0x30
Nov 24 09:58:43 extragalactix kernel: [  158.018757]  [<ffffffff8100d06a>]
do_IRQ+0x6a/0xf0
Nov 24 09:58:43 extragalactix kernel: [  158.018761]  [<ffffffff816019d3>]
ret_from_intr+0x0/0x11
Nov 24 09:58:43 extragalactix kernel: [  158.018762]  <EOI>
[<ffffffff81375e6f>] ? acpi_idle_enter_c1+0x9f/0xbe
Nov 24 09:58:43 extragalactix kernel: [  158.018768]  [<ffffffff81375e4d>] ?
acpi_idle_enter_c1+0x7d/0xbe
Nov 24 09:58:43 extragalactix kernel: [  158.018772]  [<ffffffff814c437c>]
cpuidle_idle_call+0xcc/0x150
Nov 24 09:58:43 extragalactix kernel: [  158.018775]  [<ffffffff8100a1a7>]
cpu_idle+0xc7/0x170
Nov 24 09:58:43 extragalactix kernel: [  158.018778]  [<ffffffff815e583d>]
rest_init+0x6d/0x80
Nov 24 09:58:43 extragalactix kernel: [  158.018782]  [<ffffffff81cdeead>]
start_kernel+0x340/0x409
Nov 24 09:58:43 extragalactix kernel: [  158.018784]  [<ffffffff81cde2c0>]
x86_64_start_reservations+0xa0/0xc1
Nov 24 09:58:43 extragalactix kernel: [  158.018787]  [<ffffffff81cde3ea>]
x86_64_start_kernel+0x109/0x124
Nov 24 09:58:43 extragalactix kernel: [  158.018789]  [<ffffffff81cde140>] ?
early_idt_handler+0x0/0x71
Nov 24 09:58:43 extragalactix kernel: [  158.018791] handlers:
Nov 24 09:58:43 extragalactix kernel: [  158.018843] [<ffffffffa00c5db0>]
(r852_irq+0x0/0x290 [r852])
Nov 24 09:58:43 extragalactix kernel: [  158.018983] [<ffffffffa0130ab0>]
(sdhci_irq+0x0/0x650 [sdhci])
Nov 24 09:58:43 extragalactix kernel: [  158.019128] Disabling IRQ #18
...
extragalactix kernel: [  167.040050] mmc0: Timeout waiting for hardware interrupt.
Nov 24 09:58:53 extragalactix kernel: [  167.040055] sdhci: ==============
REGISTER DUMP ==============
Nov 24 09:58:53 extragalactix kernel: [  167.040061] sdhci: Sys addr: 0x00000000
| Version:  0x00000400
Nov 24 09:58:53 extragalactix kernel: [  167.040066] sdhci: Blk size: 0x00000000
| Blk cnt:  0x00000000
Nov 24 09:58:53 extragalactix kernel: [  167.040070] sdhci: Argument: 0x00000000
| Trn mode: 0x00000000
Nov 24 09:58:53 extragalactix kernel: [  167.040074] sdhci: Present:  0x01f70000
| Host ctl: 0x00000001
Nov 24 09:58:53 extragalactix kernel: [  167.040078] sdhci: Power:    0x0000000f
| Blk gap:  0x00000000
Nov 24 09:58:53 extragalactix kernel: [  167.040082] sdhci: Wake-up:  0x00000000
| Clock:    0x00004007
Nov 24 09:58:53 extragalactix kernel: [  167.040086] sdhci: Timeout:  0x00000000
| Int stat: 0x00000000
Nov 24 09:58:53 extragalactix kernel: [  167.040089] sdhci: Int enab: 0x00ff00c3
| Sig enab: 0x00ff00c3
Nov 24 09:58:53 extragalactix kernel: [  167.040093] sdhci: AC12 err: 0x00000000
| Slot int: 0x00000001
Nov 24 09:58:53 extragalactix kernel: [  167.040097] sdhci: Caps:     0x00c02120
| Max curr: 0x00000040
Nov 24 09:58:53 extragalactix kernel: [  167.040098] sdhci:
===========================================

-- 
Dr. Bringfried Stecklum
Thüringer Landessternwarte
Sternwarte 5
07778 Tautenburg, Germany
Phone: +49-36427-863-54
FAX:   +49-36427-863-29




^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: 2.36.1 sdhci R5C822 regression
  2010-12-17 10:14 2.36.1 sdhci R5C822 regression Bringfried Stecklum
@ 2010-12-17 15:30 ` Chris Ball
  2010-12-17 17:56   ` Bringfried Stecklum
  0 siblings, 1 reply; 6+ messages in thread
From: Chris Ball @ 2010-12-17 15:30 UTC (permalink / raw)
  To: Bringfried Stecklum; +Cc: linux-mmc

Hi Bringfried,

On Fri, Dec 17, 2010 at 11:14:36AM +0100, Bringfried Stecklum wrote:
> On resume from hibernation (suspend is fine) a kernel trace happens along with
> the well-know "IRQ nobody cared" statement (see below). The interrupt gets
> disabled, and since mmc0 is compiled into the kernel, I cannot do anything about
> it (I tried CONFIG_MMC_RICOH_MMC=m but this will be overriden during the build).

Please try the patch below, and let us know if it cures the problem for
you.  Thanks!  (This patch is already scheduled for inclusion in 2.6.37.)

- Chris.

From: Takashi Iwai <tiwai@suse.de>
Date: Fri, 10 Dec 2010 08:40:31 +0100
Subject: mmc: Fix re-probing with PM_POST_RESTORE notification

In the error-path where PM notifies PM_POST_RESTORE, the rescan-blockage
should be cleared as well.  Otherwise it'll be never re-probed.

Also, as a bonus, this fixes a bug in S4 with user-mode suspend in the
current code, as it sends PM_POST_RESTORE instead of
PM_POST_HIBERNATION wrongly.

Cc: <stable@kernel.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Chris Ball <cjb@laptop.org>
---
 drivers/mmc/core/core.c |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c
index 6286898..e7c0c78 100644
--- a/drivers/mmc/core/core.c
+++ b/drivers/mmc/core/core.c
@@ -1833,6 +1833,7 @@ int mmc_pm_notify(struct notifier_block *notify_block,
 
 	case PM_POST_SUSPEND:
 	case PM_POST_HIBERNATION:
+	case PM_POST_RESTORE:
 
 		spin_lock_irqsave(&host->lock, flags);
 		host->rescan_disable = 0;
-- 
Chris Ball   <cjb@laptop.org>   <http://printf.net/>
One Laptop Per Child

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: 2.36.1 sdhci R5C822 regression
  2010-12-17 15:30 ` Chris Ball
@ 2010-12-17 17:56   ` Bringfried Stecklum
  2010-12-18 19:37     ` Bringfried Stecklum
  2010-12-31  3:47     ` Chris Ball
  0 siblings, 2 replies; 6+ messages in thread
From: Bringfried Stecklum @ 2010-12-17 17:56 UTC (permalink / raw)
  To: Chris Ball; +Cc: linux-mmc

Chris Ball wrote:
> Hi Bringfried,
> 
> On Fri, Dec 17, 2010 at 11:14:36AM +0100, Bringfried Stecklum wrote:
>> On resume from hibernation (suspend is fine) a kernel trace happens along with
>> the well-know "IRQ nobody cared" statement (see below). The interrupt gets
>> disabled, and since mmc0 is compiled into the kernel, I cannot do anything about
>> it (I tried CONFIG_MMC_RICOH_MMC=m but this will be overriden during the build).
> 
> Please try the patch below, and let us know if it cures the problem for
> you.  Thanks!  (This patch is already scheduled for inclusion in 2.6.37.)
> 
> - Chris.
> 
> From: Takashi Iwai <tiwai@suse.de>
> Date: Fri, 10 Dec 2010 08:40:31 +0100
> Subject: mmc: Fix re-probing with PM_POST_RESTORE notification
> 
> In the error-path where PM notifies PM_POST_RESTORE, the rescan-blockage
> should be cleared as well.  Otherwise it'll be never re-probed.
> 
> Also, as a bonus, this fixes a bug in S4 with user-mode suspend in the
> current code, as it sends PM_POST_RESTORE instead of
> PM_POST_HIBERNATION wrongly.
> 
> Cc: <stable@kernel.org>
> Signed-off-by: Takashi Iwai <tiwai@suse.de>
> Signed-off-by: Chris Ball <cjb@laptop.org>
> ---
>  drivers/mmc/core/core.c |    1 +
>  1 files changed, 1 insertions(+), 0 deletions(-)
> 
> diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c
> index 6286898..e7c0c78 100644
> --- a/drivers/mmc/core/core.c
> +++ b/drivers/mmc/core/core.c
> @@ -1833,6 +1833,7 @@ int mmc_pm_notify(struct notifier_block *notify_block,
>  
>  	case PM_POST_SUSPEND:
>  	case PM_POST_HIBERNATION:
> +	case PM_POST_RESTORE:
>  
>  		spin_lock_irqsave(&host->lock, flags);
>  		host->rescan_disable = 0;
Thanks for the patch which, however, does not solve the problem. Now I don't get
the oops immediately upon resume from hibernation but later, on inserting
the card (2.6.37 is no solution at the moment since my system is on a Reiser4
partition, so I have to wait for those patches).

Dec 17 18:44:34 extragalactix kernel: [  161.320496] irq 18: nobody cared (try
booting with the "irqpoll" option)
Dec 17 18:44:34 extragalactix kernel: [  161.320510] Pid: 0, comm: kworker/0:0
Tainted: P            2.6.36-1-generic #7
Dec 17 18:44:34 extragalactix kernel: [  161.320515] Call Trace:
Dec 17 18:44:34 extragalactix kernel: [  161.320520]  <IRQ>
[<ffffffffa01131b2>] ? sdhci_irq+0xd2/0x2c4 [sdhci]
Dec 17 18:44:34 extragalactix kernel: [  161.320562]  [<ffffffff810ca5e6>]
__report_bad_irq+0x26/0xa0
Dec 17 18:44:34 extragalactix kernel: [  161.320571]  [<ffffffff810ca7e8>]
note_interrupt+0x188/0x1d0
Dec 17 18:44:34 extragalactix kernel: [  161.320579]  [<ffffffff810caffd>]
handle_fasteoi_irq+0xdd/0x110
Dec 17 18:44:34 extragalactix kernel: [  161.320589]  [<ffffffff8100dbaf>]
handle_irq+0x1f/0x30
Dec 17 18:44:34 extragalactix kernel: [  161.320596]  [<ffffffff8100d06a>]
do_IRQ+0x6a/0xf0
Dec 17 18:44:34 extragalactix kernel: [  161.320606]  [<ffffffff816019d3>]
ret_from_intr+0x0/0x11
Dec 17 18:44:34 extragalactix kernel: [  161.320610]  <EOI>
[<ffffffff813761fa>] ? acpi_idle_enter_simple+0xe4/0x11e
Dec 17 18:44:34 extragalactix kernel: [  161.320628]  [<ffffffff813761f3>] ?
acpi_idle_enter_simple+0xdd/0x11e
Dec 17 18:44:34 extragalactix kernel: [  161.320638]  [<ffffffff814c435c>]
cpuidle_idle_call+0xcc/0x150
Dec 17 18:44:34 extragalactix kernel: [  161.320647]  [<ffffffff8100a1a7>]
cpu_idle+0xc7/0x170
Dec 17 18:44:34 extragalactix kernel: [  161.320657]  [<ffffffff815fa87d>]
start_secondary+0xdd/0x110
Dec 17 18:44:34 extragalactix kernel: [  161.320662] handlers:
Dec 17 18:44:34 extragalactix kernel: [  161.320666] [<ffffffffa0144db0>]
(r852_irq+0x0/0x290 [r852])
Dec 17 18:44:34 extragalactix kernel: [  161.320679] [<ffffffffa01130e0>]
(sdhci_irq+0x0/0x2c4 [sdhci])
Dec 17 18:44:34 extragalactix kernel: [  161.320691] Disabling IRQ #18
Dec 17 18:44:43 extragalactix kernel: [  169.760266] mmc0: Timeout waiting for
hardware interrupt.
Dec 17 18:44:43 extragalactix kernel: [  169.760276] sdhci: ==============
REGISTER DUMP ==============
Dec 17 18:44:43 extragalactix kernel: [  169.760285] sdhci: Sys addr: 0x00000000
| Version:  0x00000400
Dec 17 18:44:43 extragalactix kernel: [  169.760293] sdhci: Blk size: 0x00000000
| Blk cnt:  0x00000000
Dec 17 18:44:43 extragalactix kernel: [  169.760300] sdhci: Argument: 0x00000000
| Trn mode: 0x00000000
Dec 17 18:44:43 extragalactix kernel: [  169.760307] sdhci: Present:  0x01f70000
| Host ctl: 0x00000001
Dec 17 18:44:43 extragalactix kernel: [  169.760314] sdhci: Power:    0x0000000f
| Blk gap:  0x00000000
Dec 17 18:44:43 extragalactix kernel: [  169.760322] sdhci: Wake-up:  0x00000000
| Clock:    0x00004007
Dec 17 18:44:43 extragalactix kernel: [  169.760329] sdhci: Timeout:  0x00000000
| Int stat: 0x00000000
Dec 17 18:44:43 extragalactix kernel: [  169.760336] sdhci: Int enab: 0x00ff00c3
| Sig enab: 0x00ff00c3
Dec 17 18:44:43 extragalactix kernel: [  169.760343] sdhci: AC12 err: 0x00000000
| Slot int: 0x00000001
Dec 17 18:44:43 extragalactix kernel: [  169.760351] sdhci: Caps:     0x00c02120
| Max curr: 0x00000040
Dec 17 18:44:43 extragalactix kernel: [  169.760355] sdhci:
===========================================
...



^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: 2.36.1 sdhci R5C822 regression
  2010-12-17 17:56   ` Bringfried Stecklum
@ 2010-12-18 19:37     ` Bringfried Stecklum
  2010-12-20 10:18       ` Bringfried Stecklum
  2010-12-31  3:47     ` Chris Ball
  1 sibling, 1 reply; 6+ messages in thread
From: Bringfried Stecklum @ 2010-12-18 19:37 UTC (permalink / raw)
  To: linux-mmc

I just tried with the irqpoll option which prevents the kernel oops indeed
(unlike without the patch) but I still get the timeout waiting for hardware
interrupt message. The number of irqs seems to be exceedingly high, e.g.
 
cat /proc/interrupts 
           CPU0       CPU1       
  0:      20239       2789   IO-APIC-edge      timer
  1:         84          2   IO-APIC-edge      i8042
  8:          0          1   IO-APIC-edge      rtc0
  9:          0          1   IO-APIC-fasteoi   acpi
 12:        181         73   IO-APIC-edge      i8042
 14:       1431        340   IO-APIC-edge      ata_piix
 15:          0          0   IO-APIC-edge      ata_piix
 16:          0          0   IO-APIC-fasteoi   pata_jmicron
 18:     933200          0   IO-APIC-fasteoi   r852, mmc0
...


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: 2.36.1 sdhci R5C822 regression
  2010-12-18 19:37     ` Bringfried Stecklum
@ 2010-12-20 10:18       ` Bringfried Stecklum
  0 siblings, 0 replies; 6+ messages in thread
From: Bringfried Stecklum @ 2010-12-20 10:18 UTC (permalink / raw)
  To: linux-mmc

I figured out that a suspend to memory after resuming from hibernation is a
remedy. When the system is back from suspend, the card is properly reckognised.


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: 2.36.1 sdhci R5C822 regression
  2010-12-17 17:56   ` Bringfried Stecklum
  2010-12-18 19:37     ` Bringfried Stecklum
@ 2010-12-31  3:47     ` Chris Ball
  1 sibling, 0 replies; 6+ messages in thread
From: Chris Ball @ 2010-12-31  3:47 UTC (permalink / raw)
  To: Bringfried Stecklum; +Cc: linux-mmc

Hi Bringfried,

On Fri, Dec 17, 2010 at 06:56:49PM +0100, Bringfried Stecklum wrote:
> Thanks for the patch which, however, does not solve the problem. Now I don't
> get the oops immediately upon resume from hibernation but later, on inserting
> the card (2.6.37 is no solution at the moment since my system is on a Reiser4
> partition, so I have to wait for those patches).

If you're able to at some point, it'd be very helpful to do some Git
bisection here.

Thanks,

-- 
Chris Ball   <cjb@laptop.org>   <http://printf.net/>
One Laptop Per Child

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2010-12-31  3:47 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-12-17 10:14 2.36.1 sdhci R5C822 regression Bringfried Stecklum
2010-12-17 15:30 ` Chris Ball
2010-12-17 17:56   ` Bringfried Stecklum
2010-12-18 19:37     ` Bringfried Stecklum
2010-12-20 10:18       ` Bringfried Stecklum
2010-12-31  3:47     ` Chris Ball

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox