From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: Re: [PATCH v8 05/11] xen: grant_table: implement grant_table_warn_active_grants() Date: Fri, 10 Jul 2015 12:24:25 -0400 Message-ID: <20150710162425.GB24518@l.oracle.com> References: <1435075913-335-1-git-send-email-vkuznets@redhat.com> <1435075913-335-6-git-send-email-vkuznets@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xen.org with esmtp (Exim 4.72) (envelope-from ) id 1ZDb6Q-00082I-Sh for xen-devel@lists.xenproject.org; Fri, 10 Jul 2015 16:24:42 +0000 Content-Disposition: inline In-Reply-To: <1435075913-335-6-git-send-email-vkuznets@redhat.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Vitaly Kuznetsov Cc: Wei Liu , Andrew Jones , Keir Fraser , Ian Campbell , Stefano Stabellini , Andrew Cooper , Julien Grall , Ian Jackson , Olaf Hering , Tim Deegan , David Vrabel , Jan Beulich , xen-devel@lists.xenproject.org, Daniel De Graaf List-Id: xen-devel@lists.xenproject.org On Tue, Jun 23, 2015 at 06:11:47PM +0200, Vitaly Kuznetsov wrote: > Log first 10 active grants of a domain. This function is going to be used > for soft reset, active grants on this path usually mean misbehaving backends > refusing to release their mappings on shutdown. Is there an particular reason 10 was choosen instead of 42 for example :-) Also the 10 should probably have an #define for it. Not sure I understand the usage case - except for development uses to report on the Xen console? But if that is the case why not use the 'g' on the ring console? > > Signed-off-by: Vitaly Kuznetsov > --- > xen/common/grant_table.c | 31 +++++++++++++++++++++++++++++++ > xen/include/xen/grant_table.h | 5 +++++ > 2 files changed, 36 insertions(+) > > diff --git a/xen/common/grant_table.c b/xen/common/grant_table.c > index db5e5db..c67db28 100644 > --- a/xen/common/grant_table.c > +++ b/xen/common/grant_table.c > @@ -3309,6 +3309,37 @@ gnttab_release_mappings( > } > } > > +void grant_table_warn_active_grants(struct domain *d) > +{ > + struct grant_table *gt = d->grant_table; > + struct active_grant_entry *act; > + grant_ref_t ref; > + unsigned int nr_active = 0; > + > + read_lock(>->lock); > + > + for ( ref = 0; ref != nr_grant_entries(gt); ref++ ) > + { > + act = active_entry_acquire(gt, ref); > + if ( !act->pin ) > + { > + active_entry_release(act); > + continue; > + } > + > + nr_active++; > + if ( nr_active <= 10 ) > + printk(XENLOG_G_DEBUG "Dom%d has an active grant: GFN: %lx" > + " (MFN: %lx)\n", d->domain_id, act->gfn, act->frame); > + active_entry_release(act); > + } > + > + if ( nr_active > 10 ) > + printk(XENLOG_G_DEBUG "Dom%d has too many (%d) active grants" > + " to report\n", d->domain_id, nr_active); > + > + read_unlock(>->lock); > +} > > void > grant_table_destroy( > diff --git a/xen/include/xen/grant_table.h b/xen/include/xen/grant_table.h > index 9c7b5a3..54005cc 100644 > --- a/xen/include/xen/grant_table.h > +++ b/xen/include/xen/grant_table.h > @@ -90,6 +90,11 @@ void grant_table_destroy( > struct domain *d); > void grant_table_init_vcpu(struct vcpu *v); > > +/* > + * Check if domain has active grants and log first 10 of them. > + */ > +void grant_table_warn_active_grants(struct domain *d); > + > /* Domain death release of granted mappings of other domains' memory. */ > void > gnttab_release_mappings( > -- > 2.4.2 >