Patchwork [1/2] mxc_nand: fix Unbalanced enable for IRQ

login
register
mail settings
Submitter Eric Benard
Date June 10, 2010, 2:03 p.m.
Message ID <1276178584-10074-1-git-send-email-eric@eukrea.com>
Download mbox | patch
Permalink /patch/55223/
State Accepted
Commit 6a8cfcfb0de881735df4031eb5cc99be3d0971e9
Headers show

Comments

Eric Benard - June 10, 2010, 2:03 p.m.
* preset should be done before sending the reset command

* without this, I get the following error on an i.MX35 :
[    0.900000] ------------[ cut here ]------------
[    0.900000] WARNING: at kernel/irq/manage.c:290 __enable_irq+0x4c/0x88()
[    0.900000] Unbalanced enable for IRQ 33
[    0.900000] Modules linked in:
[    0.900000] [<c002ffb8>] (unwind_backtrace+0x0/0xf0) from [<c02f7d0c>] (dump_stack+0x18/0x1c)
[    0.900000] [<c02f7d0c>] (dump_stack+0x18/0x1c) from [<c0049a44>] (warn_slowpath_common+0x54/0x6c)
[    0.900000] [<c0049a44>] (warn_slowpath_common+0x54/0x6c) from [<c0049b00>] (warn_slowpath_fmt+0x38/0x40)
[    0.900000] [<c0049b00>] (warn_slowpath_fmt+0x38/0x40) from [<c008f65c>] (__enable_irq+0x4c/0x88)
[    0.900000] [<c008f65c>] (__enable_irq+0x4c/0x88) from [<c008fca0>] (enable_irq+0x54/0x98)
[    0.900000] [<c008fca0>] (enable_irq+0x54/0x98) from [<c021e618>] (wait_op_done+0x40/0x134)
[    0.900000] [<c021e618>] (wait_op_done+0x40/0x134) from [<c021e808>] (send_cmd+0x30/0x38)
[    0.900000] [<c021e808>] (send_cmd+0x30/0x38) from [<c021eb8c>] (mxc_nand_command+0x26c/0x328)
[    0.900000] [<c021eb8c>] (mxc_nand_command+0x26c/0x328) from [<c021aa60>] (nand_scan_ident+0x188/0x6c0)
[    0.900000] [<c021aa60>] (nand_scan_ident+0x188/0x6c0) from [<c001a9cc>] (mxcnd_probe+0x2b8/0x3d0)
[    0.900000] [<c001a9cc>] (mxcnd_probe+0x2b8/0x3d0) from [<c01f9e88>] (platform_drv_probe+0x20/0x24)
[    0.900000] [<c01f9e88>] (platform_drv_probe+0x20/0x24) from [<c01f8c38>] (driver_probe_device+0xb0/0x164)
[    0.900000] [<c01f8c38>] (driver_probe_device+0xb0/0x164) from [<c01f8d54>] (__driver_attach+0x68/0x8c)
[    0.900000] [<c01f8d54>] (__driver_attach+0x68/0x8c) from [<c01f8348>] (bus_for_each_dev+0x50/0x84)
[    0.900000] [<c01f8348>] (bus_for_each_dev+0x50/0x84) from [<c01f8a9c>] (driver_attach+0x20/0x28)
[    0.900000] [<c01f8a9c>] (driver_attach+0x20/0x28) from [<c01f7c00>] (bus_add_driver+0x144/0x2dc)
[    0.900000] [<c01f7c00>] (bus_add_driver+0x144/0x2dc) from [<c01f906c>] (driver_register+0xb0/0x13c)
[    0.900000] [<c01f906c>] (driver_register+0xb0/0x13c) from [<c01fa13c>] (platform_driver_register+0x4c/0x60)
[    0.900000] [<c01fa13c>] (platform_driver_register+0x4c/0x60) from [<c01fa170>] (platform_driver_probe+0x20/0xa0)
[    0.900000] [<c01fa170>] (platform_driver_probe+0x20/0xa0) from [<c001a708>] (mxc_nd_init+0x18/0x24)
[    0.900000] [<c001a708>] (mxc_nd_init+0x18/0x24) from [<c002938c>] (do_one_initcall+0x64/0x1bc)
[    0.900000] [<c002938c>] (do_one_initcall+0x64/0x1bc) from [<c00084c4>] (kernel_init+0xe8/0x1ac)
[    0.900000] [<c00084c4>] (kernel_init+0xe8/0x1ac) from [<c002aee8>] (kernel_thread_exit+0x0/0x8)
[    0.900000] ---[ end trace 8bf72ac6ba089a19 ]---
[    1.140000] NAND device: Manufacturer ID: 0x2c, Chip ID: 0xda (Micron NAND 256MiB 3,3V 8-bit)

