sparc/PCI: Implement pci_resource_to_user() with pcibios_resource_to_bus()
"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. On sparc, these are PCI bus addresses, i.e., raw BAR values. Previously pci_resource_to_user() computed the user address by subtracting either pbm->io_space.start or pbm->mem_space.start from the resource start. We've already told the PCI core about those offsets here: pci_scan_one_pbm() pci_add_resource_offset(&resources, &pbm->io_space, pbm->io_space.start); pci_add_resource_offset(&resources, &pbm->mem_space, pbm->mem_space.start); pci_add_resource_offset(&resources, &pbm->mem64_space, pbm->mem_space.start); so pcibios_resource_to_bus() knows how to do that translation. No functional change intended. Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> Acked-by: Yinghai Lu <yinghai@kernel.org>
This commit is contained in:
Родитель
3830135857
Коммит
3b146b24a4
|
@ -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;
|
||||
struct pci_bus_region region;
|
||||
|
||||
if (rp->flags & IORESOURCE_IO)
|
||||
offset = pbm->io_space.start;
|
||||
else
|
||||
offset = pbm->mem_space.start;
|
||||
|
||||
*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)
|
||||
|
|
Загрузка…
Ссылка в новой задаче