[PATCH] arm: mach-k3: common: don't reconfigure background firewalls
Manorit Chawdhry
m-chawdhry at ti.com
Thu Apr 20 13:46:24 CEST 2023
K3 devices have some firewalls set up by ROM that we usually remove so
that the development is easy in HS devices.
While removing the firewalls disabling a background region before
disabling the foreground regions keeps the firewall in a state where all
the transactions will be blacklisted until all the regions are disabled.
This causes a race for some other entity trying to access that memory
region before all the firewalls are disabled and causes an exception.
Since the background regions configured by ROM are in such a manner
that they allow all transactions, don't touch the background regions at
all.
Signed-off-by: Manorit Chawdhry <m-chawdhry at ti.com>
---
arch/arm/mach-k3/common.c | 5 ++++-
arch/arm/mach-k3/common.h | 1 +
2 files changed, 5 insertions(+), 1 deletion(-)
diff --git a/arch/arm/mach-k3/common.c b/arch/arm/mach-k3/common.c
index a2adb791f6c0..6f382c651b5d 100644
--- a/arch/arm/mach-k3/common.c
+++ b/arch/arm/mach-k3/common.c
@@ -545,7 +545,10 @@ void remove_fwl_configs(struct fwl_data *fwl_data, size_t fwl_data_size)
fwl_ops->get_fwl_region(ti_sci, ®ion);
- if (region.control != 0) {
+ /* Don't disable the background regions */
+ if (region.control != 0 &&
+ ((region.control & K3_BACKGROUND_FIREWALL_BIT) ==
+ 0)) {
pr_debug("Attempting to disable firewall %5d (%25s)\n",
region.fwl_id, fwl_data[i].name);
region.control = 0;
diff --git a/arch/arm/mach-k3/common.h b/arch/arm/mach-k3/common.h
index 8f38fcef7f01..6ff84b188cef 100644
--- a/arch/arm/mach-k3/common.h
+++ b/arch/arm/mach-k3/common.h
@@ -11,6 +11,7 @@
#define J721E 0xbb64
#define J7200 0xbb6d
+#define K3_BACKGROUND_FIREWALL_BIT BIT(8)
struct fwl_data {
const char *name;
---
base-commit: a25dcda452bf6a6de72764a8d990d72e5def643d
change-id: 20230418-b4-upstream-j721s2-bg-fwl-fix-2c5c340eb4a9
Best regards,
--
Manorit Chawdhry <m-chawdhry at ti.com>
More information about the U-Boot
mailing list