svn commit: r323196 - head/sys/dev/amdsmn
Conrad Meyer
cem at FreeBSD.org
Tue Sep 5 21:00:35 UTC 2017
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);
More information about the svn-src-head
mailing list