Since rev 1.1 ix has attempted to require a 64 bit BAR, the test for
authorjsg <jsg@openbsd.org>
Mon, 24 Apr 2017 13:20:46 +0000 (13:20 +0000)
committerjsg <jsg@openbsd.org>
Mon, 24 Apr 2017 13:20:46 +0000 (13:20 +0000)
this was wrong and was corrected at the end of last year in rev 1.140.
Before then a 64 bit BAR was not enforced as the test was wrong.

It turns out there exist 82598 parts which have a 32 bit BAR so change
the test to only require a memory BAR and not a 64 bit memory BAR.

Problem reported by Robert Blacquiere. ok mikeb@

sys/dev/pci/if_ix.c

index b24326f..b46163e 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: if_ix.c,v 1.150 2017/01/24 03:57:35 dlg Exp $ */
+/*     $OpenBSD: if_ix.c,v 1.151 2017/04/24 13:20:46 jsg Exp $ */
 
 /******************************************************************************
 
@@ -1550,8 +1550,7 @@ ixgbe_allocate_pci_resources(struct ix_softc *sc)
        int                      val;
 
        val = pci_conf_read(pa->pa_pc, pa->pa_tag, PCIR_BAR(0));
-       if (PCI_MAPREG_TYPE(val) != PCI_MAPREG_TYPE_MEM ||
-           PCI_MAPREG_MEM_TYPE(val) != PCI_MAPREG_MEM_TYPE_64BIT) {
+       if (PCI_MAPREG_TYPE(val) != PCI_MAPREG_TYPE_MEM) {
                printf(": mmba is not mem space\n");
                return (ENXIO);
        }