aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorBo Gan <ganboing@gmail.com>2025-12-18 02:42:39 -0800
committerAnup Patel <anuppate@hu-anuppate-blr.qualcomm.com>2025-12-21 20:33:20 +0530
commited1deab09ef6284d018fbf37ab397dcd4b9f82b8 (patch)
tree1238387acc46f172f51c69493d75fe77c9490854 /lib
parent2c1bf5bb73194ca035bcd5ab3fbc6653de3162e1 (diff)
downloadopensbi-ed1deab09ef6284d018fbf37ab397dcd4b9f82b8.tar.gz
opensbi-ed1deab09ef6284d018fbf37ab397dcd4b9f82b8.tar.bz2
opensbi-ed1deab09ef6284d018fbf37ab397dcd4b9f82b8.zip
lib: sbi_domain: make is_region_subset public
The helper function is renamed as sbi_domain_memregion_is_subset, and made public in header file. Also add a convenient helper of sbi_domain_for_each_memregion_idx. Signed-off-by: Bo Gan <ganboing@gmail.com> Reviewed-by: Anup Patel <anup@brainfault.org> Link: https://lore.kernel.org/r/20251218104243.562667-4-ganboing@gmail.com Signed-off-by: Anup Patel <anup@brainfault.org>
Diffstat (limited to 'lib')
-rw-r--r--lib/sbi/sbi_domain.c23
1 files changed, 3 insertions, 20 deletions
diff --git a/lib/sbi/sbi_domain.c b/lib/sbi/sbi_domain.c
index 74cc1e3f..a19bf25b 100644
--- a/lib/sbi/sbi_domain.c
+++ b/lib/sbi/sbi_domain.c
@@ -285,29 +285,12 @@ static bool is_region_valid(const struct sbi_domain_memregion *reg)
return true;
}
-/** Check if regionA is sub-region of regionB */
-static bool is_region_subset(const struct sbi_domain_memregion *regA,
- const struct sbi_domain_memregion *regB)
-{
- ulong regA_start = regA->base;
- ulong regA_end = regA->base + (BIT(regA->order) - 1);
- ulong regB_start = regB->base;
- ulong regB_end = regB->base + (BIT(regB->order) - 1);
-
- if ((regB_start <= regA_start) &&
- (regA_start < regB_end) &&
- (regB_start < regA_end) &&
- (regA_end <= regB_end))
- return true;
-
- return false;
-}
-
/** Check if regionA can be replaced by regionB */
static bool is_region_compatible(const struct sbi_domain_memregion *regA,
const struct sbi_domain_memregion *regB)
{
- if (is_region_subset(regA, regB) && regA->flags == regB->flags)
+ if (sbi_domain_memregion_is_subset(regA, regB) &&
+ regA->flags == regB->flags)
return true;
return false;
@@ -367,7 +350,7 @@ static const struct sbi_domain_memregion *find_next_subset_region(
sbi_domain_for_each_memregion(dom, sreg) {
if (sreg == reg || (sreg->base <= addr) ||
- !is_region_subset(sreg, reg))
+ !sbi_domain_memregion_is_subset(sreg, reg))
continue;
if (!ret || (sreg->base < ret->base) ||