All of lore.kernel.org
 help / color / mirror / Atom feed
From: Rajendra Nayak <rnayak@ti.com>
To: Vaibhav Hiremath <hvaibhav@ti.com>
Cc: linux-omap@vger.kernel.org, Tony Lindgren <tony@atomide.com>,
	Paul Walmsley <paul@pwsan.com>,
	linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH] ARM: AM33XX: Add missing .clkdm_name to clkdiv32k_ick clock
Date: Mon, 25 Mar 2013 18:06:54 +0530	[thread overview]
Message-ID: <515044E6.5070503@ti.com> (raw)
In-Reply-To: <1364211443-27536-1-git-send-email-hvaibhav@ti.com>

On Monday 25 March 2013 05:07 PM, Vaibhav Hiremath wrote:
> During common-clock migration, .clkdm_name field got missed
> for "clkdiv32k_ick" clock, which leaves "clk_24mhz_clkdm"
> unused; so boot process will try to disable the clockdomain
> even childs of this clock is enabled, which keeps child modules
> in idle mode.

The patch looks fine but I feel the change log certainly needs an
update. The clkdm association with the clks is maintained for those
clks which have a hard requirement that the clkdm be force woken up
before the clk can be enabled. If thats the case for clkdiv32k_ick,
then what you are doing makes sense, but the changelog is certainlly
confusing when it says 'boot process will try to disable the clockdomain'

