]> www.infradead.org Git - users/jedix/linux-maple.git/commit
ib/mlx4: Initialize multiple Mellanox HCAs in parallel
authorQing Huang <qing.huang@oracle.com>
Wed, 10 Aug 2016 17:14:25 +0000 (10:14 -0700)
committerSantosh Shilimkar <santosh.shilimkar@oracle.com>
Wed, 10 Aug 2016 17:24:05 +0000 (10:24 -0700)
commit36560a940f41711cb8269a6b804700439bf689de
treef44579e5e0c538fe1e5cf941f18cd37caa462a04
parentfb2345221f4a08503259d2ffaf3bf0ed5f9bfaf4
ib/mlx4: Initialize multiple Mellanox HCAs in parallel

This is a rework of UEK2 commit a8962313e121 ("OFED: Load multiple ...").
The goal of this patch to reduce the total mount of system boot/kernel
startup time when there are multiple Mellanox HCAs present in the system.
Typically each HCA/PF would require 6~7s to initialize plus extra time for
a certian number of VFs created by each PF. By default, multiple HCAs have
to be probed one by one in a serialized fasion.

The new scheme is to create a work request for current pci probe/mlx4 init
task and then return -EPROBE_DEFER immediately to the probe caller while
the system thread starts to execute the work request in the background.
The main pci probe thread doesn't have to wait for all the current probe
task to finish. The background init task's progress and return err code
will be saved by the sys worker thread and processed from the deferred
queue.

Orabug: 20995222

Signed-off-by: Qing Huang <qing.huang@oracle.com>
Reviewed-by: Santosh Shilimkar <santosh.shilimkar@oracle.com>
drivers/base/dd.c
drivers/net/ethernet/mellanox/mlx4/main.c
include/linux/device.h