git: 037946dc9b07 - main - kern/rman: remove rman_reserve_resource_bound(), partially revert 13fb6657723

From: Warner Losh <imp_at_FreeBSD.org>
Date: Tue, 21 May 2024 23:56:22 UTC
The branch main has been updated by imp:

URL: https://cgit.FreeBSD.org/src/commit/?id=037946dc9b07f7e0085e71798f5b397c5d9597db

commit 037946dc9b07f7e0085e71798f5b397c5d9597db
Author:     Elliott Mitchell <ehem+freebsd@m5p.com>
AuthorDate: 2024-05-09 04:55:28 +0000
Commit:     Warner Losh <imp@FreeBSD.org>
CommitDate: 2024-05-21 23:52:24 +0000

    kern/rman: remove rman_reserve_resource_bound(), partially revert 13fb6657723
    
    Not once has rman_reserve_resource_bound() ever been used.  There are
    though several uses of RF_ALIGNMENT.  In light of this remove this
    extra and leave the actually used portion in place.
    
    This partially reverts commit 13fb6657723c1e9cb47bbd286942b432a4306b96.
    
    Reviewed by: imp,jhb
    Pull Request: https://github.com/freebsd/freebsd-src/pull/1224
---
 share/man/man9/rman.9 | 35 +++++++++--------------------------
 sys/kern/subr_rman.c  | 23 ++++-------------------
 sys/sys/rman.h        |  3 ---
 3 files changed, 13 insertions(+), 48 deletions(-)

diff --git a/share/man/man9/rman.9 b/share/man/man9/rman.9
index 35a2d176233c..d175b60b4010 100644
--- a/share/man/man9/rman.9
+++ b/share/man/man9/rman.9
@@ -40,7 +40,6 @@
 .Nm rman_last_free_region ,
 .Nm rman_release_resource ,
 .Nm rman_reserve_resource ,
-.Nm rman_reserve_resource_bound ,
 .Nm rman_make_alignment_flags ,
 .Nm rman_get_start ,
 .Nm rman_get_end ,
@@ -90,11 +89,6 @@
 .Fa "struct rman *rm" "rman_res_t start" "rman_res_t end" "rman_res_t count"
 .Fa "u_int flags" "device_t dev"
 .Fc
-.Ft "struct resource *"
-.Fo rman_reserve_resource_bound
-.Fa "struct rman *rm" "rman_res_t start" "rman_res_t end" "rman_res_t count"
-.Fa "rman_res_t bound" "u_int flags" "device_t dev"
-.Fc
 .Ft uint32_t
 .Fn rman_make_alignment_flags "uint32_t size"
 .Ft rman_res_t
@@ -266,7 +260,7 @@ and
 are set to the bounds of the free region and zero is returned.
 .Pp
 The
-.Fn rman_reserve_resource_bound
+.Fn rman_reserve_resource
 function is where the bulk of the
 .Nm
 logic is located.
@@ -279,7 +273,7 @@ The caller can specify the
 and
 .Fa end
 of an acceptable range,
-as well as a boundary restriction and required alignment,
+required alignment,
 and the code will attempt to find a free segment which fits.
 The
 .Fa start
@@ -296,15 +290,13 @@ The alignment requirement
 .Pq if any
 is specified in
 .Fa flags .
-The
-.Fa bound
-argument may be set to specify a boundary restriction such that an
-allocated region may cross an address that is a multiple of the
-boundary.
-The
-.Fa bound
-argument must be a power of two.
-It may be set to zero to specify no boundary restriction.
+Often the
+.Dv RF_ALIGNMENT_LOG2
+macro is used to specify alignment to a power-of-2 size, or
+.Fn rman_make_alignment_flags
+can be used to compute the
+.Fa flags
+value at runtime.
 A shared segment will be allocated if the
 .Dv RF_SHAREABLE
 flag is set, otherwise an exclusive segment will be allocated.
@@ -312,15 +304,6 @@ If this shared segment already exists, the caller has its device
 added to the list of consumers.
 .Pp
 The
-.Fn rman_reserve_resource
-function is used to reserve resources within a previously established region.
-It is a simplified interface to
-.Fn rman_reserve_resource_bound
-which passes 0 for the
-.Fa bound
-argument.
-.Pp
-The
 .Fn rman_make_alignment_flags
 function returns the flag mask corresponding to the desired alignment
 .Fa size .
