diff options
| author | Bo Gan <ganboing@gmail.com> | 2025-12-18 02:42:39 -0800 |
|---|---|---|
| committer | Anup Patel <anuppate@hu-anuppate-blr.qualcomm.com> | 2025-12-21 20:33:20 +0530 |
| commit | ed1deab09ef6284d018fbf37ab397dcd4b9f82b8 (patch) | |
| tree | 1238387acc46f172f51c69493d75fe77c9490854 /lib | |
| parent | 2c1bf5bb73194ca035bcd5ab3fbc6653de3162e1 (diff) | |
| download | opensbi-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.c | 23 |
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) || |
