mirror of
https://github.com/FEX-Emu/linux.git
synced 2025-01-01 14:52:32 +00:00
IB/mlx4: Create paravirt contexts for VFs when master IB driver initializes
When we have VFs and PFs on same host, the VFs are activated within the mlx4_core module before the mlx4_ib kernel module is loaded. When the mlx4_ib module initializes the PF (master), it now creates MAD paravirtualization contexts for any VFs that already active. Signed-off-by: Jack Morgenstein <jackm@dev.mellanox.co.il> Signed-off-by: Roland Dreier <roland@purestorage.com>
This commit is contained in:
parent
47605df953
commit
3806d08cf6
@ -1652,6 +1652,9 @@ static int create_pv_resources(struct ib_device *ibdev, int slave, int port,
|
|||||||
{
|
{
|
||||||
int ret, cq_size;
|
int ret, cq_size;
|
||||||
|
|
||||||
|
if (ctx->state != DEMUX_PV_STATE_DOWN)
|
||||||
|
return -EEXIST;
|
||||||
|
|
||||||
ctx->state = DEMUX_PV_STATE_STARTING;
|
ctx->state = DEMUX_PV_STATE_STARTING;
|
||||||
/* have QP0 only on port owner, and only if link layer is IB */
|
/* have QP0 only on port owner, and only if link layer is IB */
|
||||||
if (ctx->slave == mlx4_master_func_num(to_mdev(ctx->ib_dev)->dev) &&
|
if (ctx->slave == mlx4_master_func_num(to_mdev(ctx->ib_dev)->dev) &&
|
||||||
|
@ -74,6 +74,8 @@ struct update_gid_work {
|
|||||||
int port;
|
int port;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static void do_slave_init(struct mlx4_ib_dev *ibdev, int slave, int do_init);
|
||||||
|
|
||||||
static struct workqueue_struct *wq;
|
static struct workqueue_struct *wq;
|
||||||
|
|
||||||
static void init_query_mad(struct ib_smp *mad)
|
static void init_query_mad(struct ib_smp *mad)
|
||||||
@ -1470,6 +1472,15 @@ static void *mlx4_ib_add(struct mlx4_dev *dev)
|
|||||||
if (mlx4_is_mfunc(ibdev->dev))
|
if (mlx4_is_mfunc(ibdev->dev))
|
||||||
init_pkeys(ibdev);
|
init_pkeys(ibdev);
|
||||||
|
|
||||||
|
/* create paravirt contexts for any VFs which are active */
|
||||||
|
if (mlx4_is_master(ibdev->dev)) {
|
||||||
|
for (j = 0; j < MLX4_MFUNC_MAX; j++) {
|
||||||
|
if (j == mlx4_master_func_num(ibdev->dev))
|
||||||
|
continue;
|
||||||
|
if (mlx4_is_slave_active(ibdev->dev, j))
|
||||||
|
do_slave_init(ibdev, j, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
return ibdev;
|
return ibdev;
|
||||||
|
|
||||||
err_notif:
|
err_notif:
|
||||||
|
Loading…
Reference in New Issue
Block a user