diff options
Diffstat (limited to 'arch/powerpc/platforms/pseries/iommu.c')
| -rw-r--r-- | arch/powerpc/platforms/pseries/iommu.c | 29 | 
1 files changed, 13 insertions, 16 deletions
diff --git a/arch/powerpc/platforms/pseries/iommu.c b/arch/powerpc/platforms/pseries/iommu.c index c442f2b1980..0915b1ad66c 100644 --- a/arch/powerpc/platforms/pseries/iommu.c +++ b/arch/powerpc/platforms/pseries/iommu.c @@ -809,8 +809,7 @@ machine_arch_initcall(pseries, find_existing_ddw_windows);  static int query_ddw(struct pci_dev *dev, const u32 *ddw_avail,  			struct ddw_query_response *query)  { -	struct device_node *dn; -	struct pci_dn *pcidn; +	struct eeh_dev *edev;  	u32 cfg_addr;  	u64 buid;  	int ret; @@ -821,12 +820,12 @@ static int query_ddw(struct pci_dev *dev, const u32 *ddw_avail,  	 * Retrieve them from the pci device, not the node with the  	 * dma-window property  	 */ -	dn = pci_device_to_OF_node(dev); -	pcidn = PCI_DN(dn); -	cfg_addr = pcidn->eeh_config_addr; -	if (pcidn->eeh_pe_config_addr) -		cfg_addr = pcidn->eeh_pe_config_addr; -	buid = pcidn->phb->buid; +	edev = pci_dev_to_eeh_dev(dev); +	cfg_addr = edev->config_addr; +	if (edev->pe_config_addr) +		cfg_addr = edev->pe_config_addr; +	buid = edev->phb->buid; +  	ret = rtas_call(ddw_avail[0], 3, 5, (u32 *)query,  		  cfg_addr, BUID_HI(buid), BUID_LO(buid));  	dev_info(&dev->dev, "ibm,query-pe-dma-windows(%x) %x %x %x" @@ -839,8 +838,7 @@ static int create_ddw(struct pci_dev *dev, const u32 *ddw_avail,  			struct ddw_create_response *create, int page_shift,  			int window_shift)  { -	struct device_node *dn; -	struct pci_dn *pcidn; +	struct eeh_dev *edev;  	u32 cfg_addr;  	u64 buid;  	int ret; @@ -851,12 +849,11 @@ static int create_ddw(struct pci_dev *dev, const u32 *ddw_avail,  	 * Retrieve them from the pci device, not the node with the  	 * dma-window property  	 */ -	dn = pci_device_to_OF_node(dev); -	pcidn = PCI_DN(dn); -	cfg_addr = pcidn->eeh_config_addr; -	if (pcidn->eeh_pe_config_addr) -		cfg_addr = pcidn->eeh_pe_config_addr; -	buid = pcidn->phb->buid; +	edev = pci_dev_to_eeh_dev(dev); +	cfg_addr = edev->config_addr; +	if (edev->pe_config_addr) +		cfg_addr = edev->pe_config_addr; +	buid = edev->phb->buid;  	do {  		/* extra outputs are LIOBN and dma-addr (hi, lo) */  |