On Mon, Jan 21, 2019 at 01:59:48AM -0800, Christopher Clark wrote: > Takes a single argument: a handle to the ring unregistration struct, > which specifies the port and partner domain id or wildcard. > > The ring's entry is removed from the hashtable of registered rings; > any entries for pending notifications are removed; and the ring is > unmapped from Xen's address space. > > If the ring had been registered to communicate with a single specified > domain (ie. a non-wildcard ring) then the partner domain state is removed > from the partner domain's argo send_info hash table. > > Signed-off-by: Christopher Clark <christopher.cla...@baesystems.com>
LGTM: Reviewed-by: Roger Pau Monné <roger....@citrix.com> Just one nit about the open-coded list_for_each. > diff --git a/xen/common/argo.c b/xen/common/argo.c > index a7ec0e0..e4cd446 100644 > --- a/xen/common/argo.c > +++ b/xen/common/argo.c > @@ -43,6 +43,7 @@ DEFINE_XEN_GUEST_HANDLE(xen_argo_addr_t); > DEFINE_XEN_GUEST_HANDLE(xen_argo_gfn_t); > DEFINE_XEN_GUEST_HANDLE(xen_argo_register_ring_t); > DEFINE_XEN_GUEST_HANDLE(xen_argo_ring_t); > +DEFINE_XEN_GUEST_HANDLE(xen_argo_unregister_ring_t); > > static bool __read_mostly opt_argo; > static bool __read_mostly opt_argo_mac_permissive; > @@ -351,6 +352,37 @@ find_ring_info(const struct domain *d, const struct > argo_ring_id *id) > return NULL; > } > > +static struct argo_send_info * > +find_send_info(const struct domain *d, const struct argo_ring_id *id) > +{ > + struct list_head *cursor, *bucket; > + > + ASSERT(LOCKING_send_L2(d)); > + > + /* List is not modified here. Search and return the match if found. */ > + bucket = &d->argo->send_hash[hash_index(id)]; > + > + for ( cursor = bucket->next; cursor != bucket; cursor = cursor->next ) list_for_each Thanks, Roger. _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel