diff options
author | Jan Beulich <jbeulich@suse.com> | 2012-11-22 10:02:18 +0100 |
---|---|---|
committer | Jan Beulich <jbeulich@suse.com> | 2012-11-22 10:02:18 +0100 |
commit | c7675f1e2be92c91f2f9ce66862f48109c32c4f0 (patch) | |
tree | 15f6f2be77b72e71fa36140f68131b1957961c99 /xen/arch/x86/msi.c | |
parent | e9efd5b82e7cbe8c0165d766ad0c7a31fb07f9a6 (diff) | |
download | xen-c7675f1e2be92c91f2f9ce66862f48109c32c4f0.tar.gz xen-c7675f1e2be92c91f2f9ce66862f48109c32c4f0.tar.bz2 xen-c7675f1e2be92c91f2f9ce66862f48109c32c4f0.zip |
x86/HPET: include FSB interrupt information in 'M' debug key output
Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Keir Fraser <keir@xen.org>
Diffstat (limited to 'xen/arch/x86/msi.c')
-rw-r--r-- | xen/arch/x86/msi.c | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/xen/arch/x86/msi.c b/xen/arch/x86/msi.c index e48ad2ec60..62ed290b29 100644 --- a/xen/arch/x86/msi.c +++ b/xen/arch/x86/msi.c @@ -1119,17 +1119,17 @@ static void dump_msi(unsigned char key) { unsigned int irq; - printk("PCI-MSI interrupt information:\n"); + printk("MSI information:\n"); for ( irq = 0; irq < nr_irqs; irq++ ) { struct irq_desc *desc = irq_to_desc(irq); const struct msi_desc *entry; u32 addr, data, dest32; - int mask; + char mask; struct msi_attrib attr; unsigned long flags; - char type; + const char *type = "???"; if ( !irq_desc_initialized(desc) ) continue; @@ -1145,21 +1145,30 @@ static void dump_msi(unsigned char key) switch ( entry->msi_attrib.type ) { - case PCI_CAP_ID_MSI: type = ' '; break; - case PCI_CAP_ID_MSIX: type = 'X'; break; - default: type = '?'; break; + case PCI_CAP_ID_MSI: type = "MSI"; break; + case PCI_CAP_ID_MSIX: type = "MSI-X"; break; + case 0: + switch ( entry->msi_attrib.pos ) + { + case MSI_TYPE_HPET: type = "HPET"; break; + case MSI_TYPE_IOMMU: type = "IOMMU"; break; + } + break; } data = entry->msg.data; addr = entry->msg.address_lo; dest32 = entry->msg.dest32; attr = entry->msi_attrib; - mask = msi_get_mask_bit(entry); + if ( entry->msi_attrib.type ) + mask = msi_get_mask_bit(entry) ? '1' : '0'; + else + mask = '?'; spin_unlock_irqrestore(&desc->lock, flags); - printk(" MSI%c %4u vec=%02x%7s%6s%3sassert%5s%7s" - " dest=%08x mask=%d/%d/%d\n", + printk(" %-6s%4u vec=%02x%7s%6s%3sassert%5s%7s" + " dest=%08x mask=%d/%d/%c\n", type, irq, (data & MSI_DATA_VECTOR_MASK) >> MSI_DATA_VECTOR_SHIFT, data & MSI_DATA_DELIVERY_LOWPRI ? "lowest" : "fixed", |