diff options
Diffstat (limited to 'arch/sparc/kernel/pci.c')
| -rw-r--r-- | arch/sparc/kernel/pci.c | 20 | 
1 files changed, 11 insertions, 9 deletions
diff --git a/arch/sparc/kernel/pci.c b/arch/sparc/kernel/pci.c index c2b202d763a1..9c1878f4fa9f 100644 --- a/arch/sparc/kernel/pci.c +++ b/arch/sparc/kernel/pci.c @@ -986,16 +986,18 @@ void pci_resource_to_user(const struct pci_dev *pdev, int bar,  			  const struct resource *rp, resource_size_t *start,  			  resource_size_t *end)  { -	struct pci_pbm_info *pbm = pdev->dev.archdata.host_controller; -	unsigned long offset; - -	if (rp->flags & IORESOURCE_IO) -		offset = pbm->io_space.start; -	else -		offset = pbm->mem_space.start; +	struct pci_bus_region region; -	*start = rp->start - offset; -	*end = rp->end - offset; +	/* +	 * "User" addresses are shown in /sys/devices/pci.../.../resource +	 * and /proc/bus/pci/devices and used as mmap offsets for +	 * /proc/bus/pci/BB/DD.F files (see proc_bus_pci_mmap()). +	 * +	 * On sparc, these are PCI bus addresses, i.e., raw BAR values. +	 */ +	pcibios_resource_to_bus(pdev->bus, ®ion, (struct resource *) rp); +	*start = region.start; +	*end = region.end;  }  void pcibios_set_master(struct pci_dev *dev)  |