lkml.org 
[lkml]   [2021]   [May]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.10 454/530] MIPS: pci-legacy: stop using of_pci_range_to_resource
    Date
    From: Ilya Lipnitskiy <ilya.lipnitskiy@gmail.com>

    [ Upstream commit 3ecb9dc1581eebecaee56decac70e35365260866 ]

    Mirror commit aeba3731b150 ("powerpc/pci: Fix IO space breakage after
    of_pci_range_to_resource() change").

    Most MIPS platforms do not define PCI_IOBASE, nor implement
    pci_address_to_pio(). Moreover, IO_SPACE_LIMIT is 0xffff for most MIPS
    platforms. of_pci_range_to_resource passes the _start address_ of the IO
    range into pci_address_to_pio, which then checks it against
    IO_SPACE_LIMIT and fails, because for MIPS platforms that use
    pci-legacy (pci-lantiq, pci-rt3883, pci-mt7620), IO ranges start much
    higher than 0xffff.

    In fact, pci-mt7621 in staging already works around this problem, see
    commit 09dd629eeabb ("staging: mt7621-pci: fix io space and properly set
    resource limits")

    So just stop using of_pci_range_to_resource, which does not work for
    MIPS.

    Fixes PCI errors like:
    pci_bus 0000:00: root bus resource [io 0xffffffff]

    Fixes: 0b0b0893d49b ("of/pci: Fix the conversion of IO ranges into IO resources")
    Signed-off-by: Ilya Lipnitskiy <ilya.lipnitskiy@gmail.com>
    Cc: Liviu Dudau <Liviu.Dudau@arm.com>
    Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    arch/mips/pci/pci-legacy.c | 9 +++++++--
    1 file changed, 7 insertions(+), 2 deletions(-)

    diff --git a/arch/mips/pci/pci-legacy.c b/arch/mips/pci/pci-legacy.c
    index 39052de915f3..3a909194284a 100644
    --- a/arch/mips/pci/pci-legacy.c
    +++ b/arch/mips/pci/pci-legacy.c
    @@ -166,8 +166,13 @@ void pci_load_of_ranges(struct pci_controller *hose, struct device_node *node)
    res = hose->mem_resource;
    break;
    }
    - if (res != NULL)
    - of_pci_range_to_resource(&range, node, res);
    + if (res != NULL) {
    + res->name = node->full_name;
    + res->flags = range.flags;
    + res->start = range.cpu_addr;
    + res->end = range.cpu_addr + range.size - 1;
    + res->parent = res->child = res->sibling = NULL;
    + }
    }
    }

    --
    2.30.2


    \
     
     \ /
      Last update: 2021-05-12 19:01    [W:3.173 / U:0.000 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site