bus: Allow subclass to have the same name as the parent class.
authorSepherosa Ziehau <sephe@dragonflybsd.org>
Thu, 7 Apr 2011 10:06:03 +0000 (18:06 +0800)
committerSepherosa Ziehau <sephe@dragonflybsd.org>
Thu, 7 Apr 2011 10:27:13 +0000 (18:27 +0800)
commitf4440850c0534454cce73def122ae587c15c9006
tree34736cf15b0c440c873d0613ee27a0a40a830451
parentf070647cc5317c4924be4dd60563fc39c18094cf
bus: Allow subclass to have the same name as the parent class.

Obtained-from: FreeBSD (Revision 154598 by jhb@freebsd.org)

  When loading a driver that is a subclass of another driver don't set the
  devclass's parent pointer if the two drivers share the same devclass.  This
  can happen if the drivers use the same new-bus name.  For example, we
  currently have 3 drivers that use the name "pci": the generic PCI bus
  driver, the ACPI PCI bus driver, and the OpenFirmware PCI bus driver.  If
  the ACPI PCI bus driver was defined as a subclass of the generic PCI bus
  driver, then without this check the "pci" devclass would point to itself
  as its parent and device_probe_child() would spin forever when it
  encountered the first PCI device that did have a matching driver.
sys/kern/subr_bus.c