Author: manu
Date: Fri May 17 17:04:01 2019
New Revision: 347929
URL: https://svnweb.freebsd.org/changeset/base/347929

Log:
  pci: ecam: Do not warn on mismatch of bus_end
  
  We cannot know the bus end number before parsing the MCFG table
  so don't set the bus_end before that. If the MCFG table doesn't
  exist we will set the configuration base address based on the _CBA
  value and set the bus_end to the maximal number allowed by PCI.
  
  Sponsored by: Ampere Computing, LLC
  
  Differential Revision:        https://reviews.freebsd.org/D20213

Modified:
  head/sys/dev/pci/pci_host_generic_acpi.c

Modified: head/sys/dev/pci/pci_host_generic_acpi.c
==============================================================================
--- head/sys/dev/pci/pci_host_generic_acpi.c    Fri May 17 16:41:18 2019        
(r347928)
+++ head/sys/dev/pci/pci_host_generic_acpi.c    Fri May 17 17:04:01 2019        
(r347929)
@@ -207,11 +207,7 @@ pci_host_acpi_get_ecam_resource(device_t dev)
                                mcfg_entry++;
                }
                if (found) {
-                       if (mcfg_entry->EndBusNumber < sc->base.bus_end) {
-                               device_printf(dev, "bus end mismatch! expected 
%d found %d.\n",
-                                   sc->base.bus_end, 
(int)mcfg_entry->EndBusNumber);
-                               sc->base.bus_end = mcfg_entry->EndBusNumber;
-                       }
+                       sc->base.bus_end = mcfg_entry->EndBusNumber;
                        base = mcfg_entry->Address;
                } else {
                        device_printf(dev, "MCFG exists, but does not have bus 
%d-%d\n",
@@ -220,9 +216,10 @@ pci_host_acpi_get_ecam_resource(device_t dev)
                }
        } else {
                status = acpi_GetInteger(handle, "_CBA", &val);
-               if (ACPI_SUCCESS(status))
+               if (ACPI_SUCCESS(status)) {
                        base = val;
-               else
+                       sc->base.bus_end = 255;
+               } else
                        return (ENXIO);
        }
 
@@ -259,7 +256,6 @@ pci_host_generic_acpi_attach(device_t dev)
                device_printf(dev, "No _BBN, using start bus 0\n");
                sc->base.bus_start = 0;
        }
-       sc->base.bus_end = 255;
 
        /* Get PCI Segment (domain) needed for MCFG lookup */
        status = acpi_GetInteger(handle, "_SEG", &sc->base.ecam);
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to