The branch main has been updated by imp:

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

commit 037946dc9b07f7e0085e71798f5b397c5d9597db
Author:     Elliott Mitchell <[email protected]>
AuthorDate: 2024-05-09 04:55:28 +0000
Commit:     Warner Losh <[email protected]>
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);

Reply via email to