PCI/MSI: debug helper
authorBarret Rhoden <brho@cs.berkeley.edu>
Mon, 23 Feb 2015 14:46:19 +0000 (09:46 -0500)
committerBarret Rhoden <brho@cs.berkeley.edu>
Sun, 1 Mar 2015 14:36:00 +0000 (09:36 -0500)
Dumps the device's MSIX table.

kern/arch/x86/msi.c

index df3a08b..fd348dc 100644 (file)
@@ -360,6 +360,18 @@ struct msix_irq_vector *pci_msix_enable(struct pci_device *p, uint64_t vec)
        return linkage;
 }
 
+void pci_dump_msix_table(struct pci_device *p)
+{
+       struct msix_entry *entry;
+       void *tbl = (void*)p->msix_tbl_vaddr;
+
+       hexdump(tbl, p->msix_nr_vec * sizeof(struct msix_entry));
+       entry = (struct msix_entry*)p->msix_tbl_vaddr;
+       for (int i = 0; i < p->msix_nr_vec; i++, entry++)
+               printk("Entry %d, addr hi:lo 0x%08x:%08x data 0x%08x\n", i,
+                      entry->addr_hi, entry->addr_lo, entry->data);
+}
+
 void pci_msi_mask(struct pci_device *p)
 {
        unsigned int c, f;