mirror of
https://github.com/freebsd/freebsd-src
synced 2024-07-09 04:36:31 +00:00
kern/rman: remove rman_reserve_resource_bound(), partially revert 13fb665772
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 13fb665772
.
Reviewed by: imp,jhb
Pull Request: https://github.com/freebsd/freebsd-src/pull/1224
This commit is contained in:
parent
beb1165a01
commit
037946dc9b
|
@ -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 .
|
||||
|
|
|
@ -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 @@ rman_reserve_resource_bound(struct rman *rm, rman_res_t start, rman_res_t end,
|
|||
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)
|
||||
{
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue
Block a user