> 
> This fixes the kernel crash observed on AM335xEVM-Sk platform,
> where clkdiv32_ick clock is being used as a gpio debounce clock
> and since clkdiv32k_ick is in idle mode it leads to below crash -
> 
> Crash Log:
> =============
> [    2.598347] Unhandled fault: external abort on non-linefetch (0x1028) at
> 0xfa1ac150
> [    2.606434] Internal error: : 1028 [#1] SMP ARM
> [    2.611207] Modules linked in:
> [    2.614449] CPU: 0    Not tainted  (3.8.4-01382-g1f449cd-dirty #4)
> [    2.620973] PC is at _set_gpio_debounce+0x60/0x104
> [    2.626025] LR is at clk_enable+0x30/0x3c
> [    2.630249] pc : [<c02e2850>]    lr : [<c0449ad8>]    psr: 60000193
> [    2.630249] sp : cf053df8  ip : 00000001  fp : cf19e000
> [    2.642308] r10: cdc56800  r9 : cf19e010  r8 : cf0b8410
> [    2.647802] r7 : 00000002  r6 : 00000004  r5 : 000000a0  r4 : cf0b8410
> [    2.654668] r3 : fa1ac150  r2 : fa1ac000  r1 : 00000000  r0 : 00000000
> [    2.661540] Flags: nZCv  IRQs off  FIQs on  Mode SVC_32  ISA ARM
> 	Segment kernel
> [    2.669324] Control: 10c5387d  Table: 80004019  DAC: 00000017
> [    2.675372] Process swapper/0 (pid: 1, stack limit = 0xcf052240)
> [    2.681688] Stack: (0xcf053df8 to 0xcf054000)
> [    2.686279] 3de0: cf0b846c 20000113
> [    2.694892] 3e00: 00001388 c02e2924 00000000 00000002 cf0b848c
> 	20000113 00001388 c02e0258
> [    2.703508] 3e20: cdc57ce8 cdca2784 c00028d8 00000000 cdc56800
> 	c040ba10 cdc57c50 c08374e0
> [    2.712115] 3e40: 00000001 00000028 cdca2784 cdca2740 cdc57c00
> 	00000000 cdc56800 c040bc58
> [    2.720727] 3e60: cf1a0bd0 cf19e010 c08374e0 c0d96ffc c08374e0
> 	cf19e010 00000000 c08374e0
> [    2.729341] 3e80: c076c7b0 c07421c4 00000000 c0331c90 c0331c78
> 	c033092c cf19e010 c08374e0
> [    2.737957] 3ea0: cf19e044 00000000 00000000 c0330bd8 00000000
> 	cf19e010 c08374e0 c0330c84
> [    2.746573] 3ec0: c08374e0 c0330bf0 00000000 c032f2f8 cf0222a8
> 	cf198a10 c08374e0 c08265c8
> [    2.755185] 3ee0: cdbca7c0 c033015c c067d1e0 c08374e0 c08374e0
> 	c0844600 cf052000 00000000
> [    2.763793] 3f00: 00000000 c03311b8 00000000 c0776fb0 c0844600
> 	cf052000 00000000 00000000
> [    2.772393] 3f20: c07421c4 c0008818 0001dd4e 00000000 00000007
> 	c076c7b0 07753841 00000000
> [    2.780998] 3f40: 9a64d806 00000000 9a64d806 00000000 60000113
> 	c0776fb0 00000007 c0776f90
> [    2.789603] 3f60: c0844600 000000af c0793ee8 c07421c4 00000000
> 	c07428f8 00000007 00000007
> [    2.798217] 3f80: c07421c4 00000000 00000000 c0513f0c 00000000
> 	00000000 00000000 00000000
> [    2.806827] 3fa0: 00000000 c0513f14 00000000 c0013490 00000000
> 	00000000 00000000 00000000
> [    2.815447] 3fc0: 00000000 00000000 00000000 00000000 00000000
> 	00000000 00000000 00000000
> [    2.824058] 3fe0: 00000000 00000000 00000000 00000000 00000013
> 	00000000 eebff7f9 3a5f1b7e
> [    2.832668] [<c02e2850>] (_set_gpio_debounce+0x60/0x104) from
> 	[<c02e2924>] (gpio_debounce+0x30/0x44)
> [    2.842272] [<c02e2924>] (gpio_debounce+0x30/0x44) from [<c02e0258>]
> 	(gpio_set_debounce+0xc4/0xdc)
> [    2.851714] [<c02e0258>] (gpio_set_debounce+0xc4/0xdc) from
> 	[<c040ba10>] (gpio_keys_setup_key+0x190/0x268)
> [    2.861871] [<c040ba10>] (gpio_keys_setup_key+0x190/0x268) from
> 	[<c040bc58>] (gpio_keys_probe+0x170/0x274)
> [    2.872046] [<c040bc58>] (gpio_keys_probe+0x170/0x274) from
> 	[<c0331c90>] (platform_drv_probe+0x18/0x1c)
> [    2.881940] [<c0331c90>] (platform_drv_probe+0x18/0x1c) from
> 	[<c033092c>] (really_probe+0x60/0x1f4)
> [    2.891453] [<c033092c>] (really_probe+0x60/0x1f4) from [<c0330bd8>]
> 	(driver_probe_device+0x30/0x48)
> [    2.901064] [<c0330bd8>] (driver_probe_device+0x30/0x48) from
> 	[<c0330c84>] (__driver_attach+0x94/0x98)
> [    2.910858] [<c0330c84>] (__driver_attach+0x94/0x98) from
> 	[<c032f2f8>] (bus_for_each_dev+0x64/0x88)
> [    2.920380] [<c032f2f8>] (bus_for_each_dev+0x64/0x88) from
> 	[<c033015c>] (bus_add_driver+0xa0/0x240)
> [    2.929900] [<c033015c>] (bus_add_driver+0xa0/0x240) from
> 	[<c03311b8>] (driver_register+0x78/0x144)
> [    2.939434] [<c03311b8>] (driver_register+0x78/0x144) from
> 	[<c0008818>] (do_one_initcall+0x118/0x180)
> [    2.949160] [<c0008818>] (do_one_initcall+0x118/0x180) from
> 	[<c07428f8>] (kernel_init_freeable+0xfc/0x1cc)
> [    2.959343] [<c07428f8>] (kernel_init_freeable+0xfc/0x1cc) from
> 	[<c0513f14>] (kernel_init+0x8/0xe4)
> [    2.968867] [<c0513f14>] (kernel_init+0x8/0xe4) from [<c0013490>]
> 	(ret_from_fork+0x14/0x24)
> [    2.977663] Code: e5943108 e5942008 e1d331be e0823003 (e5932000)
> 	[    2.984092] ---[ end trace d1c5f252789a330b ]---
> [    2.989241] Kernel panic - not syncing: Attempted to kill init!
> 	exitcode=0x0000000b
> [    2.989241]
> 
> Signed-off-by: Vaibhav Hiremath <hvaibhav@ti.com>
> Cc: Tony Lindgren <tony@atomide.com>
> Cc: Paul Walmsley <paul@pwsan.com>
> ---
>  arch/arm/mach-omap2/cclock33xx_data.c |   26 +++++++++++++++++++++++---
>  1 files changed, 23 insertions(+), 3 deletions(-)
> 
> diff --git a/arch/arm/mach-omap2/cclock33xx_data.c b/arch/arm/mach-omap2/cclock33xx_data.c
> index e674e01..b8fd346 100644
> --- a/arch/arm/mach-omap2/cclock33xx_data.c
> +++ b/arch/arm/mach-omap2/cclock33xx_data.c
> @@ -449,9 +449,29 @@ DEFINE_CLK_GATE(cefuse_fck, "sys_clkin_ck", &sys_clkin_ck, 0x0,
>   */
>  DEFINE_CLK_FIXED_FACTOR(clkdiv32k_ck, "clk_24mhz", &clk_24mhz, 0x0, 1, 732);
> 
> -DEFINE_CLK_GATE(clkdiv32k_ick, "clkdiv32k_ck", &clkdiv32k_ck, 0x0,
> -		AM33XX_CM_PER_CLKDIV32K_CLKCTRL, AM33XX_MODULEMODE_SWCTRL_SHIFT,
> -		0x0, NULL);
> +static struct clk clkdiv32k_ick;
> +
> +static const char *clkdiv32k_ick_parent_names[] = {
> +	"clkdiv32k_ck",
> +};
> +
> +static const struct clk_ops clkdiv32k_ick_ops = {
> +	.enable         = &omap2_dflt_clk_enable,
> +	.disable        = &omap2_dflt_clk_disable,
> +	.is_enabled     = &omap2_dflt_clk_is_enabled,
> +	.init           = &omap2_init_clk_clkdm,
> +};
> +
> +static struct clk_hw_omap clkdiv32k_ick_hw = {
> +	.hw	= {
> +		.clk	= &clkdiv32k_ick,
> +	},
> +	.enable_reg	= AM33XX_CM_PER_CLKDIV32K_CLKCTRL,
> +	.enable_bit	= AM33XX_MODULEMODE_SWCTRL_SHIFT,
> +	.clkdm_name	= "clk_24mhz_clkdm",
> +};
> +
> +DEFINE_STRUCT_CLK(clkdiv32k_ick, clkdiv32k_ick_parent_names, clkdiv32k_ick_ops);
> 
>  /* "usbotg_fck" is an additional clock and not really a modulemode */
>  DEFINE_CLK_GATE(usbotg_fck, "dpll_per_ck", &dpll_per_ck, 0x0,
> --
> 1.7.0.4
> 
> 
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
> 


WARNING: multiple messages have this Message-ID (diff)
From: rnayak@ti.com (Rajendra Nayak)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] ARM: AM33XX: Add missing .clkdm_name to clkdiv32k_ick clock
Date: Mon, 25 Mar 2013 18:06:54 +0530	[thread overview]
Message-ID: <515044E6.5070503@ti.com> (raw)
In-Reply-To: <1364211443-27536-1-git-send-email-hvaibhav@ti.com>

On Monday 25 March 2013 05:07 PM, Vaibhav Hiremath wrote:
> During common-clock migration, .clkdm_name field got missed
> for "clkdiv32k_ick" clock, which leaves "clk_24mhz_clkdm"
> unused; so boot process will try to disable the clockdomain
> even childs of this clock is enabled, which keeps child modules
> in idle mode.

The patch looks fine but I feel the change log certainly needs an
update. The clkdm association with the clks is maintained for those
clks which have a hard requirement that the clkdm be force woken up
before the clk can be enabled. If thats the case for clkdiv32k_ick,
then what you are doing makes sense, but the changelog is certainlly
confusing when it says 'boot process will try to disable the clockdomain'

> 
> This fixes the kernel crash observed on AM335xEVM-Sk platform,
> where clkdiv32_ick clock is being used as a gpio debounce clock
> and since clkdiv32k_ick is in idle mode it leads to below crash -
> 
> Crash Log:
> =============
> [    2.598347] Unhandled fault: external abort on non-linefetch (0x1028) at
> 0xfa1ac150
> [    2.606434] Internal error: : 1028 [#1] SMP ARM
> [    2.611207] Modules linked in:
> [    2.614449] CPU: 0    Not tainted  (3.8.4-01382-g1f449cd-dirty #4)
> [    2.620973] PC is at _set_gpio_debounce+0x60/0x104
> [    2.626025] LR is at clk_enable+0x30/0x3c
> [    2.630249] pc : [<c02e2850>]    lr : [<c0449ad8>]    psr: 60000193
> [    2.630249] sp : cf053df8  ip : 00000001  fp : cf19e000
> [    2.642308] r10: cdc56800  r9 : cf19e010  r8 : cf0b8410
> [    2.647802] r7 : 00000002  r6 : 00000004  r5 : 000000a0  r4 : cf0b8410
> [    2.654668] r3 : fa1ac150  r2 : fa1ac000  r1 : 00000000  r0 : 00000000
> [    2.661540] Flags: nZCv  IRQs off  FIQs on  Mode SVC_32  ISA ARM
> 	Segment kernel
> [    2.669324] Control: 10c5387d  Table: 80004019  DAC: 00000017
> [    2.675372] Process swapper/0 (pid: 1, stack limit = 0xcf052240)
> [    2.681688] Stack: (0xcf053df8 to 0xcf054000)
> [    2.686279] 3de0: cf0b846c 20000113
> [    2.694892] 3e00: 00001388 c02e2924 00000000 00000002 cf0b848c
> 	20000113 00001388 c02e0258
> [    2.703508] 3e20: cdc57ce8 cdca2784 c00028d8 00000000 cdc56800
> 	c040ba10 cdc57c50 c08374e0
> [    2.712115] 3e40: 00000001 00000028 cdca2784 cdca2740 cdc57c00
> 	00000000 cdc56800 c040bc58
> [    2.720727] 3e60: cf1a0bd0 cf19e010 c08374e0 c0d96ffc c08374e0
> 	cf19e010 00000000 c08374e0
> [    2.729341] 3e80: c076c7b0 c07421c4 00000000 c0331c90 c0331c78
> 	c033092c cf19e010 c08374e0
> [    2.737957] 3ea0: cf19e044 00000000 00000000 c0330bd8 00000000
> 	cf19e010 c08374e0 c0330c84
> [    2.746573] 3ec0: c08374e0 c0330bf0 00000000 c032f2f8 cf0222a8
> 	cf198a10 c08374e0 c08265c8
> [    2.755185] 3ee0: cdbca7c0 c033015c c067d1e0 c08374e0 c08374e0
> 	c0844600 cf052000 00000000
> [    2.763793] 3f00: 00000000 c03311b8 00000000 c0776fb0 c0844600
> 	cf052000 00000000 00000000
> [    2.772393] 3f20: c07421c4 c0008818 0001dd4e 00000000 00000007
> 	c076c7b0 07753841 00000000
> [    2.780998] 3f40: 9a64d806 00000000 9a64d806 00000000 60000113
> 	c0776fb0 00000007 c0776f90
> [    2.789603] 3f60: c0844600 000000af c0793ee8 c07421c4 00000000
> 	c07428f8 00000007 00000007
> [    2.798217] 3f80: c07421c4 00000000 00000000 c0513f0c 00000000
> 	00000000 00000000 00000000
> [    2.806827] 3fa0: 00000000 c0513f14 00000000 c0013490 00000000
> 	00000000 00000000 00000000
> [    2.815447] 3fc0: 00000000 00000000 00000000 00000000 00000000
> 	00000000 00000000 00000000
> [    2.824058] 3fe0: 00000000 00000000 00000000 00000000 00000013
> 	00000000 eebff7f9 3a5f1b7e
> [    2.832668] [<c02e2850>] (_set_gpio_debounce+0x60/0x104) from
> 	[<c02e2924>] (gpio_debounce+0x30/0x44)
> [    2.842272] [<c02e2924>] (gpio_debounce+0x30/0x44) from [<c02e0258>]
> 	(gpio_set_debounce+0xc4/0xdc)
> [    2.851714] [<c02e0258>] (gpio_set_debounce+0xc4/0xdc) from
> 	[<c040ba10>] (gpio_keys_setup_key+0x190/0x268)
> [    2.861871] [<c040ba10>] (gpio_keys_setup_key+0x190/0x268) from
> 	[<c040bc58>] (gpio_keys_probe+0x170/0x274)
> [    2.872046] [<c040bc58>] (gpio_keys_probe+0x170/0x274) from
> 	[<c0331c90>] (platform_drv_probe+0x18/0x1c)
> [    2.881940] [<c0331c90>] (platform_drv_probe+0x18/0x1c) from
> 	[<c033092c>] (really_probe+0x60/0x1f4)
> [    2.891453] [<c033092c>] (really_probe+0x60/0x1f4) from [<c0330bd8>]
> 	(driver_probe_device+0x30/0x48)
> [    2.901064] [<c0330bd8>] (driver_probe_device+0x30/0x48) from
> 	[<c0330c84>] (__driver_attach+0x94/0x98)
> [    2.910858] [<c0330c84>] (__driver_attach+0x94/0x98) from
> 	[<c032f2f8>] (bus_for_each_dev+0x64/0x88)
> [    2.920380] [<c032f2f8>] (bus_for_each_dev+0x64/0x88) from
> 	[<c033015c>] (bus_add_driver+0xa0/0x240)
> [    2.929900] [<c033015c>] (bus_add_driver+0xa0/0x240) from
> 	[<c03311b8>] (driver_register+0x78/0x144)
> [    2.939434] [<c03311b8>] (driver_register+0x78/0x144) from
> 	[<c0008818>] (do_one_initcall+0x118/0x180)
> [    2.949160] [<c0008818>] (do_one_initcall+0x118/0x180) from
> 	[<c07428f8>] (kernel_init_freeable+0xfc/0x1cc)
> [    2.959343] [<c07428f8>] (kernel_init_freeable+0xfc/0x1cc) from
> 	[<c0513f14>] (kernel_init+0x8/0xe4)
> [    2.968867] [<c0513f14>] (kernel_init+0x8/0xe4) from [<c0013490>]
> 	(ret_from_fork+0x14/0x24)
> [    2.977663] Code: e5943108 e5942008 e1d331be e0823003 (e5932000)
> 	[    2.984092] ---[ end trace d1c5f252789a330b ]---
> [    2.989241] Kernel panic - not syncing: Attempted to kill init!
> 	exitcode=0x0000000b
> [    2.989241]
> 
> Signed-off-by: Vaibhav Hiremath <hvaibhav@ti.com>
> Cc: Tony Lindgren <tony@atomide.com>
> Cc: Paul Walmsley <paul@pwsan.com>
> ---
>  arch/arm/mach-omap2/cclock33xx_data.c |   26 +++++++++++++++++++++++---
>  1 files changed, 23 insertions(+), 3 deletions(-)
> 
> diff --git a/arch/arm/mach-omap2/cclock33xx_data.c b/arch/arm/mach-omap2/cclock33xx_data.c
> index e674e01..b8fd346 100644
> --- a/arch/arm/mach-omap2/cclock33xx_data.c
> +++ b/arch/arm/mach-omap2/cclock33xx_data.c
> @@ -449,9 +449,29 @@ DEFINE_CLK_GATE(cefuse_fck, "sys_clkin_ck", &sys_clkin_ck, 0x0,
>   */
>  DEFINE_CLK_FIXED_FACTOR(clkdiv32k_ck, "clk_24mhz", &clk_24mhz, 0x0, 1, 732);
> 
> -DEFINE_CLK_GATE(clkdiv32k_ick, "clkdiv32k_ck", &clkdiv32k_ck, 0x0,
> -		AM33XX_CM_PER_CLKDIV32K_CLKCTRL, AM33XX_MODULEMODE_SWCTRL_SHIFT,
> -		0x0, NULL);
> +static struct clk clkdiv32k_ick;
> +
> +static const char *clkdiv32k_ick_parent_names[] = {
> +	"clkdiv32k_ck",
> +};
> +
> +static const struct clk_ops clkdiv32k_ick_ops = {
> +	.enable         = &omap2_dflt_clk_enable,
> +	.disable        = &omap2_dflt_clk_disable,
> +	.is_enabled     = &omap2_dflt_clk_is_enabled,
> +	.init           = &omap2_init_clk_clkdm,
> +};
> +
> +static struct clk_hw_omap clkdiv32k_ick_hw = {
> +	.hw	= {
> +		.clk	= &clkdiv32k_ick,
> +	},
> +	.enable_reg	= AM33XX_CM_PER_CLKDIV32K_CLKCTRL,
> +	.enable_bit	= AM33XX_MODULEMODE_SWCTRL_SHIFT,
> +	.clkdm_name	= "clk_24mhz_clkdm",
> +};
> +
> +DEFINE_STRUCT_CLK(clkdiv32k_ick, clkdiv32k_ick_parent_names, clkdiv32k_ick_ops);
> 
>  /* "usbotg_fck" is an additional clock and not really a modulemode */
>  DEFINE_CLK_GATE(usbotg_fck, "dpll_per_ck", &dpll_per_ck, 0x0,
> --
> 1.7.0.4
> 
> 
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
> 

  reply	other threads:[~2013-03-25 12:37 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-03-25 11:37 [PATCH] ARM: AM33XX: Add missing .clkdm_name to clkdiv32k_ick clock Vaibhav Hiremath
2013-03-25 11:37 ` Vaibhav Hiremath
2013-03-25 12:36 ` Rajendra Nayak [this message]
2013-03-25 12:36   ` Rajendra Nayak
2013-03-26  5:12   ` Hiremath, Vaibhav
2013-03-26  5:12     ` Hiremath, Vaibhav
2013-03-26  5:20     ` Rajendra Nayak
2013-03-26  5:20       ` Rajendra Nayak
2013-03-26  5:39       ` Hiremath, Vaibhav
2013-03-26  5:39         ` Hiremath, Vaibhav
2013-03-26 18:13 ` Paul Walmsley
2013-03-26 18:13   ` Paul Walmsley
2013-03-27  6:17   ` Hiremath, Vaibhav
2013-03-27  6:17     ` Hiremath, Vaibhav

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=515044E6.5070503@ti.com \
    --to=rnayak@ti.com \
    --cc=hvaibhav@ti.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=paul@pwsan.com \
    --cc=tony@atomide.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.