Signed-off-by: Eric Bénard <eric@eukrea.com>
---
 drivers/mtd/nand/mxc_nand.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
Sascha Hauer - July 16, 2010, 6:53 a.m.
On Thu, Jun 10, 2010 at 04:03:04PM +0200, Eric Bénard wrote:
> * preset should be done before sending the reset command

Has this been picked up somewhere? Otherwise I would do.

Sascha

> 
> * without this, I get the following error on an i.MX35 :
> [    0.900000] ------------[ cut here ]------------
> [    0.900000] WARNING: at kernel/irq/manage.c:290 __enable_irq+0x4c/0x88()
> [    0.900000] Unbalanced enable for IRQ 33
> [    0.900000] Modules linked in:
> [    0.900000] [<c002ffb8>] (unwind_backtrace+0x0/0xf0) from [<c02f7d0c>] (dump_stack+0x18/0x1c)
> [    0.900000] [<c02f7d0c>] (dump_stack+0x18/0x1c) from [<c0049a44>] (warn_slowpath_common+0x54/0x6c)
> [    0.900000] [<c0049a44>] (warn_slowpath_common+0x54/0x6c) from [<c0049b00>] (warn_slowpath_fmt+0x38/0x40)
> [    0.900000] [<c0049b00>] (warn_slowpath_fmt+0x38/0x40) from [<c008f65c>] (__enable_irq+0x4c/0x88)
> [    0.900000] [<c008f65c>] (__enable_irq+0x4c/0x88) from [<c008fca0>] (enable_irq+0x54/0x98)
> [    0.900000] [<c008fca0>] (enable_irq+0x54/0x98) from [<c021e618>] (wait_op_done+0x40/0x134)
> [    0.900000] [<c021e618>] (wait_op_done+0x40/0x134) from [<c021e808>] (send_cmd+0x30/0x38)
> [    0.900000] [<c021e808>] (send_cmd+0x30/0x38) from [<c021eb8c>] (mxc_nand_command+0x26c/0x328)
> [    0.900000] [<c021eb8c>] (mxc_nand_command+0x26c/0x328) from [<c021aa60>] (nand_scan_ident+0x188/0x6c0)
> [    0.900000] [<c021aa60>] (nand_scan_ident+0x188/0x6c0) from [<c001a9cc>] (mxcnd_probe+0x2b8/0x3d0)
> [    0.900000] [<c001a9cc>] (mxcnd_probe+0x2b8/0x3d0) from [<c01f9e88>] (platform_drv_probe+0x20/0x24)
> [    0.900000] [<c01f9e88>] (platform_drv_probe+0x20/0x24) from [<c01f8c38>] (driver_probe_device+0xb0/0x164)
> [    0.900000] [<c01f8c38>] (driver_probe_device+0xb0/0x164) from [<c01f8d54>] (__driver_attach+0x68/0x8c)
> [    0.900000] [<c01f8d54>] (__driver_attach+0x68/0x8c) from [<c01f8348>] (bus_for_each_dev+0x50/0x84)
> [    0.900000] [<c01f8348>] (bus_for_each_dev+0x50/0x84) from [<c01f8a9c>] (driver_attach+0x20/0x28)
> [    0.900000] [<c01f8a9c>] (driver_attach+0x20/0x28) from [<c01f7c00>] (bus_add_driver+0x144/0x2dc)
> [    0.900000] [<c01f7c00>] (bus_add_driver+0x144/0x2dc) from [<c01f906c>] (driver_register+0xb0/0x13c)
> [    0.900000] [<c01f906c>] (driver_register+0xb0/0x13c) from [<c01fa13c>] (platform_driver_register+0x4c/0x60)
> [    0.900000] [<c01fa13c>] (platform_driver_register+0x4c/0x60) from [<c01fa170>] (platform_driver_probe+0x20/0xa0)
> [    0.900000] [<c01fa170>] (platform_driver_probe+0x20/0xa0) from [<c001a708>] (mxc_nd_init+0x18/0x24)
> [    0.900000] [<c001a708>] (mxc_nd_init+0x18/0x24) from [<c002938c>] (do_one_initcall+0x64/0x1bc)
> [    0.900000] [<c002938c>] (do_one_initcall+0x64/0x1bc) from [<c00084c4>] (kernel_init+0xe8/0x1ac)
> [    0.900000] [<c00084c4>] (kernel_init+0xe8/0x1ac) from [<c002aee8>] (kernel_thread_exit+0x0/0x8)
> [    0.900000] ---[ end trace 8bf72ac6ba089a19 ]---
> [    1.140000] NAND device: Manufacturer ID: 0x2c, Chip ID: 0xda (Micron NAND 256MiB 3,3V 8-bit)
> 
> Signed-off-by: Eric Bénard <eric@eukrea.com>
> ---
>  drivers/mtd/nand/mxc_nand.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/drivers/mtd/nand/mxc_nand.c b/drivers/mtd/nand/mxc_nand.c
> index 82e9438..8878503 100644
> --- a/drivers/mtd/nand/mxc_nand.c
> +++ b/drivers/mtd/nand/mxc_nand.c
> @@ -604,8 +604,8 @@ static void mxc_nand_command(struct mtd_info *mtd, unsigned command,
>  	/* Command pre-processing step */
>  	switch (command) {
>  	case NAND_CMD_RESET:
> -		send_cmd(host, command, false);
>  		preset(mtd);
> +		send_cmd(host, command, false);
>  		break;
>  
>  	case NAND_CMD_STATUS:
> -- 
> 1.6.3.3
> 
>
Artem Bityutskiy - July 17, 2010, 5:50 a.m.
On Thu, 2010-06-10 at 16:03 +0200, Eric Bénard wrote:
> * preset should be done before sending the reset command
> 
> * without this, I get the following error on an i.MX35 :
> [    0.900000] ------------[ cut here ]------------
> [    0.900000] WARNING: at kernel/irq/manage.c:290 __enable_irq+0x4c/0x88()
> [    0.900000] Unbalanced enable for IRQ 33
> [    0.900000] Modules linked in:
> [    0.900000] [<c002ffb8>] (unwind_backtrace+0x0/0xf0) from [<c02f7d0c>] (dump_stack+0x18/0x1c)
> [    0.900000] [<c02f7d0c>] (dump_stack+0x18/0x1c) from [<c0049a44>] (warn_slowpath_common+0x54/0x6c)
> [    0.900000] [<c0049a44>] (warn_slowpath_common+0x54/0x6c) from [<c0049b00>] (warn_slowpath_fmt+0x38/0x40)
> [    0.900000] [<c0049b00>] (warn_slowpath_fmt+0x38/0x40) from [<c008f65c>] (__enable_irq+0x4c/0x88)
> [    0.900000] [<c008f65c>] (__enable_irq+0x4c/0x88) from [<c008fca0>] (enable_irq+0x54/0x98)
> [    0.900000] [<c008fca0>] (enable_irq+0x54/0x98) from [<c021e618>] (wait_op_done+0x40/0x134)
> [    0.900000] [<c021e618>] (wait_op_done+0x40/0x134) from [<c021e808>] (send_cmd+0x30/0x38)
....

Pushed to l2-mtd-2.6.git / master
Marc Kleine-Budde - July 20, 2010, 10:20 a.m.
Hey Artem,

Artem Bityutskiy wrote:
> On Thu, 2010-06-10 at 16:03 +0200, Eric Bénard wrote:
>> * preset should be done before sending the reset command
>>
>> * without this, I get the following error on an i.MX35 :
>> [    0.900000] ------------[ cut here ]------------
>> [    0.900000] WARNING: at kernel/irq/manage.c:290 __enable_irq+0x4c/0x88()
>> [    0.900000] Unbalanced enable for IRQ 33
>> [    0.900000] Modules linked in:
>> [    0.900000] [<c002ffb8>] (unwind_backtrace+0x0/0xf0) from [<c02f7d0c>] (dump_stack+0x18/0x1c)
>> [    0.900000] [<c02f7d0c>] (dump_stack+0x18/0x1c) from [<c0049a44>] (warn_slowpath_common+0x54/0x6c)
>> [    0.900000] [<c0049a44>] (warn_slowpath_common+0x54/0x6c) from [<c0049b00>] (warn_slowpath_fmt+0x38/0x40)
>> [    0.900000] [<c0049b00>] (warn_slowpath_fmt+0x38/0x40) from [<c008f65c>] (__enable_irq+0x4c/0x88)
>> [    0.900000] [<c008f65c>] (__enable_irq+0x4c/0x88) from [<c008fca0>] (enable_irq+0x54/0x98)
>> [    0.900000] [<c008fca0>] (enable_irq+0x54/0x98) from [<c021e618>] (wait_op_done+0x40/0x134)
>> [    0.900000] [<c021e618>] (wait_op_done+0x40/0x134) from [<c021e808>] (send_cmd+0x30/0x38)
> ....
> 
> Pushed to l2-mtd-2.6.git / master

Current mainline has (still) this problem, too. Is there any change to
get this patch into 2.6.35 before the release?

cheers, Marc
Artem Bityutskiy - July 20, 2010, 10:22 a.m.
Hi,

On Tue, 2010-07-20 at 12:20 +0200, Marc Kleine-Budde wrote:
> Current mainline has (still) this problem, too. Is there any change to
> get this patch into 2.6.35 before the release?

You should bug David Woodhouse about this.
Marc Kleine-Budde - July 20, 2010, 9:36 p.m.
Hey David,

Artem Bityutskiy wrote:
> On Tue, 2010-07-20 at 12:20 +0200, Marc Kleine-Budde wrote:
>> Current mainline has (still) this problem, too. Is there any change to
>> get this patch into 2.6.35 before the release?
> 
> You should bug David Woodhouse about this.

The imx NAND driver does throw this unbalanced IRQ warning in the
current 2.6.35-rcX mainline tree. David can you try to get this into
mainline before the release?

Marc
Marc Kleine-Budde - July 24, 2010, 9:58 a.m.
Hello David,

Marc Kleine-Budde wrote:
> Hey David,
> 
> Artem Bityutskiy wrote:
>> On Tue, 2010-07-20 at 12:20 +0200, Marc Kleine-Budde wrote:
>>> Current mainline has (still) this problem, too. Is there any change to
>>> get this patch into 2.6.35 before the release?
>> You should bug David Woodhouse about this.
> 
> The imx NAND driver does throw this unbalanced IRQ warning in the
> current 2.6.35-rcX mainline tree. David can you try to get this into
> mainline before the release?

2.6.35-rc6 has this problem, any change to get this patch merged before
the release?

Marc

>> Uncompressing Linux... done, booting the kernel.
>> Linux version 2.6.35-rc6 (sisyphus@himalia) (gcc version 4.3.2 (OSELAS.Toolchain-1.99.3) ) #1 PREEMPT Fri Jul 23 22:55:19 CEST 2010
>> CPU: ARMv6-compatible processor [4117b363] revision 3 (ARMv6TEJ), cr=00c5387f
>> CPU: VIPT nonaliasing data cache, VIPT nonaliasing instruction cache
>> Machine: Phytec Phycore pcm043
>> Memory policy: ECC disabled, Data cache writeback
>> Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 32512
>> Kernel command line: console=ttymxc0,115200 video=mx3fb:CTP-CLAA070LC0AC mtdparts=physmap-flash.0:256k(barebox)ro,512k(bareboxenv),4M(kernel),-(root);mxc_nand:256k(barebox)ro,512k(bareboxenv),4M(kernel),-(root); ip=192.168.42.1:192.168.23.2:192.168.23.1:255.255.0.0::: root=/dev/nfs nfsroot=/tftpboot/exported_fs_cdKWZPxiy ro
>> PID hash table entries: 512 (order: -1, 2048 bytes)
>> Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
>> Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
>> Memory: 128MB = 128MB total
>> Memory: 126196k/126196k available, 4876k reserved, 0K highmem
>> Virtual kernel memory layout:
>>     vector  : 0xffff0000 - 0xffff1000   (   4 kB)
>>     fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)
>>     DMA     : 0xff600000 - 0xffe00000   (   8 MB)
>>     vmalloc : 0xc8800000 - 0xf4000000   ( 696 MB)
>>     lowmem  : 0xc0000000 - 0xc8000000   ( 128 MB)
>>     modules : 0xbf000000 - 0xc0000000   (  16 MB)
>>       .init : 0xc0008000 - 0xc0021000   ( 100 kB)
>>       .text : 0xc0021000 - 0xc0354000   (3276 kB)
>>       .data : 0xc036c000 - 0xc0394aa0   ( 163 kB)
>> Hierarchical RCU implementation.
>> 	RCU-based detection of stalled CPUs is disabled.
>> 	Verbose stalled-CPUs detection is disabled.
>> NR_IRQS:244
>> MXC GPIO hardware
>> MXC IRQ initialized
>> Calibrating delay loop... 530.84 BogoMIPS (lpj=2654208)
>> pid_max: default: 32768 minimum: 301
>> Mount-cache hash table entries: 512
>> CPU: Testing write buffer coherency: ok
>> regulator: core version 0.5
>> NET: Registered protocol family 16
>> L210 cache controller enabled
>> l2x0: 8 ways, CACHE_ID 0x4100004b, AUX_CTRL 0x00030024
>> bio: create slab <bio-0> at 0
>> Switching to clocksource mxc_timer1
>> NET: Registered protocol family 2
>> IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
>> TCP established hash table entries: 4096 (order: 3, 32768 bytes)
>> TCP bind hash table entries: 4096 (order: 2, 16384 bytes)
>> TCP: Hash tables configured (established 4096 bind 4096)
>> TCP reno registered
>> UDP hash table entries: 256 (order: 0, 4096 bytes)
>> UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
>> NET: Registered protocol family 1
>> RPC: Registered udp transport module.
>> RPC: Registered tcp transport module.
>> RPC: Registered tcp NFSv4.1 backchannel transport module.
>> JFFS2 version 2.2. (NAND) © 2001-2006 Red Hat, Inc.
>> msgmni has been set to 246
>> alg: No test for stdrng (krng)
>> io scheduler noop registered
>> io scheduler deadline registered
>> io scheduler cfq registered (default)
>> mx3_sdc_fb mx3_sdc_fb: registered, using mode CTP-CLAA070LC0AC
>> Serial: IMX driver
>> imx-uart.0: ttymxc0 at MMIO 0x43f90000 (irq = 45) is a IMX
>> console [ttymxc0] enabled
>> imx-uart.1: ttymxc1 at MMIO 0x43f94000 (irq = 32) is a IMX
>> at24 0-0052: 4096 byte at24 EEPROM (writable)
>> physmap platform flash device: 02000000 at a0000000
>> physmap-flash.0: Found 1 x16 devices at 0x0 in 16-bit bank
>> Support for command set 0001 not present
>> gen_probe: No supported Vendor Command Set found
>> physmap-flash physmap-flash.0: map_probe failed
>> ------------[ cut here ]------------
>> WARNING: at kernel/irq/manage.c:290 enable_irq+0x58/0x9c()
>> Unbalanced enable for IRQ 33
>> Modules linked in:
>> [<c002760c>] (unwind_backtrace+0x0/0xec) from [<c0039c9c>] (warn_slowpath_common+0x4c/0x7c)
>> [<c0039c9c>] (warn_slowpath_common+0x4c/0x7c) from [<c0039d60>] (warn_slowpath_fmt+0x30/0x40)
>> [<c0039d60>] (warn_slowpath_fmt+0x30/0x40) from [<c0068664>] (enable_irq+0x58/0x9c)
>> [<c0068664>] (enable_irq+0x58/0x9c) from [<c01b8ea8>] (wait_op_done+0x38/0x128)
>> [<c01b8ea8>] (wait_op_done+0x38/0x128) from [<c01b94ac>] (mxc_nand_command+0x358/0x420)
>> [<c01b94ac>] (mxc_nand_command+0x358/0x420) from [<c01b6050>] (nand_scan_ident+0x180/0x6b0)
>> [<c01b6050>] (nand_scan_ident+0x180/0x6b0) from [<c0016a68>] (mxcnd_probe+0x268/0x384)
>> [<c0016a68>] (mxcnd_probe+0x268/0x384) from [<c01a4ffc>] (platform_drv_probe+0x1c/0x24)
>> [<c01a4ffc>] (platform_drv_probe+0x1c/0x24) from [<c01a3fd8>] (driver_probe_device+0xac/0x188)
>> [<c01a3fd8>] (driver_probe_device+0xac/0x188) from [<c01a4114>] (__driver_attach+0x60/0x84)
>> [<c01a4114>] (__driver_attach+0x60/0x84) from [<c01a37dc>] (bus_for_each_dev+0x4c/0x8c)
>> [<c01a37dc>] (bus_for_each_dev+0x4c/0x8c) from [<c01a3058>] (bus_add_driver+0xa0/0x228)
>> [<c01a3058>] (bus_add_driver+0xa0/0x228) from [<c01a4420>] (driver_register+0xc0/0x150)
>> [<c01a4420>] (driver_register+0xc0/0x150) from [<c01a544c>] (platform_driver_probe+0x18/0xa4)
>> [<c01a544c>] (platform_driver_probe+0x18/0xa4) from [<c0021374>] (do_one_initcall+0x5c/0x1bc)
>> [<c0021374>] (do_one_initcall+0x5c/0x1bc) from [<c000841c>] (kernel_init+0xac/0x16c)
>> [<c000841c>] (kernel_init+0xac/0x16c) from [<c0022f04>] (kernel_thread_exit+0x0/0x8)
>> ---[ end trace 6fdffdc941b35459 ]---
>> NAND device: Manufacturer ID: 0x20, Chip ID: 0xd3 (ST Micro NAND 1GiB 3,3V 8-bit)
>> Scanning device for bad blocks
>> Bad eraseblock 6273 at 0x000031020000
>> Bad eraseblock 8190 at 0x00003ffc0000
>> Bad eraseblock 8191 at 0x00003ffe0000
>> RedBoot partition parsing not available
>> mtd: no mtd-id
>> 4 cmdlinepart partitions found on MTD device mxc_nand
>> Creating 4 MTD partitions on "mxc_nand":
>> 0x000000000000-0x000000040000 : "barebox"
>> 0x000000040000-0x0000000c0000 : "bareboxenv"
>> 0x0000000c0000-0x0000004c0000 : "kernel"
>> 0x0000004c0000-0x000040000000 : "root"
>> FEC Ethernet Driver
>> fec_enet_mii_bus: probed
>> i2c /dev entries driver
>> Linux video capture interface: v2.00
>> Driver for 1-wire Dallas network protocol.
>> TCP cubic registered
>> NET: Registered protocol family 17
>> VFP support v0.3: implementor 41 architecture 1 part 20 variant b rev 3
>> eth0: Freescale FEC PHY driver [Generic PHY] (mii_bus:phy_addr=0:00, irq=-1)
>> IP-Config: Complete:
>>      device=eth0, addr=192.168.42.1, mask=255.255.0.0, gw=192.168.23.1,
>>      host=192.168.42.1, domain=, nis-domain=(none),
>>      bootserver=192.168.23.2, rootserver=192.168.23.2, rootpath=
>> Looking up port of RPC 100003/2 on 192.168.23.2
>> PHY: 0:00 - Link is Up - 100/Full
>> Looking up port of RPC 100005/1 on 192.168.23.2
>> VFS: Mounted root (nfs filesystem) readonly on device 0:11.
>> Freeing init memory: 100K
>> 
>> init started: BusyBox v1.15.3 (2010-02-19 10:00:14 CET)
Uwe Kleine-König - Aug. 2, 2010, 9:32 a.m.
Hi David,

can we please have this patch soon in mainline.  This bugs our
autobuilder since long.

Best regards
Uwe

On Thu, Jun 10, 2010 at 04:03:04PM +0200, Eric Bénard wrote:
> * preset should be done before sending the reset command
> 
> * without this, I get the following error on an i.MX35 :
> [    0.900000] ------------[ cut here ]------------
> [    0.900000] WARNING: at kernel/irq/manage.c:290 __enable_irq+0x4c/0x88()
> [    0.900000] Unbalanced enable for IRQ 33
> [    0.900000] Modules linked in:
> [    0.900000] [<c002ffb8>] (unwind_backtrace+0x0/0xf0) from [<c02f7d0c>] (dump_stack+0x18/0x1c)
> [    0.900000] [<c02f7d0c>] (dump_stack+0x18/0x1c) from [<c0049a44>] (warn_slowpath_common+0x54/0x6c)
> [    0.900000] [<c0049a44>] (warn_slowpath_common+0x54/0x6c) from [<c0049b00>] (warn_slowpath_fmt+0x38/0x40)
> [    0.900000] [<c0049b00>] (warn_slowpath_fmt+0x38/0x40) from [<c008f65c>] (__enable_irq+0x4c/0x88)
> [    0.900000] [<c008f65c>] (__enable_irq+0x4c/0x88) from [<c008fca0>] (enable_irq+0x54/0x98)
> [    0.900000] [<c008fca0>] (enable_irq+0x54/0x98) from [<c021e618>] (wait_op_done+0x40/0x134)
> [    0.900000] [<c021e618>] (wait_op_done+0x40/0x134) from [<c021e808>] (send_cmd+0x30/0x38)
> [    0.900000] [<c021e808>] (send_cmd+0x30/0x38) from [<c021eb8c>] (mxc_nand_command+0x26c/0x328)
> [    0.900000] [<c021eb8c>] (mxc_nand_command+0x26c/0x328) from [<c021aa60>] (nand_scan_ident+0x188/0x6c0)
> [    0.900000] [<c021aa60>] (nand_scan_ident+0x188/0x6c0) from [<c001a9cc>] (mxcnd_probe+0x2b8/0x3d0)
> [    0.900000] [<c001a9cc>] (mxcnd_probe+0x2b8/0x3d0) from [<c01f9e88>] (platform_drv_probe+0x20/0x24)
> [    0.900000] [<c01f9e88>] (platform_drv_probe+0x20/0x24) from [<c01f8c38>] (driver_probe_device+0xb0/0x164)
> [    0.900000] [<c01f8c38>] (driver_probe_device+0xb0/0x164) from [<c01f8d54>] (__driver_attach+0x68/0x8c)
> [    0.900000] [<c01f8d54>] (__driver_attach+0x68/0x8c) from [<c01f8348>] (bus_for_each_dev+0x50/0x84)
> [    0.900000] [<c01f8348>] (bus_for_each_dev+0x50/0x84) from [<c01f8a9c>] (driver_attach+0x20/0x28)
> [    0.900000] [<c01f8a9c>] (driver_attach+0x20/0x28) from [<c01f7c00>] (bus_add_driver+0x144/0x2dc)
> [    0.900000] [<c01f7c00>] (bus_add_driver+0x144/0x2dc) from [<c01f906c>] (driver_register+0xb0/0x13c)
> [    0.900000] [<c01f906c>] (driver_register+0xb0/0x13c) from [<c01fa13c>] (platform_driver_register+0x4c/0x60)
> [    0.900000] [<c01fa13c>] (platform_driver_register+0x4c/0x60) from [<c01fa170>] (platform_driver_probe+0x20/0xa0)
> [    0.900000] [<c01fa170>] (platform_driver_probe+0x20/0xa0) from [<c001a708>] (mxc_nd_init+0x18/0x24)
> [    0.900000] [<c001a708>] (mxc_nd_init+0x18/0x24) from [<c002938c>] (do_one_initcall+0x64/0x1bc)
> [    0.900000] [<c002938c>] (do_one_initcall+0x64/0x1bc) from [<c00084c4>] (kernel_init+0xe8/0x1ac)
> [    0.900000] [<c00084c4>] (kernel_init+0xe8/0x1ac) from [<c002aee8>] (kernel_thread_exit+0x0/0x8)
> [    0.900000] ---[ end trace 8bf72ac6ba089a19 ]---
> [    1.140000] NAND device: Manufacturer ID: 0x2c, Chip ID: 0xda (Micron NAND 256MiB 3,3V 8-bit)
> 
> Signed-off-by: Eric Bénard <eric@eukrea.com>
> ---
>  drivers/mtd/nand/mxc_nand.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/drivers/mtd/nand/mxc_nand.c b/drivers/mtd/nand/mxc_nand.c
> index 82e9438..8878503 100644
> --- a/drivers/mtd/nand/mxc_nand.c
> +++ b/drivers/mtd/nand/mxc_nand.c
> @@ -604,8 +604,8 @@ static void mxc_nand_command(struct mtd_info *mtd, unsigned command,
>  	/* Command pre-processing step */
>  	switch (command) {
>  	case NAND_CMD_RESET:
> -		send_cmd(host, command, false);
>  		preset(mtd);
> +		send_cmd(host, command, false);
>  		break;
>  
>  	case NAND_CMD_STATUS:
> -- 
> 1.6.3.3
> 
>
Artem Bityutskiy - Aug. 5, 2010, 4:55 a.m.
On Mon, 2010-08-02 at 11:32 +0200, Uwe Kleine-König wrote:
> Hi David,
> 
> can we please have this patch soon in mainline.  This bugs our
> autobuilder since long.

It is in the mtd tree now.

Patch

diff --git a/drivers/mtd/nand/mxc_nand.c b/drivers/mtd/nand/mxc_nand.c
index 82e9438..8878503 100644
--- a/drivers/mtd/nand/mxc_nand.c
+++ b/drivers/mtd/nand/mxc_nand.c
@@ -604,8 +604,8 @@  static void mxc_nand_command(struct mtd_info *mtd, unsigned command,
 	/* Command pre-processing step */
 	switch (command) {
 	case NAND_CMD_RESET:
-		send_cmd(host, command, false);
 		preset(mtd);
+		send_cmd(host, command, false);
 		break;
 
 	case NAND_CMD_STATUS: