SMDK6440: Crash during boot up while configuring GPIO bank R

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Ben,

I'm adding I2C support for SMDK6440 board.

And observed a bootup crash while configuring GPIO GPR();

The following are the boot logs

BUG: spinlock recursion on CPU#0, swapper/1
 lock: c01fbd64, .magic: dead4ead, .owner: swapper/1, .owner_cpu: 0
[<c0023260>] (unwind_backtrace+0x0/0xec) from [<c011e764>]
(do_raw_spin_lock+0x48/0x14c)
[<c011e764>] (do_raw_spin_lock+0x48/0x14c) from [<c016e6e8>]
(_raw_spin_lock_irqsave+0x10/0x18)
[<c016e6e8>] (_raw_spin_lock_irqsave+0x10/0x18) from [<c00292e8>]
(s5p6440_gpio_setcfg_4bit_rbank+0x54/0xb4)
[<c00292e8>] (s5p6440_gpio_setcfg_4bit_rbank+0x54/0xb4) from
[<c002a1bc>] (s3c_gpio_cfgpin+0x50/0x74)
[<c002a1bc>] (s3c_gpio_cfgpin+0x50/0x74) from [<c0029478>]
(s3c_i2c1_cfg_gpio+0x10/0x20)
[<c0029478>] (s3c_i2c1_cfg_gpio+0x10/0x20) from [<c016af24>]
(s3c24xx_i2c_probe+0x21c/0x5c8)
[<c016af24>] (s3c24xx_i2c_probe+0x21c/0x5c8) from [<c01445ac>]
(platform_drv_probe+0x18/0x1c)
[<c01445ac>] (platform_drv_probe+0x18/0x1c) from [<c0143700>]
(driver_probe_device+0xa8/0x158)
[<c0143700>] (driver_probe_device+0xa8/0x158) from [<c0143810>]
(__driver_attach+0x60/0x84)
[<c0143810>] (__driver_attach+0x60/0x84) from [<c0142fa0>]
(bus_for_each_dev+0x44/0x74)
[<c0142fa0>] (bus_for_each_dev+0x44/0x74) from [<c01428a8>]
(bus_add_driver+0x98/0x218)
[<c01428a8>] (bus_add_driver+0x98/0x218) from [<c0143ae0>]
(driver_register+0xa8/0x138)
[<c0143ae0>] (driver_register+0xa8/0x138) from [<c001d388>]
(do_one_initcall+0x58/0x1a8)
[<c001d388>] (do_one_initcall+0x58/0x1a8) from [<c0008570>]
(kernel_init+0x90/0x144)
[<c0008570>] (kernel_init+0x90/0x144) from [<c001edf4>]
(kernel_thread_exit+0x0/0x8)
BUG: spinlock lockup on CPU#0, swapper/1, c01fbd64
[<c0023260>] (unwind_backtrace+0x0/0xec) from [<c011e82c>]
(do_raw_spin_lock+0x110/0x14c)
[<c011e82c>] (do_raw_spin_lock+0x110/0x14c) from [<c016e6e8>]
(_raw_spin_lock_irqsave+0x10/0x18)
[<c016e6e8>] (_raw_spin_lock_irqsave+0x10/0x18) from [<c00292e8>]
(s5p6440_gpio_setcfg_4bit_rbank+0x54/0xb4)
[<c00292e8>] (s5p6440_gpio_setcfg_4bit_rbank+0x54/0xb4) from
[<c002a1bc>] (s3c_gpio_cfgpin+0x50/0x74)
[<c002a1bc>] (s3c_gpio_cfgpin+0x50/0x74) from [<c0029478>]
(s3c_i2c1_cfg_gpio+0x10/0x20)
[<c0029478>] (s3c_i2c1_cfg_gpio+0x10/0x20) from [<c016af24>]
(s3c24xx_i2c_probe+0x21c/0x5c8)
[<c016af24>] (s3c24xx_i2c_probe+0x21c/0x5c8) from [<c01445ac>]
(platform_drv_probe+0x18/0x1c)
[<c01445ac>] (platform_drv_probe+0x18/0x1c) from [<c0143700>]
(driver_probe_device+0xa8/0x158)
[<c0143700>] (driver_probe_device+0xa8/0x158) from [<c0143810>]
(__driver_attach+0x60/0x84)
[<c0143810>] (__driver_attach+0x60/0x84) from [<c0142fa0>]
(bus_for_each_dev+0x44/0x74)
[<c0142fa0>] (bus_for_each_dev+0x44/0x74) from [<c01428a8>]
(bus_add_driver+0x98/0x218)
[<c01428a8>] (bus_add_driver+0x98/0x218) from [<c0143ae0>]
(driver_register+0xa8/0x138)
[<c0143ae0>] (driver_register+0xa8/0x138) from [<c001d388>]
(do_one_initcall+0x58/0x1a8)
[<c001d388>] (do_one_initcall+0x58/0x1a8) from [<c0008570>]
(kernel_init+0x90/0x144)
[<c0008570>] (kernel_init+0x90/0x144) from [<c001edf4>]
(kernel_thread_exit+0x0/0x8)

I found in the code that s3c_gpio_cfgpin() has a spinlock and it in
turn calls s5p6440_gpio_setcfg_4bit_rbank() which has another spinlock
with in.

Should i be calling s5p6440_gpio_setcfg_4bit_rbank() directly when
required to configure GPIO Bank R.

Why there are special functions defined for GPIO Bank R only in
S5P6440 and not in any other CPU.

--
Shine bright,
(: Naveen Krishna Ch :)
--
To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux SoC Development]     [Linux Rockchip Development]     [Linux USB Development]     [Video for Linux]     [Linux Audio Users]     [Linux SCSI]     [Yosemite News]

  Powered by Linux