|
@@ -1601,9 +1601,10 @@ static void pnv_pci_ioda_dma_dev_setup(struct pnv_phb *phb, struct pci_dev *pdev
|
|
|
set_iommu_table_base_and_group(&pdev->dev, pe->tce32_table);
|
|
|
}
|
|
|
|
|
|
-static int pnv_pci_ioda_dma_set_mask(struct pnv_phb *phb,
|
|
|
- struct pci_dev *pdev, u64 dma_mask)
|
|
|
+static int pnv_pci_ioda_dma_set_mask(struct pci_dev *pdev, u64 dma_mask)
|
|
|
{
|
|
|
+ struct pci_controller *hose = pci_bus_to_host(pdev->bus);
|
|
|
+ struct pnv_phb *phb = hose->private_data;
|
|
|
struct pci_dn *pdn = pci_get_pdn(pdev);
|
|
|
struct pnv_ioda_pe *pe;
|
|
|
uint64_t top;
|
|
@@ -2657,6 +2658,7 @@ static const struct pci_controller_ops pnv_pci_ioda_controller_ops = {
|
|
|
.enable_device_hook = pnv_pci_enable_device_hook,
|
|
|
.window_alignment = pnv_pci_window_alignment,
|
|
|
.reset_secondary_bus = pnv_pci_reset_secondary_bus,
|
|
|
+ .dma_set_mask = pnv_pci_ioda_dma_set_mask,
|
|
|
};
|
|
|
|
|
|
static void __init pnv_pci_init_ioda_phb(struct device_node *np,
|
|
@@ -2802,7 +2804,6 @@ static void __init pnv_pci_init_ioda_phb(struct device_node *np,
|
|
|
|
|
|
/* Setup TCEs */
|
|
|
phb->dma_dev_setup = pnv_pci_ioda_dma_dev_setup;
|
|
|
- phb->dma_set_mask = pnv_pci_ioda_dma_set_mask;
|
|
|
phb->dma_get_required_mask = pnv_pci_ioda_dma_get_required_mask;
|
|
|
|
|
|
/* Setup shutdown function for kexec */
|