svn commit: r298708 - in head/sys: dev/cardbus dev/pci mips/nlm powerpc/ofw sparc64/pci
John Baldwin
jhb at freebsd.org
Wed Apr 27 17:23:58 UTC 2016
On Wednesday, April 27, 2016 04:31:12 PM John Baldwin wrote:
> Author: jhb
> Date: Wed Apr 27 16:31:12 2016
> New Revision: 298708
> URL: https://svnweb.freebsd.org/changeset/base/298708
>
> Log:
> Implement a PCI bus rescan method.
>
> Rescanning a PCI bus uses the following steps:
> - Fetch the current set of child devices and save it in the 'devlist'
> array.
> - Allocate a parallel array 'unchanged' initalized with NULL pointers.
> - Scan the bus checking each slot (and each function on slots with a
> multifunction device).
> - If a valid function is found, look for a matching device in the 'devlist'
> array. If a device is found, save the pointer in the 'unchanged' array.
> If a device is not found, add a new device.
> - After the scan has finished, walk the 'devlist' array deleting any
> devices that do not have a matching pointer in the 'unchanged' array.
> - Finally, fetch an updated set of child devices and explicitly attach any
> devices that are not present in the 'unchanged' array.
>
> This builds on the previous changes to move subclass data management into
> pci_alloc_devinfo(), pci_child_added(), and bus_child_deleted().
>
> Subclasses of the PCI bus use custom rescan logic explicitly override the
> rescan method to disable rescans.
>
> Differential Revision: https://reviews.freebsd.org/D6018
Argh, I thought for certain I had done a tinderbox build, but using
kobj_error_method breaks the build. I will test a fix that adds a
null_rescan method instead and commit it shortly.
--
John Baldwin
More information about the svn-src-all
mailing list