Thread (41 messages) 41 messages, 5 authors, 2014-09-23

[PATCH v11 10/10] PCI: Introduce pci_remap_iospace() for remapping PCI I/O bus resources into CPU space

From: rric@kernel.org (Robert Richter)
Date: 2014-09-22 15:29:57
Also in: linux-arch, linux-devicetree, linux-pci, lkml

On 20.09.14 04:20:31, Arnd Bergmann wrote:
On Friday 19 September 2014, Bjorn Helgaas wrote:
quoted
On Thu, Sep 18, 2014 at 02:30:25AM +0100, Liviu Dudau wrote:
quoted
PCI_IOBASE is a virtual address.  So PCI_IOBASE + res->start is also a
virtual address (only for IORESOURCE_IO).

Since res->start is normally a *physical* address, I think it would be less
confusing to do something like this:

    vaddr = PCI_IOBASE + res->start;
    ioremap_page_range(vaddr, vaddr + resource_size(res), ...);

so we have a hint that the first two ioremap_page_range() parameters are
virtual addresses.  It's also confusing that it uses "unsigned long" for
the virtual addresses, when we usually use "void *".  But that's out of
scope for this patch.
Good idea. I think it will have to be (unsigned long)PCI_IOBASE above then,
since ioremap_page_range takes a 'unsigned long' virtual address and PCI_IOBASE
should really remain an __iomem pointer.
Right, I see this warning here:

drivers/pci/pci.c: In function ?pci_remap_iospace?:
drivers/pci/pci.c:2728:8: warning: assignment makes integer from pointer without a cast [enabled by default]

-Robert
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help