Re: [U-Boot] [PATCH] mach-stm32: Fix mpu region's attribute for STM32H7

2017-11-15 Thread Patrice CHOTARD
Hi Vikas

On 11/14/2017 11:16 PM, Vikas MANOCHA wrote:
> Hi Patrice,
> 
> Cheers,
> Vikas
> 
>> -Original Message-
>> From: Patrice CHOTARD
>> Sent: Tuesday, November 14, 2017 12:41 AM
>> To: Vikas MANOCHA ; u-boot@lists.denx.de; 
>> albert.u.b...@aribaud.net; s...@chromium.org
>> Cc: Patrick DELAUNAY ; Christophe KERELLO 
>> 
>> Subject: Re: [PATCH] mach-stm32: Fix mpu region's attribute for STM32H7
>>
>> Hi Vikas
>>
>> On 11/14/2017 03:16 AM, Vikas MANOCHA wrote:
>>> Hi Patrice,
>>>
 -Original Message-
 From: Patrice CHOTARD
 Sent: Monday, November 13, 2017 8:26 AM
 To: u-boot@lists.denx.de; albert.u.b...@aribaud.net;
 s...@chromium.org; Vikas MANOCHA 
 Cc: Patrice CHOTARD ; Patrick DELAUNAY
 ; Christophe KERELLO
 
 Subject: [PATCH] mach-stm32: Fix mpu region's attribute for STM32H7

 From: Patrice Chotard 

 The SDRAM region was setup with the wrong attributes.
 It must be set to :
 _ XN_EN (Execution of an instruction fetched from this region 
 permitted)
 _ O_I_WB_RD_WR_ALLOC (Outer and inner write-back, write and read
 allocate)

>>>
>>> H7 mpu configuration seems same as F7, can we have one config for F7 & H7.
>>
>> Between F7 and H7, there is one difference regarding the F7's region 3 which 
>> is not needed on H7 because FMC/QSPI registers are
>> located inside H7's region 2.
> 
> Yes, that’s correct. Any way we can handle it at one place.
> In any case, for easy maintenance let's keep the same configuration/code for 
> two with this above exception.

Agree, i will abandon this patch and will propose a new one which will 
factorize code between STM32F4/F7 and H7 SoCs family.

> 
>>
>> Just one question about F7's region 1, why is it only 512MB and not 1GB 
>> long, to include ITCM and DTCM area ? (see Embedded SRAM
>> chapter of
>> RM0385 Reference manual)
> 
> because 512MB (0x2000_) is size of armv7m code area.

Ok

Thanks

Patrice

> 
> Cheers,
> Vikas
> 
>>
>> Nevertheless, i just notice that for H7, i can remove region 1 which 
>> overlaps region 0 with exactly the same attribute.
>>
>> Thanks
>>
>>>
 This fixes hard fault when trying to load and execute kernel linux in this 
 area.

 Signed-off-by: Patrice Chotard 
>>>
>>> In any case,
>>> Reviewed-by: Vikas Manocha 
>>>
>>> Cheers,
>>> Vikas
>>>
 ---
arch/arm/mach-stm32/stm32h7/soc.c | 9 ++---
1 file changed, 6 insertions(+), 3 deletions(-)

 diff --git a/arch/arm/mach-stm32/stm32h7/soc.c
 b/arch/arm/mach-stm32/stm32h7/soc.c
 index 692dbcc..e0d3f11 100644
 --- a/arch/arm/mach-stm32/stm32h7/soc.c
 +++ b/arch/arm/mach-stm32/stm32h7/soc.c
 @@ -30,9 +30,12 @@ int arch_cpu_init(void)
{ 0x, REGION_0, XN_DIS, PRIV_RW_USR_RW,
O_I_WB_RD_WR_ALLOC, REGION_4GB },

 -  /* Code area, executable & strongly ordered */
 -  { 0xD000, REGION_1, XN_EN, PRIV_RW_USR_RW,
 -  STRONG_ORDER, REGION_8MB },
 +  /*
 +   * Code area, executable, Outer and inner write-back,
 +   * no write allocate
 +   */
 +  { 0xD000, REGION_1, XN_DIS, PRIV_RW_USR_RW,
 +  O_I_WB_RD_WR_ALLOC, REGION_32MB },

