Thread (16 messages) 16 messages, 3 authors, 2021-09-25

Re: [PATCH 5/6] MIPS: implement architecture dependent 'pci_remap_iospace()'

From: Sergio Paracuellos <sergio.paracuellos@gmail.com>
Date: 2021-09-25 18:09:17
Also in: linux-mips, linux-pci, lkml

Hi Arnd,

On Sat, Sep 25, 2021 at 7:32 PM Arnd Bergmann [off-list ref] wrote:
On Fri, Sep 24, 2021 at 11:11 PM Sergio Paracuellos
[off-list ref] wrote:
quoted
To make PCI IO work we need to properly virtually map IO cpu physical address
and set this virtual address as the address of the first PCI IO port which
is set using function 'set_io_port_base()'.

Signed-off-by: Sergio Paracuellos <sergio.paracuellos@gmail.com>
Acked-by: Arnd Bergmann <arnd@arndb.de>
Thanks!
quoted
+int pci_remap_iospace(const struct resource *res, phys_addr_t phys_addr)
+{
+       size_t size = (res->end - res->start) + 1;
+       unsigned long vaddr = (unsigned long)ioremap(phys_addr, size);
+
+       set_io_port_base(vaddr);
+       return 0;
+}
It might be good to check that res->start is zero here, otherwise
the io_port_base would be off. That could happen if you ever have more
than one bridge.
Do you mean something like the following?

int pci_remap_iospace(const struct resource *res, phys_addr_t phys_addr)
{
    unsigned long vaddr;
    size_t size;

    if (res->start != 0) {
         // Should I WARN_ONCE or just show an error/warning message??
         WARN_ONCE(1, "resource start must be zero\n");
         return -ENODEV;
   }

     size = (res->end - res->start) + 1;
     vaddr = (unsigned long)ioremap(phys_addr, size);
     return 0;
}

Thanks,
    Sergio Paracuellos
        Arnd
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help