diff --git a/sys/kern/subr_rman.c b/sys/kern/subr_rman.c
index d4da67b2f16f..2019e19090c0 100644
--- a/sys/kern/subr_rman.c
+++ b/sys/kern/subr_rman.c
@@ -429,13 +429,12 @@ rman_adjust_resource(struct resource *rr, rman_res_t start, rman_res_t end)
 #define	SHARE_TYPE(f)	(f & (RF_SHAREABLE | RF_PREFETCHABLE))
 
 struct resource *
-rman_reserve_resource_bound(struct rman *rm, rman_res_t start, rman_res_t end,
-			    rman_res_t count, rman_res_t bound, u_int flags,
-			    device_t dev)
+rman_reserve_resource(struct rman *rm, rman_res_t start, rman_res_t end,
+			    rman_res_t count, u_int flags, device_t dev)
 {
 	u_int new_rflags;
 	struct resource_i *r, *s, *rv;
-	rman_res_t rstart, rend, amask, bmask;
+	rman_res_t rstart, rend, amask;
 
 	rv = NULL;
 
@@ -472,8 +471,6 @@ rman_reserve_resource_bound(struct rman *rm, rman_res_t start, rman_res_t end,
 	KASSERT(start <= RM_MAX_END - amask,
 	    ("start (%#jx) + amask (%#jx) would wrap around", start, amask));
 
-	/* If bound is 0, bmask will also be 0 */
-	bmask = ~(bound - 1);
 	/*
 	 * First try to find an acceptable totally-unshared region.
 	 */
@@ -505,8 +502,6 @@ rman_reserve_resource_bound(struct rman *rm, rman_res_t start, rman_res_t end,
 		 */
 		do {
 			rstart = (rstart + amask) & ~amask;
-			if (((rstart ^ (rstart + count - 1)) & bmask) != 0)
-				rstart += bound - (rstart & ~bmask);
 		} while ((rstart & amask) != 0 && rstart < end &&
 		    rstart < s->r_end);
 		rend = ummin(s->r_end, ummax(rstart + count - 1, end));
@@ -607,8 +602,7 @@ rman_reserve_resource_bound(struct rman *rm, rman_res_t start, rman_res_t end,
 		if (SHARE_TYPE(s->r_flags) == SHARE_TYPE(flags) &&
 		    s->r_start >= start &&
 		    (s->r_end - s->r_start + 1) == count &&
-		    (s->r_start & amask) == 0 &&
-		    ((s->r_start ^ s->r_end) & bmask) == 0) {
+		    (s->r_start & amask) == 0) {
 			rv = int_alloc_resource(M_NOWAIT);
 			if (rv == NULL)
 				goto out;
@@ -644,15 +638,6 @@ out:
 	return (rv == NULL ? NULL : &rv->r_r);
 }
 
-struct resource *
-rman_reserve_resource(struct rman *rm, rman_res_t start, rman_res_t end,
-		      rman_res_t count, u_int flags, device_t dev)
-{
-
-	return (rman_reserve_resource_bound(rm, start, end, count, 0, flags,
-	    dev));
-}
-
 int
 rman_activate_resource(struct resource *re)
 {
diff --git a/sys/sys/rman.h b/sys/sys/rman.h
index b8b2016cc94a..70655339183b 100644
--- a/sys/sys/rman.h
+++ b/sys/sys/rman.h
@@ -148,9 +148,6 @@ int	rman_release_resource(struct resource *r);
 struct resource *rman_reserve_resource(struct rman *rm, rman_res_t start,
 					rman_res_t end, rman_res_t count,
 					u_int flags, device_t dev);
-struct resource *rman_reserve_resource_bound(struct rman *rm, rman_res_t start,
-					rman_res_t end, rman_res_t count, rman_res_t bound,
-					u_int flags, device_t dev);
 void	rman_set_bushandle(struct resource *_r, bus_space_handle_t _h);
 void	rman_set_bustag(struct resource *_r, bus_space_tag_t _t);
 void	rman_set_device(struct resource *_r, device_t _dev);