Re: [PATCH 02/23] OMAP3 SRAM: mark OCM RAM as Non-cacheable Normal memory

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

 



* Tero Kristo <tero.kristo@xxxxxxxxx> [081211 07:58]:
> From: Paul Walmsley <paul@xxxxxxxxx>
> 
> Mark the SRAM (aka OCM RAM) as Non-cacheable Normal memory[1].  This
> is to prevent the ARM from evicting existing cache lines to SDRAM
> while code is executing from the SRAM.  Necessary since one of the
> primary uses for the SRAM is to hold the code and data for the CORE
> DPLL M2 divider reprogramming code, which must execute while the SDRC
> is idled.  If the ARM attempts to write cache lines back to the while
> the SRAM code is running, the ARM will stall[2].
> 
> TI deals with this problem in the CDP kernel by marking the SRAM as
> Strongly-ordered memory.
> 
> Tero Kristo <tero.kristo@xxxxxxxxx> caught a bug in an earlier version of
> this patch - thanks Tero.

As I talked with Paul, we might want to set up two sections in SRAM.
One section that is cached and another that is not.

Tony

> 
> ...
> 
> 1. ARMv7 ARM (DDI 0406A) pp. A3-30, A3-31, B3-32.
> 
> 2. Private communication with Richard Woodruff <r-woodruff2@xxxxxx>
> 
> Signed-off-by: Paul Walmsley <paul@xxxxxxxxx>
> Cc: Tero Kristo <tero.kristo@xxxxxxxxx>
> Cc: Richard Woodruff <r-woodruff2@xxxxxx>
> ---
>  arch/arm/plat-omap/sram.c |    9 +++++++++
>  1 files changed, 9 insertions(+), 0 deletions(-)
>  mode change 100755 => 100644 arch/arm/plat-omap/sram.c
> 
> diff --git a/arch/arm/plat-omap/sram.c b/arch/arm/plat-omap/sram.c
> old mode 100755
> new mode 100644
> index abcc05b..04214e1
> --- a/arch/arm/plat-omap/sram.c
> +++ b/arch/arm/plat-omap/sram.c
> @@ -207,6 +207,15 @@ void __init omap_map_sram(void)
>  		base = OMAP3_SRAM_PA;
>  		base = ROUND_DOWN(base, PAGE_SIZE);
>  		omap_sram_io_desc[0].pfn = __phys_to_pfn(base);
> +
> +		/*
> +		 * SRAM must be marked as non-cached on OMAP3 since the
> +		 * CORE DPLL M2 divider change code (in SRAM) runs with the
> +		 * SDRAM controller disabled, and if it is marked cached,
> +		 * the ARM may attempt to write cache lines back to SDRAM
> +		 * which will cause the system to hang.
> +		 */
> +		omap_sram_io_desc[0].type = MT_MEMORY_NONCACHED;
>  	}
>  
>  	omap_sram_io_desc[0].length = 1024 * 1024;	/* Use section desc */
> -- 
> 1.5.4.3
> 
> --
> 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
--
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