From ed1deab09ef6284d018fbf37ab397dcd4b9f82b8 Mon Sep 17 00:00:00 2001 From: Bo Gan Date: Thu, 18 Dec 2025 02:42:39 -0800 Subject: 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 Reviewed-by: Anup Patel Link: https://lore.kernel.org/r/20251218104243.562667-4-ganboing@gmail.com Signed-off-by: Anup Patel --- lib/sbi/sbi_domain.c | 23 +++-------------------- 1 file changed, 3 insertions(+), 20 deletions(-) (limited to 'lib') 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) || -- cgit v1.2.3