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-head mailing list