mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-26 10:20:51 +07:00
mlx4_core: Don't set MTT address in dMPT entries with PA set
If a dMPT entry has the PA flag (direct physical address) set, then the (unused) MTT base address field has to be set to 0. Signed-off-by: Jack Morgenstein <jackm@dev.mellanox.co.il> Signed-off-by: Roland Dreier <rolandd@cisco.com>
This commit is contained in:
parent
fe40900f40
commit
b2d9308ae4
@ -324,15 +324,17 @@ int mlx4_mr_enable(struct mlx4_dev *dev, struct mlx4_mr *mr)
|
|||||||
MLX4_MPT_FLAG_MIO |
|
MLX4_MPT_FLAG_MIO |
|
||||||
MLX4_MPT_FLAG_REGION |
|
MLX4_MPT_FLAG_REGION |
|
||||||
mr->access);
|
mr->access);
|
||||||
if (mr->mtt.order < 0)
|
|
||||||
mpt_entry->flags |= cpu_to_be32(MLX4_MPT_FLAG_PHYSICAL);
|
|
||||||
|
|
||||||
mpt_entry->key = cpu_to_be32(key_to_hw_index(mr->key));
|
mpt_entry->key = cpu_to_be32(key_to_hw_index(mr->key));
|
||||||
mpt_entry->pd = cpu_to_be32(mr->pd);
|
mpt_entry->pd = cpu_to_be32(mr->pd);
|
||||||
mpt_entry->start = cpu_to_be64(mr->iova);
|
mpt_entry->start = cpu_to_be64(mr->iova);
|
||||||
mpt_entry->length = cpu_to_be64(mr->size);
|
mpt_entry->length = cpu_to_be64(mr->size);
|
||||||
mpt_entry->entity_size = cpu_to_be32(mr->mtt.page_shift);
|
mpt_entry->entity_size = cpu_to_be32(mr->mtt.page_shift);
|
||||||
mpt_entry->mtt_seg = cpu_to_be64(mlx4_mtt_addr(dev, &mr->mtt));
|
if (mr->mtt.order < 0) {
|
||||||
|
mpt_entry->flags |= cpu_to_be32(MLX4_MPT_FLAG_PHYSICAL);
|
||||||
|
mpt_entry->mtt_seg = 0;
|
||||||
|
} else
|
||||||
|
mpt_entry->mtt_seg = cpu_to_be64(mlx4_mtt_addr(dev, &mr->mtt));
|
||||||
|
|
||||||
err = mlx4_SW2HW_MPT(dev, mailbox,
|
err = mlx4_SW2HW_MPT(dev, mailbox,
|
||||||
key_to_hw_index(mr->key) & (dev->caps.num_mpts - 1));
|
key_to_hw_index(mr->key) & (dev->caps.num_mpts - 1));
|
||||||
|
Loading…
Reference in New Issue
Block a user