Author: cem
Date: Tue Sep  5 21:00:33 2017
New Revision: 323196
URL: https://svnweb.freebsd.org/changeset/base/323196

Log:
  amdsmn(4): Do not probe not matching hostbridges
  
  Similar to r323195, but for amdsmn(4) driver (which borrowed some design).
  
  Ignore hostbs that do not match our PCI device id criteria.
  
  Sponsored by: Dell EMC Isilon

Modified:
  head/sys/dev/amdsmn/amdsmn.c

Modified: head/sys/dev/amdsmn/amdsmn.c
==============================================================================
--- head/sys/dev/amdsmn/amdsmn.c        Tue Sep  5 20:35:25 2017        
(r323195)
+++ head/sys/dev/amdsmn/amdsmn.c        Tue Sep  5 21:00:33 2017        
(r323196)
@@ -90,24 +90,29 @@ static devclass_t amdsmn_devclass;
 DRIVER_MODULE(amdsmn, hostb, amdsmn_driver, amdsmn_devclass, NULL, NULL);
 MODULE_VERSION(amdsmn, 1);
 
-static void
-amdsmn_identify(driver_t *driver, device_t parent)
+static bool
+amdsmn_match(device_t parent)
 {
-       device_t child;
        uint32_t devid;
        size_t i;
 
-       /* Make sure we're not being doubly invoked. */
-       if (device_find_child(parent, "amdsmn", -1) != NULL)
-               return;
-
        devid = pci_get_devid(parent);
        for (i = 0; i < nitems(amdsmn_ids); i++)
                if (amdsmn_ids[i].device_id == devid)
-                       break;
+                       return (true);
+       return (false);
+}
 
-       if (i >= nitems(amdsmn_ids))
+static void
+amdsmn_identify(driver_t *driver, device_t parent)
+{
+       device_t child;
+
+       /* Make sure we're not being doubly invoked. */
+       if (device_find_child(parent, "amdsmn", -1) != NULL)
                return;
+       if (!amdsmn_match(parent))
+               return;
 
        child = device_add_child(parent, "amdsmn", -1);
        if (child == NULL)
@@ -120,6 +125,8 @@ amdsmn_probe(device_t dev)
        uint32_t family;
 
        if (resource_disabled("amdsmn", 0))
+               return (ENXIO);
+       if (!amdsmn_match(device_get_parent(dev)))
                return (ENXIO);
 
        family = CPUID_TO_FAMILY(cpu_id);
_______________________________________________
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