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)
Sat, Jun 20, 12:22 PM
Unknown Object (File)
Thu, Jun 18, 8:05 AM
Unknown Object (File)
Fri, Jun 12, 6:01 AM
Unknown Object (File)
Sun, Jun 7, 5:06 AM
Unknown Object (File)
Sat, Jun 6, 12:48 PM
Unknown Object (File)
Fri, Jun 5, 9:16 PM
Unknown Object (File)
Wed, Jun 3, 6:15 PM
Unknown Object (File)
Mon, Jun 1, 4:04 PM
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