/* Device area in all H7 : Not executable */
{ 0x4000, REGION_2, XN_EN, PRIV_RW_USR_RW,
 --
 1.9.1
>>>
___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot


Re: [U-Boot] [PATCH] mach-stm32: Fix mpu region's attribute for STM32H7

2017-11-14 Thread Vikas MANOCHA
Hi Patrice,

Cheers,
Vikas

> -Original Message-
> From: Patrice CHOTARD
> Sent: Tuesday, November 14, 2017 12:41 AM
> To: Vikas MANOCHA ; u-boot@lists.denx.de; 
> albert.u.b...@aribaud.net; s...@chromium.org
> Cc: Patrick DELAUNAY ; Christophe KERELLO 
> 
> Subject: Re: [PATCH] mach-stm32: Fix mpu region's attribute for STM32H7
> 
> Hi Vikas
> 
> On 11/14/2017 03:16 AM, Vikas MANOCHA wrote:
> > Hi Patrice,
> >
> >> -Original Message-
> >> From: Patrice CHOTARD
> >> Sent: Monday, November 13, 2017 8:26 AM
> >> To: u-boot@lists.denx.de; albert.u.b...@aribaud.net;
> >> s...@chromium.org; Vikas MANOCHA 
> >> Cc: Patrice CHOTARD ; Patrick DELAUNAY
> >> ; Christophe KERELLO
> >> 
> >> Subject: [PATCH] mach-stm32: Fix mpu region's attribute for STM32H7
> >>
> >> From: Patrice Chotard 
> >>
> >> The SDRAM region was setup with the wrong attributes.
> >> It must be set to :
> >>_ XN_EN (Execution of an instruction fetched from this region permitted)
> >>_ O_I_WB_RD_WR_ALLOC (Outer and inner write-back, write and read
> >> allocate)
> >>
> >
> > H7 mpu configuration seems same as F7, can we have one config for F7 & H7.
> 
> Between F7 and H7, there is one difference regarding the F7's region 3 which 
> is not needed on H7 because FMC/QSPI registers are
> located inside H7's region 2.

Yes, that’s correct. Any way we can handle it at one place.
In any case, for easy maintenance let's keep the same configuration/code for 
two with this above exception.

> 
> Just one question about F7's region 1, why is it only 512MB and not 1GB long, 
> to include ITCM and DTCM area ? (see Embedded SRAM
> chapter of
> RM0385 Reference manual)

because 512MB (0x2000_) is size of armv7m code area.

Cheers,
Vikas

> 
> Nevertheless, i just notice that for H7, i can remove region 1 which overlaps 
> region 0 with exactly the same attribute.
> 
> Thanks
> 
> >
> >> This fixes hard fault when trying to load and execute kernel linux in this 
> >> area.
> >>
> >> Signed-off-by: Patrice Chotard 
> >
> > In any case,
> > Reviewed-by: Vikas Manocha 
> >
> > Cheers,
> > Vikas
> >
> >> ---
> >>   arch/arm/mach-stm32/stm32h7/soc.c | 9 ++---
> >>   1 file changed, 6 insertions(+), 3 deletions(-)
> >>
> >> diff --git a/arch/arm/mach-stm32/stm32h7/soc.c
> >> b/arch/arm/mach-stm32/stm32h7/soc.c
> >> index 692dbcc..e0d3f11 100644
> >> --- a/arch/arm/mach-stm32/stm32h7/soc.c
> >> +++ b/arch/arm/mach-stm32/stm32h7/soc.c
> >> @@ -30,9 +30,12 @@ int arch_cpu_init(void)
> >>{ 0x, REGION_0, XN_DIS, PRIV_RW_USR_RW,
> >>O_I_WB_RD_WR_ALLOC, REGION_4GB },
> >>
> >> -  /* Code area, executable & strongly ordered */
> >> -  { 0xD000, REGION_1, XN_EN, PRIV_RW_USR_RW,
> >> -  STRONG_ORDER, REGION_8MB },
> >> +  /*
> >> +   * Code area, executable, Outer and inner write-back,
> >> +   * no write allocate
> >> +   */
> >> +  { 0xD000, REGION_1, XN_DIS, PRIV_RW_USR_RW,
> >> +  O_I_WB_RD_WR_ALLOC, REGION_32MB },
> >>
> >>/* Device area in all H7 : Not executable */
> >>{ 0x4000, REGION_2, XN_EN, PRIV_RW_USR_RW,
> >> --
> >> 1.9.1
> >
___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot


Re: [U-Boot] [PATCH] mach-stm32: Fix mpu region's attribute for STM32H7

2017-11-14 Thread Patrice CHOTARD
Hi Vikas

On 11/14/2017 03:16 AM, Vikas MANOCHA wrote:
> Hi Patrice,
> 
>> -Original Message-
>> From: Patrice CHOTARD
>> Sent: Monday, November 13, 2017 8:26 AM
>> To: u-boot@lists.denx.de; albert.u.b...@aribaud.net; s...@chromium.org; 
>> Vikas MANOCHA 
>> Cc: Patrice CHOTARD ; Patrick DELAUNAY 
>> ; Christophe KERELLO
>> 
>> Subject: [PATCH] mach-stm32: Fix mpu region's attribute for STM32H7
>>
>> From: Patrice Chotard 
>>
>> The SDRAM region was setup with the wrong attributes.
>> It must be set to :
>>_ XN_EN (Execution of an instruction fetched from this region permitted)
>>_ O_I_WB_RD_WR_ALLOC (Outer and inner write-back, write and read allocate)
>>
> 
> H7 mpu configuration seems same as F7, can we have one config for F7 & H7.

Between F7 and H7, there is one difference regarding the F7's region 3 
which is not needed on H7 because FMC/QSPI registers are located inside 
H7's region 2.

Just one question about F7's region 1, why is it only 512MB and not 1GB 
long, to include ITCM and DTCM area ? (see Embedded SRAM chapter of 
RM0385 Reference manual)

Nevertheless, i just notice that for H7, i can remove region 1 which 
overlaps region 0 with exactly the same attribute.

Thanks

> 
>> This fixes hard fault when trying to load and execute kernel linux in this 
>> area.
>>
>> Signed-off-by: Patrice Chotard 
> 
> In any case,
> Reviewed-by: Vikas Manocha 
> 
> Cheers,
> Vikas
> 
>> ---
>>   arch/arm/mach-stm32/stm32h7/soc.c | 9 ++---
>>   1 file changed, 6 insertions(+), 3 deletions(-)
>>
>> diff --git a/arch/arm/mach-stm32/stm32h7/soc.c 
>> b/arch/arm/mach-stm32/stm32h7/soc.c
>> index 692dbcc..e0d3f11 100644
>> --- a/arch/arm/mach-stm32/stm32h7/soc.c
>> +++ b/arch/arm/mach-stm32/stm32h7/soc.c
>> @@ -30,9 +30,12 @@ int arch_cpu_init(void)
>>  { 0x, REGION_0, XN_DIS, PRIV_RW_USR_RW,
>>  O_I_WB_RD_WR_ALLOC, REGION_4GB },
>>
>> -/* Code area, executable & strongly ordered */
>> -{ 0xD000, REGION_1, XN_EN, PRIV_RW_USR_RW,
>> -STRONG_ORDER, REGION_8MB },
>> +/*
>> + * Code area, executable, Outer and inner write-back,
>> + * no write allocate
>> + */
>> +{ 0xD000, REGION_1, XN_DIS, PRIV_RW_USR_RW,
>> +O_I_WB_RD_WR_ALLOC, REGION_32MB },
>>
>>  /* Device area in all H7 : Not executable */
>>  { 0x4000, REGION_2, XN_EN, PRIV_RW_USR_RW,
>> --
>> 1.9.1
> 
___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot


Re: [U-Boot] [PATCH] mach-stm32: Fix mpu region's attribute for STM32H7

2017-11-13 Thread Vikas MANOCHA
Hi Patrice,

> -Original Message-
> From: Patrice CHOTARD
> Sent: Monday, November 13, 2017 8:26 AM
> To: u-boot@lists.denx.de; albert.u.b...@aribaud.net; s...@chromium.org; Vikas 
> MANOCHA 
> Cc: Patrice CHOTARD ; Patrick DELAUNAY 
> ; Christophe KERELLO
> 
> Subject: [PATCH] mach-stm32: Fix mpu region's attribute for STM32H7
> 
> From: Patrice Chotard 
> 
> The SDRAM region was setup with the wrong attributes.
> It must be set to :
>   _ XN_EN (Execution of an instruction fetched from this region permitted)
>   _ O_I_WB_RD_WR_ALLOC (Outer and inner write-back, write and read allocate)
> 

H7 mpu configuration seems same as F7, can we have one config for F7 & H7.

> This fixes hard fault when trying to load and execute kernel linux in this 
> area.
> 
> Signed-off-by: Patrice Chotard 

In any case,
Reviewed-by: Vikas Manocha 

Cheers,
Vikas

> ---
>  arch/arm/mach-stm32/stm32h7/soc.c | 9 ++---
>  1 file changed, 6 insertions(+), 3 deletions(-)
> 
> diff --git a/arch/arm/mach-stm32/stm32h7/soc.c 
> b/arch/arm/mach-stm32/stm32h7/soc.c
> index 692dbcc..e0d3f11 100644
> --- a/arch/arm/mach-stm32/stm32h7/soc.c
> +++ b/arch/arm/mach-stm32/stm32h7/soc.c
> @@ -30,9 +30,12 @@ int arch_cpu_init(void)
>   { 0x, REGION_0, XN_DIS, PRIV_RW_USR_RW,
>   O_I_WB_RD_WR_ALLOC, REGION_4GB },
> 
> - /* Code area, executable & strongly ordered */
> - { 0xD000, REGION_1, XN_EN, PRIV_RW_USR_RW,
> - STRONG_ORDER, REGION_8MB },
> + /*
> +  * Code area, executable, Outer and inner write-back,
> +  * no write allocate
> +  */
> + { 0xD000, REGION_1, XN_DIS, PRIV_RW_USR_RW,
> + O_I_WB_RD_WR_ALLOC, REGION_32MB },
> 
>   /* Device area in all H7 : Not executable */
>   { 0x4000, REGION_2, XN_EN, PRIV_RW_USR_RW,
> --
> 1.9.1

___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot