On 1/3/2018 1:59 PM, Saeed Mahameed wrote:
On 12/31/2017 3:37 AM, Sagi Grimberg wrote:
So things are broken in Linus's tree?
I wasn't aware that this landed in Linus tree.
CC'ing DaveM.
Usually reverting is the safe thing to do, we should just be now back at the state the code was in before the patch, or has something else changed here?
The patch title is misleading, its not a revert, but rather a partial unwind of code addition. The breakage lives on the RDMA interface of
Hi Sagi,
The commit message perfectly states that this revert is slightly modified to keep compilation work, it is not partial.
the driver (which has interfaces to net and infiniband) as some RDMA kernel consumers are relying on the affinity assignments done when passing PCI_IRQ_AFFINITY to pci_alloc_irq_vectors(). The fix is pretty simple, but as said, wasn't submitted yet.
I assume that this went in because the review came a after dave took it.
We had two options here
- revert the whole series that introduced the vector affinity
infrastructure for RDMA. 2. revert only mlx5 core patch "mlx5: move affinity hints assignments to generic code" with a little change to make it compile with the RDMA infrastructure.
I believe the required fix on top of this revert is to remove the RDMA get_vector_affinity callback from mlx5_ib ib_dev structurem, see below.
I can send it, All i need to know is to where ? It should go through rdma-rc tree, if there is such thing ?
diff --git a/drivers/infiniband/hw/mlx5/main.c b/drivers/infiniband/hw/mlx5/main.c index 5d6fba986fa5..ddd0b881a4be 100644 --- a/drivers/infiniband/hw/mlx5/main.c +++ b/drivers/infiniband/hw/mlx5/main.c @@ -4256,14 +4256,6 @@ static void init_delay_drop(struct mlx5_ib_dev *dev) mlx5_ib_warn(dev, "Failed to init delay drop debugfs\n"); }
-static const struct cpumask * -mlx5_ib_get_vector_affinity(struct ib_device *ibdev, int comp_vector) -{ - struct mlx5_ib_dev *dev = to_mdev(ibdev);
- return mlx5_get_vector_affinity(dev->mdev, comp_vector); -}
Oh, I just remembered that I had suggested to use cpumask_first(mdev->priv.irq_info[vector].mask); instead of the current broken implementation in mlx5, I see that you agreed to test it in another email thread.
I will send a patch very soon, but someone has to test it ASAP so we don't miss 4.15.
/* The mlx5_ib_multiport_mutex should be held when calling this function */ static void mlx5_ib_unbind_slave_port(struct mlx5_ib_dev *ibdev, struct mlx5_ib_multiport_info *mpi) @@ -4632,7 +4624,6 @@ static int mlx5_ib_stage_caps_init(struct mlx5_ib_dev *dev) dev->ib_dev.check_mr_status = mlx5_ib_check_mr_status; dev->ib_dev.get_port_immutable = mlx5_port_immutable; dev->ib_dev.get_dev_fw_str = get_dev_fw_str; - dev->ib_dev.get_vector_affinity = mlx5_ib_get_vector_affinity; if (MLX5_CAP_GEN(mdev, ipoib_enhanced_offloads)) dev->ib_dev.alloc_rdma_netdev = mlx5_ib_alloc_rdma_netdev;