Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=a122d6230e8d8ac7cffdf0bc9cc4b256b928fe49
Commit:     a122d6230e8d8ac7cffdf0bc9cc4b256b928fe49
Parent:     e3d2697669abbe26c08dc9b95e2a71c634d096ed
Author:     Jeremy Fitzhardinge <[EMAIL PROTECTED]>
AuthorDate: Tue Oct 16 11:51:31 2007 -0700
Committer:  Jeremy Fitzhardinge <[EMAIL PROTECTED]>
CommitDate: Tue Oct 16 11:51:31 2007 -0700

    xen: add some debug output for failed multicalls
    
    Multicalls are expected to never fail, and the normal response to a
    failed multicall is very terse.  In the interests of better
    debuggability, add some more verbose output.  It may be worth turning
    this off once it all seems more tested.
    
    Signed-off-by: Jeremy Fitzhardinge <[EMAIL PROTECTED]>
---
 arch/x86/xen/multicalls.c |   25 +++++++++++++++++++++++++
 1 files changed, 25 insertions(+), 0 deletions(-)

diff --git a/arch/x86/xen/multicalls.c b/arch/x86/xen/multicalls.c
index ce9c4b4..5e6f36f 100644
--- a/arch/x86/xen/multicalls.c
+++ b/arch/x86/xen/multicalls.c
@@ -26,11 +26,16 @@
 
 #include "multicalls.h"
 
+#define MC_DEBUG       1
+
 #define MC_BATCH       32
 #define MC_ARGS                (MC_BATCH * 16 / sizeof(u64))
 
 struct mc_buffer {
        struct multicall_entry entries[MC_BATCH];
+#if MC_DEBUG
+       struct multicall_entry debug[MC_BATCH];
+#endif
        u64 args[MC_ARGS];
        struct callback {
                void (*fn)(void *);
@@ -56,11 +61,31 @@ void xen_mc_flush(void)
        local_irq_save(flags);
 
        if (b->mcidx) {
+#if MC_DEBUG
+               memcpy(b->debug, b->entries,
+                      b->mcidx * sizeof(struct multicall_entry));
+#endif
+
                if (HYPERVISOR_multicall(b->entries, b->mcidx) != 0)
                        BUG();
                for (i = 0; i < b->mcidx; i++)
                        if (b->entries[i].result < 0)
                                ret++;
+
+#if MC_DEBUG
+               if (ret) {
+                       printk(KERN_ERR "%d multicall(s) failed: cpu %d\n",
+                              ret, smp_processor_id());
+                       for(i = 0; i < b->mcidx; i++) {
+                               printk("  call %2d/%d: op=%lu arg=[%lx] 
result=%ld\n",
+                                      i+1, b->mcidx,
+                                      b->debug[i].op,
+                                      b->debug[i].args[0],
+                                      b->entries[i].result);
+                       }
+               }
+#endif
+
                b->mcidx = 0;
                b->argidx = 0;
        } else
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to