On Thu, 30 Apr 2020 11:39:31 -0700 Jacob Pan <jacob.jun.pan@xxxxxxxxxxxxxxx> wrote: > > -void ioasid_free(ioasid_t ioasid) > > +bool ioasid_free(ioasid_t ioasid) > > { Sorry I missed this in the last reply. I think free needs to be unconditional since there is not a good way to fail it. Also can we have more symmetric APIs, seems we don't have ioasid_put() in this patchset. How about? ioasid_alloc() ioasid_free(); //drop reference, mark inactive, but not reclaimed if refcount is not zero. ioasid_get() // returns err if the ioasid is marked inactive by ioasid_free() ioasid_put();// drop reference, reclaim if refcount is 0. It is similar to get/put/alloc/free pids.