Re: [PATCH] OMAP3: SDRC: Comment out SDRC AC timing and MR changes in CORE DVFS SRAM code

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

 



Paul Walmsley said the following on 12/02/2009 03:33 AM:
> The code that reprograms the SDRC memory controller during CORE DVFS,
> mach-omap2/sram34xx.S:omap3_sram_configure_core_dpll(), does not
> ensure that all L3 initiators are prevented from accessing the SDRAM
> before modifying the SDRC AC timing and MR registers.  This can cause
> memory to be corrupted or cause the SDRC to enter an unpredictable
> state.  This patch comments out that code for now and adds a note
> explaining what is going on.  Ideally it can be added back in once
> supporting code is present to ensure that other initiators aren't
> touching the SDRAM.  At the very least, these registers should be
> reprogrammable during kernel init to deal with buggy bootloaders.
>
> This is a modification of a patch originally written by Rajendra Nayak
> <rnayak@xxxxxx> (the original is at http://patchwork.kernel.org/patch/51927/).
> Rather than removing the code completely, this patch just comments it out.
>   
why not make this a #ifdef instead if we need it some other time, a #if
0 and it's intention might not be readable without doing a git annotate
in a few months time..
> Thanks to Benoît Cousson <b-cousson@xxxxxx> and Christophe Sucur
> <c-sucur@xxxxxx> for explaining the technical basis for this and for
> explaining what can be done to make this path work in future code.
> Thanks to Richard Woodruff <r-woodruff2@xxxxxx> for his comments.
>
> Signed-off-by: Paul Walmsley <paul@xxxxxxxxx>
> Cc: Rajendra Nayak <rnayak@xxxxxx>
> Cc: Christophe Sucur <c-sucur@xxxxxx>
> Cc: Benoît Cousson <b-cousson@xxxxxx>
> Cc: Richard Woodruff <r-woodruff2@xxxxxx>
> ---
>  arch/arm/mach-omap2/sram34xx.S |   18 ++++++++++++++++--
>  1 files changed, 16 insertions(+), 2 deletions(-)
>
> diff --git a/arch/arm/mach-omap2/sram34xx.S b/arch/arm/mach-omap2/sram34xx.S
> index 82aa4a3..8fa8955 100644
> --- a/arch/arm/mach-omap2/sram34xx.S
> +++ b/arch/arm/mach-omap2/sram34xx.S
> @@ -91,8 +91,18 @@
>   *  new SDRC_ACTIM_CTRL_B_1 register contents
>   *  new SDRC_MR_1 register value
>   *
> - * If the param SDRC_RFR_CTRL_1 is 0, the parameters
> - *  are not programmed into the SDRC CS1 registers
> + * If the param SDRC_RFR_CTRL_1 is 0, the parameters are not programmed into
> + * the SDRC CS1 registers
> + *
> + * NOTE: This code no longer attempts to program the SDRC AC timing and MR
> + * registers.  This is because the code currently cannot ensure that all
> + * L3 initiators (e.g., sDMA, IVA, DSS DISPC, etc.) are not accessing the
> + * SDRAM when the registers are written.  If the registers are changed while
> + * an initiator is accessing SDRAM, memory can be corrupted and/or the SDRC
> + * may enter an unpredictable state.  The code to reprogram the registers,
> + * however, has been left in -- commented out in "#if 0" .. "#endif" blocks --
> + * since in the future, the intent is to re-enable this code in cases where we
> + * can ensure that no initiators are touching the SDRAM.
>   */
>  ENTRY(omap3_sram_configure_core_dpll)
>  	stmfd	sp!, {r1-r12, lr}	@ store regs to stack
> @@ -219,6 +229,7 @@ configure_sdrc:
>  	ldr	r12, omap_sdrc_rfr_ctrl_0_val	@ fetch value from SRAM
>  	ldr	r11, omap3_sdrc_rfr_ctrl_0	@ fetch addr from SRAM
>  	str	r12, [r11]			@ store
> +#if 0
>  	ldr	r12, omap_sdrc_actim_ctrl_a_0_val
>  	ldr	r11, omap3_sdrc_actim_ctrl_a_0
>  	str	r12, [r11]
> @@ -228,11 +239,13 @@ configure_sdrc:
>  	ldr	r12, omap_sdrc_mr_0_val
>  	ldr	r11, omap3_sdrc_mr_0
>  	str	r12, [r11]
> +#endif
>  	ldr	r12, omap_sdrc_rfr_ctrl_1_val
>  	cmp	r12, #0			@ if SDRC_RFR_CTRL_1 is 0,
>  	beq	skip_cs1_prog		@  do not program cs1 params
>  	ldr	r11, omap3_sdrc_rfr_ctrl_1
>  	str	r12, [r11]
> +#if 0
>  	ldr	r12, omap_sdrc_actim_ctrl_a_1_val
>  	ldr	r11, omap3_sdrc_actim_ctrl_a_1
>  	str	r12, [r11]
> @@ -242,6 +255,7 @@ configure_sdrc:
>  	ldr	r12, omap_sdrc_mr_1_val
>  	ldr	r11, omap3_sdrc_mr_1
>  	str	r12, [r11]
> +#endif
>  skip_cs1_prog:
>  	ldr	r12, [r11]		@ posted-write barrier for SDRC
>  	bx	lr
>   

--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux