|
[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 |