busdma tags may have an attached "bounce zone" which manages bounce page
allocations. However, it does not get cleaned up when the owning busdma
tag is destroyed. Fix the leak:
- Add a destroy_bounce_zone() implementation and modify MD busdma code to use it.
- Make sure that bounce_zone_list accesses are locked by the bounce mutex, previously there was no explicit serialization (though the bus_topo lock probably made this relatively safe).
- Add refcounting to bounce zones so that busdma tags can safely share them.
PR: 278569
MFC after: 1 month