mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-18 01:36:55 +07:00
net/mlx5: Add explicit bar address field
Add bar_addr field to store bar-0 address to avoid calling pci_resource_start with hard-coded bar-0 as parameter. Also note that different mlx5 device types will have bar_addr on different bars. This patch does not change any functionality. Signed-off-by: Huy Nguyen <huyn@mellanox.com> Signed-off-by: Vu Pham <vuhuong@mellanox.com> Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
This commit is contained in:
parent
98a8e6fc48
commit
aa8106f137
@ -148,7 +148,7 @@ int mlx5_cmd_alloc_memic(struct mlx5_memic *memic, phys_addr_t *addr,
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
*addr = pci_resource_start(dev->pdev, 0) +
|
*addr = dev->bar_addr +
|
||||||
MLX5_GET64(alloc_memic_out, out, memic_start_addr);
|
MLX5_GET64(alloc_memic_out, out, memic_start_addr);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@ -167,7 +167,7 @@ int mlx5_cmd_dealloc_memic(struct mlx5_memic *memic, u64 addr, u64 length)
|
|||||||
u64 start_page_idx;
|
u64 start_page_idx;
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
addr -= pci_resource_start(dev->pdev, 0);
|
addr -= dev->bar_addr;
|
||||||
start_page_idx = (addr - hw_start_addr) >> PAGE_SHIFT;
|
start_page_idx = (addr - hw_start_addr) >> PAGE_SHIFT;
|
||||||
|
|
||||||
MLX5_SET(dealloc_memic_in, in, opcode, MLX5_CMD_OP_DEALLOC_MEMIC);
|
MLX5_SET(dealloc_memic_in, in, opcode, MLX5_CMD_OP_DEALLOC_MEMIC);
|
||||||
|
@ -1984,7 +1984,7 @@ static phys_addr_t uar_index2pfn(struct mlx5_ib_dev *dev,
|
|||||||
|
|
||||||
fw_uars_per_page = MLX5_CAP_GEN(dev->mdev, uar_4k) ? MLX5_UARS_IN_PAGE : 1;
|
fw_uars_per_page = MLX5_CAP_GEN(dev->mdev, uar_4k) ? MLX5_UARS_IN_PAGE : 1;
|
||||||
|
|
||||||
return (pci_resource_start(dev->mdev->pdev, 0) >> PAGE_SHIFT) + uar_idx / fw_uars_per_page;
|
return (dev->mdev->bar_addr >> PAGE_SHIFT) + uar_idx / fw_uars_per_page;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int get_command(unsigned long offset)
|
static int get_command(unsigned long offset)
|
||||||
@ -2174,7 +2174,7 @@ static int dm_mmap(struct ib_ucontext *context, struct vm_area_struct *vma)
|
|||||||
page_idx + npages)
|
page_idx + npages)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
pfn = ((pci_resource_start(dev->mdev->pdev, 0) +
|
pfn = ((dev->mdev->bar_addr +
|
||||||
MLX5_CAP64_DEV_MEM(dev->mdev, memic_bar_start_addr)) >>
|
MLX5_CAP64_DEV_MEM(dev->mdev, memic_bar_start_addr)) >>
|
||||||
PAGE_SHIFT) +
|
PAGE_SHIFT) +
|
||||||
page_idx;
|
page_idx;
|
||||||
@ -2258,7 +2258,7 @@ struct ib_dm *mlx5_ib_alloc_dm(struct ib_device *ibdev,
|
|||||||
goto err_free;
|
goto err_free;
|
||||||
|
|
||||||
start_offset = memic_addr & ~PAGE_MASK;
|
start_offset = memic_addr & ~PAGE_MASK;
|
||||||
page_idx = (memic_addr - pci_resource_start(memic->dev->pdev, 0) -
|
page_idx = (memic_addr - memic->dev->bar_addr -
|
||||||
MLX5_CAP64_DEV_MEM(memic->dev, memic_bar_start_addr)) >>
|
MLX5_CAP64_DEV_MEM(memic->dev, memic_bar_start_addr)) >>
|
||||||
PAGE_SHIFT;
|
PAGE_SHIFT;
|
||||||
|
|
||||||
@ -2301,7 +2301,7 @@ int mlx5_ib_dealloc_dm(struct ib_dm *ibdm)
|
|||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
page_idx = (dm->dev_addr - pci_resource_start(memic->dev->pdev, 0) -
|
page_idx = (dm->dev_addr - memic->dev->bar_addr -
|
||||||
MLX5_CAP64_DEV_MEM(memic->dev, memic_bar_start_addr)) >>
|
MLX5_CAP64_DEV_MEM(memic->dev, memic_bar_start_addr)) >>
|
||||||
PAGE_SHIFT;
|
PAGE_SHIFT;
|
||||||
bitmap_clear(to_mucontext(ibdm->uobject->context)->dm_pages,
|
bitmap_clear(to_mucontext(ibdm->uobject->context)->dm_pages,
|
||||||
|
@ -1232,8 +1232,7 @@ static struct ib_mr *mlx5_ib_get_memic_mr(struct ib_pd *pd, u64 memic_addr,
|
|||||||
MLX5_SET64(mkc, mkc, len, length);
|
MLX5_SET64(mkc, mkc, len, length);
|
||||||
MLX5_SET(mkc, mkc, pd, to_mpd(pd)->pdn);
|
MLX5_SET(mkc, mkc, pd, to_mpd(pd)->pdn);
|
||||||
MLX5_SET(mkc, mkc, qpn, 0xffffff);
|
MLX5_SET(mkc, mkc, qpn, 0xffffff);
|
||||||
MLX5_SET64(mkc, mkc, start_addr,
|
MLX5_SET64(mkc, mkc, start_addr, memic_addr - dev->mdev->bar_addr);
|
||||||
memic_addr - pci_resource_start(dev->mdev->pdev, 0));
|
|
||||||
|
|
||||||
err = mlx5_core_create_mkey(mdev, &mr->mmkey, in, inlen);
|
err = mlx5_core_create_mkey(mdev, &mr->mmkey, in, inlen);
|
||||||
if (err)
|
if (err)
|
||||||
|
@ -739,6 +739,7 @@ static int mlx5_pci_init(struct mlx5_core_dev *dev, struct pci_dev *pdev,
|
|||||||
|
|
||||||
pci_set_drvdata(dev->pdev, dev);
|
pci_set_drvdata(dev->pdev, dev);
|
||||||
|
|
||||||
|
dev->bar_addr = pci_resource_start(pdev, 0);
|
||||||
priv->numa_node = dev_to_node(&dev->pdev->dev);
|
priv->numa_node = dev_to_node(&dev->pdev->dev);
|
||||||
|
|
||||||
err = mlx5_pci_enable_device(dev);
|
err = mlx5_pci_enable_device(dev);
|
||||||
@ -766,7 +767,7 @@ static int mlx5_pci_init(struct mlx5_core_dev *dev, struct pci_dev *pdev,
|
|||||||
pci_enable_atomic_ops_to_root(pdev, PCI_EXP_DEVCAP2_ATOMIC_COMP128))
|
pci_enable_atomic_ops_to_root(pdev, PCI_EXP_DEVCAP2_ATOMIC_COMP128))
|
||||||
mlx5_core_dbg(dev, "Enabling pci atomics failed\n");
|
mlx5_core_dbg(dev, "Enabling pci atomics failed\n");
|
||||||
|
|
||||||
dev->iseg_base = pci_resource_start(dev->pdev, 0);
|
dev->iseg_base = dev->bar_addr;
|
||||||
dev->iseg = ioremap(dev->iseg_base, sizeof(*dev->iseg));
|
dev->iseg = ioremap(dev->iseg_base, sizeof(*dev->iseg));
|
||||||
if (!dev->iseg) {
|
if (!dev->iseg) {
|
||||||
err = -ENOMEM;
|
err = -ENOMEM;
|
||||||
|
@ -79,7 +79,7 @@ static u64 uar2pfn(struct mlx5_core_dev *mdev, u32 index)
|
|||||||
else
|
else
|
||||||
system_page_index = index;
|
system_page_index = index;
|
||||||
|
|
||||||
return (pci_resource_start(mdev->pdev, 0) >> PAGE_SHIFT) + system_page_index;
|
return (mdev->bar_addr >> PAGE_SHIFT) + system_page_index;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void up_rel_func(struct kref *kref)
|
static void up_rel_func(struct kref *kref)
|
||||||
|
@ -658,6 +658,7 @@ struct mlx5_core_dev {
|
|||||||
u64 sys_image_guid;
|
u64 sys_image_guid;
|
||||||
phys_addr_t iseg_base;
|
phys_addr_t iseg_base;
|
||||||
struct mlx5_init_seg __iomem *iseg;
|
struct mlx5_init_seg __iomem *iseg;
|
||||||
|
phys_addr_t bar_addr;
|
||||||
enum mlx5_device_state state;
|
enum mlx5_device_state state;
|
||||||
/* sync interface state */
|
/* sync interface state */
|
||||||
struct mutex intf_state_mutex;
|
struct mutex intf_state_mutex;
|
||||||
|
Loading…
Reference in New Issue
Block a user