| /rk3399_ARM-atf/lib/extensions/trbe/ |
| H A D | trbe.c | 13f4a25251cc6ce0230e999f39a4668cff25dcd0 Fri Jan 10 12:04:50 UTC 2025 Boyan Karatotev <boyan.karatotev@arm.com> fix(cm): change back owning security state when a feature is disabled
Patch fc7dca72ba656e5f147487b20f9f0fb6eb39e116 changed the owning security states of the TRBE and SPE buffers to NS. The thinking was that this would assist SMCCC feature availability to more easily determine if the feature is enabled or disabled. However, that only changed bit 0 while the SMCCC feature only looks at bit 1 so this change is redundant.
It was also meant to tighten security but that was done by 73d98e37593f4a4044dd28f52127cdc890911c0c instead.
Annoyingly, FEAT_TRBE has TRBIDR_EL1 which reports that programming is allowed when the current security state owns the buffer even when the MDCR_EL3 setting disallows this in practice.
So revert the functional aspect of the patch as it causes linux panics with ERRATA_A520_2938996. Keep the defines as they are used elsewhere.
Change-Id: I39463d585df89aee44d1996137616da85d678f41 Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com> 73d98e37593f4a4044dd28f52127cdc890911c0c Mon Dec 02 09:36:10 UTC 2024 Boyan Karatotev <boyan.karatotev@arm.com> fix(trbe): add a tsb before context switching
Just like for SPE, we need to synchronize TRBE samples before we change the context to ensure everything goes where it was intended to. If that is not done, the in-flight entries might use any piece of now incorrect context as there are no implicit ordering requirements.
Prior to root context, the buffer drain hooks would have done that. But now that must happen much earlier. So add a tsb to prepare_el3_entry as well.
Annoyingly, the barrier can be reordered relative to other instructions by default (rule RCKVWP). So add an isb after the psb/tsb to assure that they are ordered, at least as far as context is concerned.
Then, drop the buffer draining hooks. Everything they need to do is already done by now. There's a notable difference in that there are no dsb-s now. Since EL3 does not access the buffers or the feature specific context, we don't need to wait for them to finish.
Finally, drop a stray isb in the context saving macro. It is now absorbed into root context, but was missed.
Change-Id: I30797a40ac7f91d0bb71ad271a1597e85092ccd5 Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
|
| /rk3399_ARM-atf/lib/extensions/spe/ |
| H A D | spe.c | 13f4a25251cc6ce0230e999f39a4668cff25dcd0 Fri Jan 10 12:04:50 UTC 2025 Boyan Karatotev <boyan.karatotev@arm.com> fix(cm): change back owning security state when a feature is disabled
Patch fc7dca72ba656e5f147487b20f9f0fb6eb39e116 changed the owning security states of the TRBE and SPE buffers to NS. The thinking was that this would assist SMCCC feature availability to more easily determine if the feature is enabled or disabled. However, that only changed bit 0 while the SMCCC feature only looks at bit 1 so this change is redundant.
It was also meant to tighten security but that was done by 73d98e37593f4a4044dd28f52127cdc890911c0c instead.
Annoyingly, FEAT_TRBE has TRBIDR_EL1 which reports that programming is allowed when the current security state owns the buffer even when the MDCR_EL3 setting disallows this in practice.
So revert the functional aspect of the patch as it causes linux panics with ERRATA_A520_2938996. Keep the defines as they are used elsewhere.
Change-Id: I39463d585df89aee44d1996137616da85d678f41 Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com> 73d98e37593f4a4044dd28f52127cdc890911c0c Mon Dec 02 09:36:10 UTC 2024 Boyan Karatotev <boyan.karatotev@arm.com> fix(trbe): add a tsb before context switching
Just like for SPE, we need to synchronize TRBE samples before we change the context to ensure everything goes where it was intended to. If that is not done, the in-flight entries might use any piece of now incorrect context as there are no implicit ordering requirements.
Prior to root context, the buffer drain hooks would have done that. But now that must happen much earlier. So add a tsb to prepare_el3_entry as well.
Annoyingly, the barrier can be reordered relative to other instructions by default (rule RCKVWP). So add an isb after the psb/tsb to assure that they are ordered, at least as far as context is concerned.
Then, drop the buffer draining hooks. Everything they need to do is already done by now. There's a notable difference in that there are no dsb-s now. Since EL3 does not access the buffers or the feature specific context, we don't need to wait for them to finish.
Finally, drop a stray isb in the context saving macro. It is now absorbed into root context, but was missed.
Change-Id: I30797a40ac7f91d0bb71ad271a1597e85092ccd5 Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
|
| /rk3399_ARM-atf/include/arch/aarch64/ |
| H A D | asm_macros.S | 73d98e37593f4a4044dd28f52127cdc890911c0c Mon Dec 02 09:36:10 UTC 2024 Boyan Karatotev <boyan.karatotev@arm.com> fix(trbe): add a tsb before context switching
Just like for SPE, we need to synchronize TRBE samples before we change the context to ensure everything goes where it was intended to. If that is not done, the in-flight entries might use any piece of now incorrect context as there are no implicit ordering requirements.
Prior to root context, the buffer drain hooks would have done that. But now that must happen much earlier. So add a tsb to prepare_el3_entry as well.
Annoyingly, the barrier can be reordered relative to other instructions by default (rule RCKVWP). So add an isb after the psb/tsb to assure that they are ordered, at least as far as context is concerned.
Then, drop the buffer draining hooks. Everything they need to do is already done by now. There's a notable difference in that there are no dsb-s now. Since EL3 does not access the buffers or the feature specific context, we don't need to wait for them to finish.
Finally, drop a stray isb in the context saving macro. It is now absorbed into root context, but was missed.
Change-Id: I30797a40ac7f91d0bb71ad271a1597e85092ccd5 Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
|
| /rk3399_ARM-atf/lib/el3_runtime/aarch64/ |
| H A D | context.S | 73d98e37593f4a4044dd28f52127cdc890911c0c Mon Dec 02 09:36:10 UTC 2024 Boyan Karatotev <boyan.karatotev@arm.com> fix(trbe): add a tsb before context switching
Just like for SPE, we need to synchronize TRBE samples before we change the context to ensure everything goes where it was intended to. If that is not done, the in-flight entries might use any piece of now incorrect context as there are no implicit ordering requirements.
Prior to root context, the buffer drain hooks would have done that. But now that must happen much earlier. So add a tsb to prepare_el3_entry as well.
Annoyingly, the barrier can be reordered relative to other instructions by default (rule RCKVWP). So add an isb after the psb/tsb to assure that they are ordered, at least as far as context is concerned.
Then, drop the buffer draining hooks. Everything they need to do is already done by now. There's a notable difference in that there are no dsb-s now. Since EL3 does not access the buffers or the feature specific context, we don't need to wait for them to finish.
Finally, drop a stray isb in the context saving macro. It is now absorbed into root context, but was missed.
Change-Id: I30797a40ac7f91d0bb71ad271a1597e85092ccd5 Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
|