Page MenuHomeFreeBSD

sys: Don't pass RF_ALLOCATED to bus_alloc_resource*
ClosedPublic

Authored by jhb on Mar 6 2026, 3:25 AM.
Tags
None
Referenced Files
Unknown Object (File)
Wed, Mar 25, 12:48 AM
Unknown Object (File)
Fri, Mar 20, 2:57 AM
Unknown Object (File)
Thu, Mar 19, 2:47 AM
Unknown Object (File)
Tue, Mar 17, 5:15 AM
Unknown Object (File)
Sun, Mar 15, 11:57 PM
Unknown Object (File)
Wed, Mar 11, 6:45 PM
Unknown Object (File)
Wed, Mar 11, 1:36 PM
Unknown Object (File)
Wed, Mar 11, 9:47 AM
Subscribers

Details

Summary

This is a nop as eventually these flags are passed to rman_reserve_resource
which unconditionally sets RF_ALLOCATED in the new flags for a region.
However, it's really a layering violation to use RF_ALLOCATED in relation
to struct resource objects outside of subr_rman.c as subr_rman.c uses
this flag to manage it's internal tracking of allocated vs free regions.

In addition, don't document this as a valid flag in the manual. I
think the intention here was that if a caller didn't want to pass
RF_ACTIVE or RF_SHAREABLE, they could pass RF_ALLOCATED instead of 0,
but given the layering violation, I think it's best to just pass 0
instead in that case.

NB: The bhnd bus uses RF_ALLOCATED (along with RF_ACTIVE) in a
separate API to manage resource regions that are not struct resource
objects (but a separate wrapper object). It would perhaps be cleaner
if the chipc_retain_region and chipc_release_region functions used
their own flag constants instead of reusing the rman(9) flags.

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Not Applicable
Unit
Tests Not Applicable