powerpc/iommu: Update the generic code to use dynamic iommu page sizes
This patch updates the generic iommu backend code to use the it_page_shift field to determine the iommu page size instead of using hardcoded values. Signed-off-by: Alistair Popple <alistair@popple.id.au> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
This commit is contained in:

committed by
Benjamin Herrenschmidt

parent
3a553170d3
commit
d084775738
@@ -1276,31 +1276,34 @@ static unsigned long ibmveth_get_desired_dma(struct vio_dev *vdev)
|
||||
{
|
||||
struct net_device *netdev = dev_get_drvdata(&vdev->dev);
|
||||
struct ibmveth_adapter *adapter;
|
||||
struct iommu_table *tbl;
|
||||
unsigned long ret;
|
||||
int i;
|
||||
int rxqentries = 1;
|
||||
|
||||
tbl = get_iommu_table_base(&vdev->dev);
|
||||
|
||||
/* netdev inits at probe time along with the structures we need below*/
|
||||
if (netdev == NULL)
|
||||
return IOMMU_PAGE_ALIGN_4K(IBMVETH_IO_ENTITLEMENT_DEFAULT);
|
||||
return IOMMU_PAGE_ALIGN(IBMVETH_IO_ENTITLEMENT_DEFAULT, tbl);
|
||||
|
||||
adapter = netdev_priv(netdev);
|
||||
|
||||
ret = IBMVETH_BUFF_LIST_SIZE + IBMVETH_FILT_LIST_SIZE;
|
||||
ret += IOMMU_PAGE_ALIGN_4K(netdev->mtu);
|
||||
ret += IOMMU_PAGE_ALIGN(netdev->mtu, tbl);
|
||||
|
||||
for (i = 0; i < IBMVETH_NUM_BUFF_POOLS; i++) {
|
||||
/* add the size of the active receive buffers */
|
||||
if (adapter->rx_buff_pool[i].active)
|
||||
ret +=
|
||||
adapter->rx_buff_pool[i].size *
|
||||
IOMMU_PAGE_ALIGN_4K(adapter->rx_buff_pool[i].
|
||||
buff_size);
|
||||
IOMMU_PAGE_ALIGN(adapter->rx_buff_pool[i].
|
||||
buff_size, tbl);
|
||||
rxqentries += adapter->rx_buff_pool[i].size;
|
||||
}
|
||||
/* add the size of the receive queue entries */
|
||||
ret += IOMMU_PAGE_ALIGN_4K(
|
||||
rxqentries * sizeof(struct ibmveth_rx_q_entry));
|
||||
ret += IOMMU_PAGE_ALIGN(
|
||||
rxqentries * sizeof(struct ibmveth_rx_q_entry), tbl);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
Reference in New Issue
Block a user