* [PATCH 0/2] ARM: at91: add support for L2 cache write_sec() callback @ 2022-06-06 14:56 ` Clément Léger 0 siblings, 0 replies; 16+ messages in thread From: Clément Léger @ 2022-06-06 14:56 UTC (permalink / raw) To: Russell King, Nicolas Ferre, Alexandre Belloni, Claudiu Beznea Cc: Clément Léger, linux-arm-kernel, linux-kernel, Thomas Petazzoni When running under OP-TEE the L2 cache is configured by OP-TEE and can't be modified for the moment. Add necessary function to get the current execution world of Linux and add early_setup() callback that will set the .write_sec() callback for the outer cache. Clément Léger (2): ARM: at91: add sam_linux_is_in_normal_world() function ARM: at91: setup outer cache .write_sec() callback if needed arch/arm/mach-at91/sam_secure.c | 6 ++++++ arch/arm/mach-at91/sam_secure.h | 1 + arch/arm/mach-at91/sama5.c | 17 +++++++++++++++++ 3 files changed, 24 insertions(+) -- 2.36.1 ^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH 0/2] ARM: at91: add support for L2 cache write_sec() callback @ 2022-06-06 14:56 ` Clément Léger 0 siblings, 0 replies; 16+ messages in thread From: Clément Léger @ 2022-06-06 14:56 UTC (permalink / raw) To: Russell King, Nicolas Ferre, Alexandre Belloni, Claudiu Beznea Cc: Clément Léger, linux-arm-kernel, linux-kernel, Thomas Petazzoni When running under OP-TEE the L2 cache is configured by OP-TEE and can't be modified for the moment. Add necessary function to get the current execution world of Linux and add early_setup() callback that will set the .write_sec() callback for the outer cache. Clément Léger (2): ARM: at91: add sam_linux_is_in_normal_world() function ARM: at91: setup outer cache .write_sec() callback if needed arch/arm/mach-at91/sam_secure.c | 6 ++++++ arch/arm/mach-at91/sam_secure.h | 1 + arch/arm/mach-at91/sama5.c | 17 +++++++++++++++++ 3 files changed, 24 insertions(+) -- 2.36.1 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH 1/2] ARM: at91: add sam_linux_is_in_normal_world() function 2022-06-06 14:56 ` Clément Léger @ 2022-06-06 14:57 ` Clément Léger -1 siblings, 0 replies; 16+ messages in thread From: Clément Léger @ 2022-06-06 14:57 UTC (permalink / raw) To: Russell King, Nicolas Ferre, Alexandre Belloni, Claudiu Beznea Cc: Clément Léger, linux-arm-kernel, linux-kernel, Thomas Petazzoni Add sam_linux_is_in_normal_world() which allows to know if Linux is running in the normal world or not. This function is used by code which needs to differentiate the world in which Linux is running. Signed-off-by: Clément Léger <clement.leger@bootlin.com> --- arch/arm/mach-at91/sam_secure.c | 6 ++++++ arch/arm/mach-at91/sam_secure.h | 1 + 2 files changed, 7 insertions(+) diff --git a/arch/arm/mach-at91/sam_secure.c b/arch/arm/mach-at91/sam_secure.c index 2a01f7a7d13f..1ec8c8b9d119 100644 --- a/arch/arm/mach-at91/sam_secure.c +++ b/arch/arm/mach-at91/sam_secure.c @@ -27,6 +27,12 @@ struct arm_smccc_res sam_smccc_call(u32 fn, u32 arg0, u32 arg1) return res; } +bool sam_linux_is_in_normal_world(void) +{ + /* If optee has been detected, then we are running in normal world */ + return optee_available; +} + void __init sam_secure_init(void) { struct device_node *np; diff --git a/arch/arm/mach-at91/sam_secure.h b/arch/arm/mach-at91/sam_secure.h index 1e7d8b20ba1e..6d8c01f9c5f0 100644 --- a/arch/arm/mach-at91/sam_secure.h +++ b/arch/arm/mach-at91/sam_secure.h @@ -14,5 +14,6 @@ void __init sam_secure_init(void); struct arm_smccc_res sam_smccc_call(u32 fn, u32 arg0, u32 arg1); +bool sam_linux_is_in_normal_world(void); #endif /* SAM_SECURE_H */ -- 2.36.1 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH 1/2] ARM: at91: add sam_linux_is_in_normal_world() function @ 2022-06-06 14:57 ` Clément Léger 0 siblings, 0 replies; 16+ messages in thread From: Clément Léger @ 2022-06-06 14:57 UTC (permalink / raw) To: Russell King, Nicolas Ferre, Alexandre Belloni, Claudiu Beznea Cc: Clément Léger, linux-arm-kernel, linux-kernel, Thomas Petazzoni Add sam_linux_is_in_normal_world() which allows to know if Linux is running in the normal world or not. This function is used by code which needs to differentiate the world in which Linux is running. Signed-off-by: Clément Léger <clement.leger@bootlin.com> --- arch/arm/mach-at91/sam_secure.c | 6 ++++++ arch/arm/mach-at91/sam_secure.h | 1 + 2 files changed, 7 insertions(+) diff --git a/arch/arm/mach-at91/sam_secure.c b/arch/arm/mach-at91/sam_secure.c index 2a01f7a7d13f..1ec8c8b9d119 100644 --- a/arch/arm/mach-at91/sam_secure.c +++ b/arch/arm/mach-at91/sam_secure.c @@ -27,6 +27,12 @@ struct arm_smccc_res sam_smccc_call(u32 fn, u32 arg0, u32 arg1) return res; } +bool sam_linux_is_in_normal_world(void) +{ + /* If optee has been detected, then we are running in normal world */ + return optee_available; +} + void __init sam_secure_init(void) { struct device_node *np; diff --git a/arch/arm/mach-at91/sam_secure.h b/arch/arm/mach-at91/sam_secure.h index 1e7d8b20ba1e..6d8c01f9c5f0 100644 --- a/arch/arm/mach-at91/sam_secure.h +++ b/arch/arm/mach-at91/sam_secure.h @@ -14,5 +14,6 @@ void __init sam_secure_init(void); struct arm_smccc_res sam_smccc_call(u32 fn, u32 arg0, u32 arg1); +bool sam_linux_is_in_normal_world(void); #endif /* SAM_SECURE_H */ -- 2.36.1 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [PATCH 1/2] ARM: at91: add sam_linux_is_in_normal_world() function 2022-06-06 14:57 ` Clément Léger @ 2022-07-04 6:19 ` Claudiu.Beznea -1 siblings, 0 replies; 16+ messages in thread From: Claudiu.Beznea @ 2022-07-04 6:19 UTC (permalink / raw) To: clement.leger, linux, Nicolas.Ferre, alexandre.belloni Cc: linux-arm-kernel, linux-kernel, thomas.petazzoni Hi, Clement, On 06.06.2022 17:57, Clément Léger wrote: > EXTERNAL EMAIL: Do not click links or open attachments unless you know the content is safe > > Add sam_linux_is_in_normal_world() which allows to know if Linux is > running in the normal world or not. This function is used by code > which needs to differentiate the world in which Linux is running. > > Signed-off-by: Clément Léger <clement.leger@bootlin.com> > --- > arch/arm/mach-at91/sam_secure.c | 6 ++++++ > arch/arm/mach-at91/sam_secure.h | 1 + > 2 files changed, 7 insertions(+) > > diff --git a/arch/arm/mach-at91/sam_secure.c b/arch/arm/mach-at91/sam_secure.c > index 2a01f7a7d13f..1ec8c8b9d119 100644 > --- a/arch/arm/mach-at91/sam_secure.c > +++ b/arch/arm/mach-at91/sam_secure.c > @@ -27,6 +27,12 @@ struct arm_smccc_res sam_smccc_call(u32 fn, u32 arg0, u32 arg1) > return res; > } > > +bool sam_linux_is_in_normal_world(void) > +{ > + /* If optee has been detected, then we are running in normal world */ In case optee hasn't been detected don't we run also in normal world? What I want to say is that maybe you can change the function name to something like sam_linux_is_optee_available(). Thank you, Claudiu Beznea > + return optee_available; > +} > + > void __init sam_secure_init(void) > { > struct device_node *np; > diff --git a/arch/arm/mach-at91/sam_secure.h b/arch/arm/mach-at91/sam_secure.h > index 1e7d8b20ba1e..6d8c01f9c5f0 100644 > --- a/arch/arm/mach-at91/sam_secure.h > +++ b/arch/arm/mach-at91/sam_secure.h > @@ -14,5 +14,6 @@ > > void __init sam_secure_init(void); > struct arm_smccc_res sam_smccc_call(u32 fn, u32 arg0, u32 arg1); > +bool sam_linux_is_in_normal_world(void); > > #endif /* SAM_SECURE_H */ > -- > 2.36.1 > ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 1/2] ARM: at91: add sam_linux_is_in_normal_world() function @ 2022-07-04 6:19 ` Claudiu.Beznea 0 siblings, 0 replies; 16+ messages in thread From: Claudiu.Beznea @ 2022-07-04 6:19 UTC (permalink / raw) To: clement.leger, linux, Nicolas.Ferre, alexandre.belloni Cc: linux-arm-kernel, linux-kernel, thomas.petazzoni Hi, Clement, On 06.06.2022 17:57, Clément Léger wrote: > EXTERNAL EMAIL: Do not click links or open attachments unless you know the content is safe > > Add sam_linux_is_in_normal_world() which allows to know if Linux is > running in the normal world or not. This function is used by code > which needs to differentiate the world in which Linux is running. > > Signed-off-by: Clément Léger <clement.leger@bootlin.com> > --- > arch/arm/mach-at91/sam_secure.c | 6 ++++++ > arch/arm/mach-at91/sam_secure.h | 1 + > 2 files changed, 7 insertions(+) > > diff --git a/arch/arm/mach-at91/sam_secure.c b/arch/arm/mach-at91/sam_secure.c > index 2a01f7a7d13f..1ec8c8b9d119 100644 > --- a/arch/arm/mach-at91/sam_secure.c > +++ b/arch/arm/mach-at91/sam_secure.c > @@ -27,6 +27,12 @@ struct arm_smccc_res sam_smccc_call(u32 fn, u32 arg0, u32 arg1) > return res; > } > > +bool sam_linux_is_in_normal_world(void) > +{ > + /* If optee has been detected, then we are running in normal world */ In case optee hasn't been detected don't we run also in normal world? What I want to say is that maybe you can change the function name to something like sam_linux_is_optee_available(). Thank you, Claudiu Beznea > + return optee_available; > +} > + > void __init sam_secure_init(void) > { > struct device_node *np; > diff --git a/arch/arm/mach-at91/sam_secure.h b/arch/arm/mach-at91/sam_secure.h > index 1e7d8b20ba1e..6d8c01f9c5f0 100644 > --- a/arch/arm/mach-at91/sam_secure.h > +++ b/arch/arm/mach-at91/sam_secure.h > @@ -14,5 +14,6 @@ > > void __init sam_secure_init(void); > struct arm_smccc_res sam_smccc_call(u32 fn, u32 arg0, u32 arg1); > +bool sam_linux_is_in_normal_world(void); > > #endif /* SAM_SECURE_H */ > -- > 2.36.1 > _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 1/2] ARM: at91: add sam_linux_is_in_normal_world() function 2022-07-04 6:19 ` Claudiu.Beznea @ 2022-07-04 17:34 ` clement.leger -1 siblings, 0 replies; 16+ messages in thread From: clement.leger @ 2022-07-04 17:34 UTC (permalink / raw) To: Claudiu.Beznea Cc: linux, Nicolas.Ferre, alexandre.belloni, linux-arm-kernel, linux-kernel, thomas.petazzoni Le 2022-07-04 08:19, Claudiu.Beznea@microchip.com a écrit : > Hi, Clement, > > On 06.06.2022 17:57, Clément Léger wrote: >> EXTERNAL EMAIL: Do not click links or open attachments unless you know >> the content is safe >> >> Add sam_linux_is_in_normal_world() which allows to know if Linux is >> running in the normal world or not. This function is used by code >> which needs to differentiate the world in which Linux is running. >> >> Signed-off-by: Clément Léger <clement.leger@bootlin.com> >> --- >> arch/arm/mach-at91/sam_secure.c | 6 ++++++ >> arch/arm/mach-at91/sam_secure.h | 1 + >> 2 files changed, 7 insertions(+) >> >> diff --git a/arch/arm/mach-at91/sam_secure.c >> b/arch/arm/mach-at91/sam_secure.c >> index 2a01f7a7d13f..1ec8c8b9d119 100644 >> --- a/arch/arm/mach-at91/sam_secure.c >> +++ b/arch/arm/mach-at91/sam_secure.c >> @@ -27,6 +27,12 @@ struct arm_smccc_res sam_smccc_call(u32 fn, u32 >> arg0, u32 arg1) >> return res; >> } >> >> +bool sam_linux_is_in_normal_world(void) >> +{ >> + /* If optee has been detected, then we are running in normal >> world */ > > In case optee hasn't been detected don't we run also in normal world? > What I want to say is that maybe you can change the function name to > something like sam_linux_is_optee_available(). I would say it depends on the bootloader configuration, but Linux can run in secure world also. It would not change a lot of thing though. However, you are right sam_linux_optee_is_available() seems easier to understand ;) Clément ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 1/2] ARM: at91: add sam_linux_is_in_normal_world() function @ 2022-07-04 17:34 ` clement.leger 0 siblings, 0 replies; 16+ messages in thread From: clement.leger @ 2022-07-04 17:34 UTC (permalink / raw) To: Claudiu.Beznea Cc: alexandre.belloni, linux-kernel, linux, thomas.petazzoni, linux-arm-kernel Le 2022-07-04 08:19, Claudiu.Beznea@microchip.com a écrit : > Hi, Clement, > > On 06.06.2022 17:57, Clément Léger wrote: >> EXTERNAL EMAIL: Do not click links or open attachments unless you know >> the content is safe >> >> Add sam_linux_is_in_normal_world() which allows to know if Linux is >> running in the normal world or not. This function is used by code >> which needs to differentiate the world in which Linux is running. >> >> Signed-off-by: Clément Léger <clement.leger@bootlin.com> >> --- >> arch/arm/mach-at91/sam_secure.c | 6 ++++++ >> arch/arm/mach-at91/sam_secure.h | 1 + >> 2 files changed, 7 insertions(+) >> >> diff --git a/arch/arm/mach-at91/sam_secure.c >> b/arch/arm/mach-at91/sam_secure.c >> index 2a01f7a7d13f..1ec8c8b9d119 100644 >> --- a/arch/arm/mach-at91/sam_secure.c >> +++ b/arch/arm/mach-at91/sam_secure.c >> @@ -27,6 +27,12 @@ struct arm_smccc_res sam_smccc_call(u32 fn, u32 >> arg0, u32 arg1) >> return res; >> } >> >> +bool sam_linux_is_in_normal_world(void) >> +{ >> + /* If optee has been detected, then we are running in normal >> world */ > > In case optee hasn't been detected don't we run also in normal world? > What I want to say is that maybe you can change the function name to > something like sam_linux_is_optee_available(). I would say it depends on the bootloader configuration, but Linux can run in secure world also. It would not change a lot of thing though. However, you are right sam_linux_optee_is_available() seems easier to understand ;) Clément _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 1/2] ARM: at91: add sam_linux_is_in_normal_world() function 2022-07-04 17:34 ` clement.leger @ 2022-07-20 8:29 ` Claudiu.Beznea -1 siblings, 0 replies; 16+ messages in thread From: Claudiu.Beznea @ 2022-07-20 8:29 UTC (permalink / raw) To: clement.leger Cc: linux, Nicolas.Ferre, alexandre.belloni, linux-arm-kernel, linux-kernel, thomas.petazzoni On 04.07.2022 20:34, clement.leger@bootlin.com wrote: > EXTERNAL EMAIL: Do not click links or open attachments unless you know the > content is safe > > Le 2022-07-04 08:19, Claudiu.Beznea@microchip.com a écrit : >> Hi, Clement, >> >> On 06.06.2022 17:57, Clément Léger wrote: >>> EXTERNAL EMAIL: Do not click links or open attachments unless you know >>> the content is safe >>> >>> Add sam_linux_is_in_normal_world() which allows to know if Linux is >>> running in the normal world or not. This function is used by code >>> which needs to differentiate the world in which Linux is running. >>> >>> Signed-off-by: Clément Léger <clement.leger@bootlin.com> >>> --- >>> arch/arm/mach-at91/sam_secure.c | 6 ++++++ >>> arch/arm/mach-at91/sam_secure.h | 1 + >>> 2 files changed, 7 insertions(+) >>> >>> diff --git a/arch/arm/mach-at91/sam_secure.c >>> b/arch/arm/mach-at91/sam_secure.c >>> index 2a01f7a7d13f..1ec8c8b9d119 100644 >>> --- a/arch/arm/mach-at91/sam_secure.c >>> +++ b/arch/arm/mach-at91/sam_secure.c >>> @@ -27,6 +27,12 @@ struct arm_smccc_res sam_smccc_call(u32 fn, u32 >>> arg0, u32 arg1) >>> return res; >>> } >>> >>> +bool sam_linux_is_in_normal_world(void) >>> +{ >>> + /* If optee has been detected, then we are running in normal >>> world */ >> >> In case optee hasn't been detected don't we run also in normal world? >> What I want to say is that maybe you can change the function name to >> something like sam_linux_is_optee_available(). > > I would say it depends on the bootloader configuration, but Linux can > run > in secure world also. It would not change a lot of thing though. > However, you are right sam_linux_optee_is_available() seems easier to > understand ;) Changed the name and applied it to at91-soc, thanks! > > Clément ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 1/2] ARM: at91: add sam_linux_is_in_normal_world() function @ 2022-07-20 8:29 ` Claudiu.Beznea 0 siblings, 0 replies; 16+ messages in thread From: Claudiu.Beznea @ 2022-07-20 8:29 UTC (permalink / raw) To: clement.leger Cc: alexandre.belloni, linux-kernel, linux, thomas.petazzoni, linux-arm-kernel On 04.07.2022 20:34, clement.leger@bootlin.com wrote: > EXTERNAL EMAIL: Do not click links or open attachments unless you know the > content is safe > > Le 2022-07-04 08:19, Claudiu.Beznea@microchip.com a écrit : >> Hi, Clement, >> >> On 06.06.2022 17:57, Clément Léger wrote: >>> EXTERNAL EMAIL: Do not click links or open attachments unless you know >>> the content is safe >>> >>> Add sam_linux_is_in_normal_world() which allows to know if Linux is >>> running in the normal world or not. This function is used by code >>> which needs to differentiate the world in which Linux is running. >>> >>> Signed-off-by: Clément Léger <clement.leger@bootlin.com> >>> --- >>> arch/arm/mach-at91/sam_secure.c | 6 ++++++ >>> arch/arm/mach-at91/sam_secure.h | 1 + >>> 2 files changed, 7 insertions(+) >>> >>> diff --git a/arch/arm/mach-at91/sam_secure.c >>> b/arch/arm/mach-at91/sam_secure.c >>> index 2a01f7a7d13f..1ec8c8b9d119 100644 >>> --- a/arch/arm/mach-at91/sam_secure.c >>> +++ b/arch/arm/mach-at91/sam_secure.c >>> @@ -27,6 +27,12 @@ struct arm_smccc_res sam_smccc_call(u32 fn, u32 >>> arg0, u32 arg1) >>> return res; >>> } >>> >>> +bool sam_linux_is_in_normal_world(void) >>> +{ >>> + /* If optee has been detected, then we are running in normal >>> world */ >> >> In case optee hasn't been detected don't we run also in normal world? >> What I want to say is that maybe you can change the function name to >> something like sam_linux_is_optee_available(). > > I would say it depends on the bootloader configuration, but Linux can > run > in secure world also. It would not change a lot of thing though. > However, you are right sam_linux_optee_is_available() seems easier to > understand ;) Changed the name and applied it to at91-soc, thanks! > > Clément _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH 2/2] ARM: at91: setup outer cache .write_sec() callback if needed 2022-06-06 14:56 ` Clément Léger @ 2022-06-06 14:57 ` Clément Léger -1 siblings, 0 replies; 16+ messages in thread From: Clément Léger @ 2022-06-06 14:57 UTC (permalink / raw) To: Russell King, Nicolas Ferre, Alexandre Belloni, Claudiu Beznea Cc: Clément Léger, linux-arm-kernel, linux-kernel, Thomas Petazzoni When running under OP-TEE, the L2 cache is configured by OP-TEE and the sam platform code does not allow any modification yet. Setup a dummy .write_sec() callback to avoid triggering exceptions when Linux tries to modify the L2 cache configuration. Signed-off-by: Clément Léger <clement.leger@bootlin.com> --- arch/arm/mach-at91/sama5.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/arch/arm/mach-at91/sama5.c b/arch/arm/mach-at91/sama5.c index de5dd28b392e..d1a9e940a785 100644 --- a/arch/arm/mach-at91/sama5.c +++ b/arch/arm/mach-at91/sama5.c @@ -9,13 +9,27 @@ #include <linux/of.h> #include <linux/of_platform.h> +#include <asm/hardware/cache-l2x0.h> #include <asm/mach/arch.h> #include <asm/mach/map.h> +#include <asm/outercache.h> #include <asm/system_misc.h> #include "generic.h" #include "sam_secure.h" +static void sama5_l2c310_write_sec(unsigned long val, unsigned reg) +{ + /* OP-TEE configures the L2 cache and does not allow modifying it yet */ +} + +static void __init sama5_secure_cache_init(void) +{ + sam_secure_init(); + if (sam_linux_is_in_normal_world()) + outer_cache.write_sec = sama5_l2c310_write_sec; +} + static void __init sama5_dt_device_init(void) { of_platform_default_populate(NULL, NULL, NULL); @@ -30,6 +44,7 @@ static const char *const sama5_dt_board_compat[] __initconst = { DT_MACHINE_START(sama5_dt, "Atmel SAMA5") /* Maintainer: Atmel */ .init_machine = sama5_dt_device_init, + .init_early = sama5_secure_cache_init, .dt_compat = sama5_dt_board_compat, MACHINE_END @@ -41,6 +56,7 @@ static const char *const sama5_alt_dt_board_compat[] __initconst = { DT_MACHINE_START(sama5_alt_dt, "Atmel SAMA5") /* Maintainer: Atmel */ .init_machine = sama5_dt_device_init, + .init_early = sama5_secure_cache_init, .dt_compat = sama5_alt_dt_board_compat, .l2c_aux_mask = ~0UL, MACHINE_END @@ -60,6 +76,7 @@ static const char *const sama5d2_compat[] __initconst = { DT_MACHINE_START(sama5d2, "Atmel SAMA5") /* Maintainer: Atmel */ .init_machine = sama5d2_init, + .init_early = sama5_secure_cache_init, .dt_compat = sama5d2_compat, .l2c_aux_mask = ~0UL, MACHINE_END -- 2.36.1 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH 2/2] ARM: at91: setup outer cache .write_sec() callback if needed @ 2022-06-06 14:57 ` Clément Léger 0 siblings, 0 replies; 16+ messages in thread From: Clément Léger @ 2022-06-06 14:57 UTC (permalink / raw) To: Russell King, Nicolas Ferre, Alexandre Belloni, Claudiu Beznea Cc: Clément Léger, linux-arm-kernel, linux-kernel, Thomas Petazzoni When running under OP-TEE, the L2 cache is configured by OP-TEE and the sam platform code does not allow any modification yet. Setup a dummy .write_sec() callback to avoid triggering exceptions when Linux tries to modify the L2 cache configuration. Signed-off-by: Clément Léger <clement.leger@bootlin.com> --- arch/arm/mach-at91/sama5.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/arch/arm/mach-at91/sama5.c b/arch/arm/mach-at91/sama5.c index de5dd28b392e..d1a9e940a785 100644 --- a/arch/arm/mach-at91/sama5.c +++ b/arch/arm/mach-at91/sama5.c @@ -9,13 +9,27 @@ #include <linux/of.h> #include <linux/of_platform.h> +#include <asm/hardware/cache-l2x0.h> #include <asm/mach/arch.h> #include <asm/mach/map.h> +#include <asm/outercache.h> #include <asm/system_misc.h> #include "generic.h" #include "sam_secure.h" +static void sama5_l2c310_write_sec(unsigned long val, unsigned reg) +{ + /* OP-TEE configures the L2 cache and does not allow modifying it yet */ +} + +static void __init sama5_secure_cache_init(void) +{ + sam_secure_init(); + if (sam_linux_is_in_normal_world()) + outer_cache.write_sec = sama5_l2c310_write_sec; +} + static void __init sama5_dt_device_init(void) { of_platform_default_populate(NULL, NULL, NULL); @@ -30,6 +44,7 @@ static const char *const sama5_dt_board_compat[] __initconst = { DT_MACHINE_START(sama5_dt, "Atmel SAMA5") /* Maintainer: Atmel */ .init_machine = sama5_dt_device_init, + .init_early = sama5_secure_cache_init, .dt_compat = sama5_dt_board_compat, MACHINE_END @@ -41,6 +56,7 @@ static const char *const sama5_alt_dt_board_compat[] __initconst = { DT_MACHINE_START(sama5_alt_dt, "Atmel SAMA5") /* Maintainer: Atmel */ .init_machine = sama5_dt_device_init, + .init_early = sama5_secure_cache_init, .dt_compat = sama5_alt_dt_board_compat, .l2c_aux_mask = ~0UL, MACHINE_END @@ -60,6 +76,7 @@ static const char *const sama5d2_compat[] __initconst = { DT_MACHINE_START(sama5d2, "Atmel SAMA5") /* Maintainer: Atmel */ .init_machine = sama5d2_init, + .init_early = sama5_secure_cache_init, .dt_compat = sama5d2_compat, .l2c_aux_mask = ~0UL, MACHINE_END -- 2.36.1 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [PATCH 2/2] ARM: at91: setup outer cache .write_sec() callback if needed 2022-06-06 14:57 ` Clément Léger @ 2022-07-04 6:39 ` Claudiu.Beznea -1 siblings, 0 replies; 16+ messages in thread From: Claudiu.Beznea @ 2022-07-04 6:39 UTC (permalink / raw) To: clement.leger, linux, Nicolas.Ferre, alexandre.belloni Cc: linux-arm-kernel, linux-kernel, thomas.petazzoni On 06.06.2022 17:57, Clément Léger wrote: > EXTERNAL EMAIL: Do not click links or open attachments unless you know the content is safe > > When running under OP-TEE, the L2 cache is configured by OP-TEE and the > sam platform code does not allow any modification yet. Setup a dummy > .write_sec() callback to avoid triggering exceptions when Linux tries > to modify the L2 cache configuration. > > Signed-off-by: Clément Léger <clement.leger@bootlin.com> > --- > arch/arm/mach-at91/sama5.c | 17 +++++++++++++++++ > 1 file changed, 17 insertions(+) > > diff --git a/arch/arm/mach-at91/sama5.c b/arch/arm/mach-at91/sama5.c > index de5dd28b392e..d1a9e940a785 100644 > --- a/arch/arm/mach-at91/sama5.c > +++ b/arch/arm/mach-at91/sama5.c > @@ -9,13 +9,27 @@ > #include <linux/of.h> > #include <linux/of_platform.h> > > +#include <asm/hardware/cache-l2x0.h> > #include <asm/mach/arch.h> > #include <asm/mach/map.h> > +#include <asm/outercache.h> > #include <asm/system_misc.h> > > #include "generic.h" > #include "sam_secure.h" > > +static void sama5_l2c310_write_sec(unsigned long val, unsigned reg) > +{ > + /* OP-TEE configures the L2 cache and does not allow modifying it yet */ > +} > + > +static void __init sama5_secure_cache_init(void) > +{ > + sam_secure_init(); With this, could the sam_secure_init() in sama5d2_init() (not listed in this diff) be removed? > + if (sam_linux_is_in_normal_world()) > + outer_cache.write_sec = sama5_l2c310_write_sec; > +} > + > static void __init sama5_dt_device_init(void) > { > of_platform_default_populate(NULL, NULL, NULL); > @@ -30,6 +44,7 @@ static const char *const sama5_dt_board_compat[] __initconst = { > DT_MACHINE_START(sama5_dt, "Atmel SAMA5") > /* Maintainer: Atmel */ > .init_machine = sama5_dt_device_init, > + .init_early = sama5_secure_cache_init, This is for the generic "atmel,sama5" which can apply also to sama5d3 or sama5d4. I know this is harmless for functionality (except maybe when optee is in DT) but do we want it here? > .dt_compat = sama5_dt_board_compat, > MACHINE_END > > @@ -41,6 +56,7 @@ static const char *const sama5_alt_dt_board_compat[] __initconst = { > DT_MACHINE_START(sama5_alt_dt, "Atmel SAMA5") > /* Maintainer: Atmel */ > .init_machine = sama5_dt_device_init, > + .init_early = sama5_secure_cache_init, Same here except it applies to sama5d4 only. > .dt_compat = sama5_alt_dt_board_compat, > .l2c_aux_mask = ~0UL, > MACHINE_END > @@ -60,6 +76,7 @@ static const char *const sama5d2_compat[] __initconst = { > DT_MACHINE_START(sama5d2, "Atmel SAMA5") > /* Maintainer: Atmel */ > .init_machine = sama5d2_init, > + .init_early = sama5_secure_cache_init, > .dt_compat = sama5d2_compat, > .l2c_aux_mask = ~0UL, > MACHINE_END > -- > 2.36.1 > ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 2/2] ARM: at91: setup outer cache .write_sec() callback if needed @ 2022-07-04 6:39 ` Claudiu.Beznea 0 siblings, 0 replies; 16+ messages in thread From: Claudiu.Beznea @ 2022-07-04 6:39 UTC (permalink / raw) To: clement.leger, linux, Nicolas.Ferre, alexandre.belloni Cc: linux-arm-kernel, linux-kernel, thomas.petazzoni On 06.06.2022 17:57, Clément Léger wrote: > EXTERNAL EMAIL: Do not click links or open attachments unless you know the content is safe > > When running under OP-TEE, the L2 cache is configured by OP-TEE and the > sam platform code does not allow any modification yet. Setup a dummy > .write_sec() callback to avoid triggering exceptions when Linux tries > to modify the L2 cache configuration. > > Signed-off-by: Clément Léger <clement.leger@bootlin.com> > --- > arch/arm/mach-at91/sama5.c | 17 +++++++++++++++++ > 1 file changed, 17 insertions(+) > > diff --git a/arch/arm/mach-at91/sama5.c b/arch/arm/mach-at91/sama5.c > index de5dd28b392e..d1a9e940a785 100644 > --- a/arch/arm/mach-at91/sama5.c > +++ b/arch/arm/mach-at91/sama5.c > @@ -9,13 +9,27 @@ > #include <linux/of.h> > #include <linux/of_platform.h> > > +#include <asm/hardware/cache-l2x0.h> > #include <asm/mach/arch.h> > #include <asm/mach/map.h> > +#include <asm/outercache.h> > #include <asm/system_misc.h> > > #include "generic.h" > #include "sam_secure.h" > > +static void sama5_l2c310_write_sec(unsigned long val, unsigned reg) > +{ > + /* OP-TEE configures the L2 cache and does not allow modifying it yet */ > +} > + > +static void __init sama5_secure_cache_init(void) > +{ > + sam_secure_init(); With this, could the sam_secure_init() in sama5d2_init() (not listed in this diff) be removed? > + if (sam_linux_is_in_normal_world()) > + outer_cache.write_sec = sama5_l2c310_write_sec; > +} > + > static void __init sama5_dt_device_init(void) > { > of_platform_default_populate(NULL, NULL, NULL); > @@ -30,6 +44,7 @@ static const char *const sama5_dt_board_compat[] __initconst = { > DT_MACHINE_START(sama5_dt, "Atmel SAMA5") > /* Maintainer: Atmel */ > .init_machine = sama5_dt_device_init, > + .init_early = sama5_secure_cache_init, This is for the generic "atmel,sama5" which can apply also to sama5d3 or sama5d4. I know this is harmless for functionality (except maybe when optee is in DT) but do we want it here? > .dt_compat = sama5_dt_board_compat, > MACHINE_END > > @@ -41,6 +56,7 @@ static const char *const sama5_alt_dt_board_compat[] __initconst = { > DT_MACHINE_START(sama5_alt_dt, "Atmel SAMA5") > /* Maintainer: Atmel */ > .init_machine = sama5_dt_device_init, > + .init_early = sama5_secure_cache_init, Same here except it applies to sama5d4 only. > .dt_compat = sama5_alt_dt_board_compat, > .l2c_aux_mask = ~0UL, > MACHINE_END > @@ -60,6 +76,7 @@ static const char *const sama5d2_compat[] __initconst = { > DT_MACHINE_START(sama5d2, "Atmel SAMA5") > /* Maintainer: Atmel */ > .init_machine = sama5d2_init, > + .init_early = sama5_secure_cache_init, > .dt_compat = sama5d2_compat, > .l2c_aux_mask = ~0UL, > MACHINE_END > -- > 2.36.1 > _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 2/2] ARM: at91: setup outer cache .write_sec() callback if needed 2022-07-04 6:39 ` Claudiu.Beznea @ 2022-07-20 8:30 ` Claudiu.Beznea -1 siblings, 0 replies; 16+ messages in thread From: Claudiu.Beznea @ 2022-07-20 8:30 UTC (permalink / raw) To: clement.leger, linux, Nicolas.Ferre, alexandre.belloni Cc: linux-arm-kernel, linux-kernel, thomas.petazzoni On 04.07.2022 09:39, Claudiu Beznea - M18063 wrote: > On 06.06.2022 17:57, Clément Léger wrote: >> EXTERNAL EMAIL: Do not click links or open attachments unless you know the content is safe >> >> When running under OP-TEE, the L2 cache is configured by OP-TEE and the >> sam platform code does not allow any modification yet. Setup a dummy >> .write_sec() callback to avoid triggering exceptions when Linux tries >> to modify the L2 cache configuration. >> >> Signed-off-by: Clément Léger <clement.leger@bootlin.com> Applied it to at91-soc with adjustments described in previous reply, thanks! >> --- >> arch/arm/mach-at91/sama5.c | 17 +++++++++++++++++ >> 1 file changed, 17 insertions(+) >> >> diff --git a/arch/arm/mach-at91/sama5.c b/arch/arm/mach-at91/sama5.c >> index de5dd28b392e..d1a9e940a785 100644 >> --- a/arch/arm/mach-at91/sama5.c >> +++ b/arch/arm/mach-at91/sama5.c >> @@ -9,13 +9,27 @@ >> #include <linux/of.h> >> #include <linux/of_platform.h> >> >> +#include <asm/hardware/cache-l2x0.h> >> #include <asm/mach/arch.h> >> #include <asm/mach/map.h> >> +#include <asm/outercache.h> >> #include <asm/system_misc.h> >> >> #include "generic.h" >> #include "sam_secure.h" >> >> +static void sama5_l2c310_write_sec(unsigned long val, unsigned reg) >> +{ >> + /* OP-TEE configures the L2 cache and does not allow modifying it yet */ >> +} >> + >> +static void __init sama5_secure_cache_init(void) >> +{ >> + sam_secure_init(); > > With this, could the sam_secure_init() in sama5d2_init() (not listed in > this diff) be removed? > >> + if (sam_linux_is_in_normal_world()) >> + outer_cache.write_sec = sama5_l2c310_write_sec; >> +} >> + >> static void __init sama5_dt_device_init(void) >> { >> of_platform_default_populate(NULL, NULL, NULL); >> @@ -30,6 +44,7 @@ static const char *const sama5_dt_board_compat[] __initconst = { >> DT_MACHINE_START(sama5_dt, "Atmel SAMA5") >> /* Maintainer: Atmel */ >> .init_machine = sama5_dt_device_init, >> + .init_early = sama5_secure_cache_init, > > This is for the generic "atmel,sama5" which can apply also to sama5d3 or > sama5d4. I know this is harmless for functionality (except maybe when optee > is in DT) but do we want it here? > >> .dt_compat = sama5_dt_board_compat, >> MACHINE_END >> >> @@ -41,6 +56,7 @@ static const char *const sama5_alt_dt_board_compat[] __initconst = { >> DT_MACHINE_START(sama5_alt_dt, "Atmel SAMA5") >> /* Maintainer: Atmel */ >> .init_machine = sama5_dt_device_init, >> + .init_early = sama5_secure_cache_init, > > Same here except it applies to sama5d4 only. > >> .dt_compat = sama5_alt_dt_board_compat, >> .l2c_aux_mask = ~0UL, >> MACHINE_END >> @@ -60,6 +76,7 @@ static const char *const sama5d2_compat[] __initconst = { >> DT_MACHINE_START(sama5d2, "Atmel SAMA5") >> /* Maintainer: Atmel */ >> .init_machine = sama5d2_init, >> + .init_early = sama5_secure_cache_init, >> .dt_compat = sama5d2_compat, >> .l2c_aux_mask = ~0UL, >> MACHINE_END >> -- >> 2.36.1 >> > ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 2/2] ARM: at91: setup outer cache .write_sec() callback if needed @ 2022-07-20 8:30 ` Claudiu.Beznea 0 siblings, 0 replies; 16+ messages in thread From: Claudiu.Beznea @ 2022-07-20 8:30 UTC (permalink / raw) To: clement.leger, linux, Nicolas.Ferre, alexandre.belloni Cc: linux-arm-kernel, linux-kernel, thomas.petazzoni On 04.07.2022 09:39, Claudiu Beznea - M18063 wrote: > On 06.06.2022 17:57, Clément Léger wrote: >> EXTERNAL EMAIL: Do not click links or open attachments unless you know the content is safe >> >> When running under OP-TEE, the L2 cache is configured by OP-TEE and the >> sam platform code does not allow any modification yet. Setup a dummy >> .write_sec() callback to avoid triggering exceptions when Linux tries >> to modify the L2 cache configuration. >> >> Signed-off-by: Clément Léger <clement.leger@bootlin.com> Applied it to at91-soc with adjustments described in previous reply, thanks! >> --- >> arch/arm/mach-at91/sama5.c | 17 +++++++++++++++++ >> 1 file changed, 17 insertions(+) >> >> diff --git a/arch/arm/mach-at91/sama5.c b/arch/arm/mach-at91/sama5.c >> index de5dd28b392e..d1a9e940a785 100644 >> --- a/arch/arm/mach-at91/sama5.c >> +++ b/arch/arm/mach-at91/sama5.c >> @@ -9,13 +9,27 @@ >> #include <linux/of.h> >> #include <linux/of_platform.h> >> >> +#include <asm/hardware/cache-l2x0.h> >> #include <asm/mach/arch.h> >> #include <asm/mach/map.h> >> +#include <asm/outercache.h> >> #include <asm/system_misc.h> >> >> #include "generic.h" >> #include "sam_secure.h" >> >> +static void sama5_l2c310_write_sec(unsigned long val, unsigned reg) >> +{ >> + /* OP-TEE configures the L2 cache and does not allow modifying it yet */ >> +} >> + >> +static void __init sama5_secure_cache_init(void) >> +{ >> + sam_secure_init(); > > With this, could the sam_secure_init() in sama5d2_init() (not listed in > this diff) be removed? > >> + if (sam_linux_is_in_normal_world()) >> + outer_cache.write_sec = sama5_l2c310_write_sec; >> +} >> + >> static void __init sama5_dt_device_init(void) >> { >> of_platform_default_populate(NULL, NULL, NULL); >> @@ -30,6 +44,7 @@ static const char *const sama5_dt_board_compat[] __initconst = { >> DT_MACHINE_START(sama5_dt, "Atmel SAMA5") >> /* Maintainer: Atmel */ >> .init_machine = sama5_dt_device_init, >> + .init_early = sama5_secure_cache_init, > > This is for the generic "atmel,sama5" which can apply also to sama5d3 or > sama5d4. I know this is harmless for functionality (except maybe when optee > is in DT) but do we want it here? > >> .dt_compat = sama5_dt_board_compat, >> MACHINE_END >> >> @@ -41,6 +56,7 @@ static const char *const sama5_alt_dt_board_compat[] __initconst = { >> DT_MACHINE_START(sama5_alt_dt, "Atmel SAMA5") >> /* Maintainer: Atmel */ >> .init_machine = sama5_dt_device_init, >> + .init_early = sama5_secure_cache_init, > > Same here except it applies to sama5d4 only. > >> .dt_compat = sama5_alt_dt_board_compat, >> .l2c_aux_mask = ~0UL, >> MACHINE_END >> @@ -60,6 +76,7 @@ static const char *const sama5d2_compat[] __initconst = { >> DT_MACHINE_START(sama5d2, "Atmel SAMA5") >> /* Maintainer: Atmel */ >> .init_machine = sama5d2_init, >> + .init_early = sama5_secure_cache_init, >> .dt_compat = sama5d2_compat, >> .l2c_aux_mask = ~0UL, >> MACHINE_END >> -- >> 2.36.1 >> > _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2022-07-20 8:31 UTC | newest] Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2022-06-06 14:56 [PATCH 0/2] ARM: at91: add support for L2 cache write_sec() callback Clément Léger 2022-06-06 14:56 ` Clément Léger 2022-06-06 14:57 ` [PATCH 1/2] ARM: at91: add sam_linux_is_in_normal_world() function Clément Léger 2022-06-06 14:57 ` Clément Léger 2022-07-04 6:19 ` Claudiu.Beznea 2022-07-04 6:19 ` Claudiu.Beznea 2022-07-04 17:34 ` clement.leger 2022-07-04 17:34 ` clement.leger 2022-07-20 8:29 ` Claudiu.Beznea 2022-07-20 8:29 ` Claudiu.Beznea 2022-06-06 14:57 ` [PATCH 2/2] ARM: at91: setup outer cache .write_sec() callback if needed Clément Léger 2022-06-06 14:57 ` Clément Léger 2022-07-04 6:39 ` Claudiu.Beznea 2022-07-04 6:39 ` Claudiu.Beznea 2022-07-20 8:30 ` Claudiu.Beznea 2022-07-20 8:30 ` Claudiu.Beznea
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.