MSI-X: Minor changes
authorBarret Rhoden <brho@cs.berkeley.edu>
Wed, 2 Apr 2014 00:25:22 +0000 (17:25 -0700)
committerBarret Rhoden <brho@cs.berkeley.edu>
Wed, 2 Apr 2014 00:25:22 +0000 (17:25 -0700)
Minor changes; one bar, some printing, etc.

You'll need to call this from ioapic.c instead of the regular MSI enable.

kern/arch/x86/msi.c
kern/arch/x86/pci.h

index 05500c1..c08d9ce 100644 (file)
@@ -239,7 +239,7 @@ static int pci_msix_init(struct pci_device *p)
                return -1;
 
        /* for this to work, we need at least one free BAR. */
-       found = pci_find_unused_bars(p, bars, 2);
+       found = pci_find_unused_bars(p, bars, 1);
 
        /* we'll use one for now. */
        if (found < 1)
@@ -248,7 +248,7 @@ static int pci_msix_init(struct pci_device *p)
        f = pcidev_read16(p, c + 2);
        printd("msix control %04x\n", f);
        if (!(f & Msixenable)){
-               printd("msix not enabled; done\n");
+               printk("msix not enabled, f is 0x%x; done\n", f);
                return -1;
        }
 
index 4da5bf9..d7a440a 100644 (file)
@@ -410,6 +410,7 @@ struct pci_device *pci_match_tbdf(int tbdf);
 /* MSI functions, msi.c */
 int pci_cap(struct pci_device *p, int cap);
 int pci_msi_enable(struct pci_device *p, uint64_t vec);
+int pci_msix_enable(struct pci_device *p, uint64_t vec);
 
 /* MSI irq handler functions, msi.c */
 struct irq_handler; /* include loops */