mlx4_{core, ib, en}: Fix driver when sizeof (phys_addr_t) > sizeof (long)

Some systems have PCI addresses that don't fit in unsigned long (eg some
32-bit PowerPC 440 systems have 36-bit bus addresses). Fix up mlx4 drivers
by using phys_addr_t where appropriate, so we don't truncate any PCI
resource addresses before ioremapping them.

Signed-off-by: Roland Dreier <rolandd@cisco.com>

+8 -6
+2 -1
drivers/infiniband/hw/mlx4/main.c
··· 1005 if (mlx4_uar_alloc(dev, &ibdev->priv_uar)) 1006 goto err_pd; 1007 1008 - ibdev->uar_map = ioremap(ibdev->priv_uar.pfn << PAGE_SHIFT, PAGE_SIZE); 1009 if (!ibdev->uar_map) 1010 goto err_uar; 1011 MLX4_INIT_DOORBELL_LOCK(&ibdev->uar_lock);
··· 1005 if (mlx4_uar_alloc(dev, &ibdev->priv_uar)) 1006 goto err_pd; 1007 1008 + ibdev->uar_map = ioremap((phys_addr_t) ibdev->priv_uar.pfn << PAGE_SHIFT, 1009 + PAGE_SIZE); 1010 if (!ibdev->uar_map) 1011 goto err_uar; 1012 MLX4_INIT_DOORBELL_LOCK(&ibdev->uar_lock);
+3 -3
drivers/net/mlx4/catas.c
··· 113 void mlx4_start_catas_poll(struct mlx4_dev *dev) 114 { 115 struct mlx4_priv *priv = mlx4_priv(dev); 116 - unsigned long addr; 117 118 INIT_LIST_HEAD(&priv->catas_err.list); 119 init_timer(&priv->catas_err.timer); ··· 124 125 priv->catas_err.map = ioremap(addr, priv->fw.catas_size * 4); 126 if (!priv->catas_err.map) { 127 - mlx4_warn(dev, "Failed to map internal error buffer at 0x%lx\n", 128 - addr); 129 return; 130 } 131
··· 113 void mlx4_start_catas_poll(struct mlx4_dev *dev) 114 { 115 struct mlx4_priv *priv = mlx4_priv(dev); 116 + phys_addr_t addr; 117 118 INIT_LIST_HEAD(&priv->catas_err.list); 119 init_timer(&priv->catas_err.timer); ··· 124 125 priv->catas_err.map = ioremap(addr, priv->fw.catas_size * 4); 126 if (!priv->catas_err.map) { 127 + mlx4_warn(dev, "Failed to map internal error buffer at 0x%llx\n", 128 + (unsigned long long) addr); 129 return; 130 } 131
+2 -1
drivers/net/mlx4/en_main.c
··· 202 if (mlx4_uar_alloc(dev, &mdev->priv_uar)) 203 goto err_pd; 204 205 - mdev->uar_map = ioremap(mdev->priv_uar.pfn << PAGE_SHIFT, PAGE_SIZE); 206 if (!mdev->uar_map) 207 goto err_uar; 208 spin_lock_init(&mdev->uar_lock);
··· 202 if (mlx4_uar_alloc(dev, &mdev->priv_uar)) 203 goto err_pd; 204 205 + mdev->uar_map = ioremap((phys_addr_t) mdev->priv_uar.pfn << PAGE_SHIFT, 206 + PAGE_SIZE); 207 if (!mdev->uar_map) 208 goto err_uar; 209 spin_lock_init(&mdev->uar_lock);
+1 -1
drivers/net/mlx4/main.c
··· 829 goto err_uar_table_free; 830 } 831 832 - priv->kar = ioremap(priv->driver_uar.pfn << PAGE_SHIFT, PAGE_SIZE); 833 if (!priv->kar) { 834 mlx4_err(dev, "Couldn't map kernel access region, " 835 "aborting.\n");
··· 829 goto err_uar_table_free; 830 } 831 832 + priv->kar = ioremap((phys_addr_t) priv->driver_uar.pfn << PAGE_SHIFT, PAGE_SIZE); 833 if (!priv->kar) { 834 mlx4_err(dev, "Couldn't map kernel access region, " 835 "aborting.\n");