[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v8 05/11] xen: grant_table: implement grant_table_warn_active_grants()
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. Signed-off-by: Vitaly Kuznetsov <vkuznets@xxxxxxxxxx> --- 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 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |