LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
From: "Jiaxun Yang" <jiaxun.yang@flygoat.com>
To: "Sergio Paracuellos" <sergio.paracuellos@gmail.com>,
	"Thomas Bogendoerfer" <tsbogend@alpha.franken.de>
Cc: "Bjorn Helgaas" <bhelgaas@google.com>,
	matthias.bgg@gmail.com, gregkh@linuxfoundation.org,
	"linux-mips@vger.kernel.org" <linux-mips@vger.kernel.org>,
	linux-pci <linux-pci@vger.kernel.org>,
	linux-staging@lists.linux.dev, neil@brown.name,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH 2/3] PCI: of: avoid 'devm_pci_remap_iospace' if PCI_IOBASE is not defined
Date: Sun, 08 Aug 2021 09:41:29 +0800	[thread overview]
Message-ID: <7f0d48a6-d4ae-4e8d-aaa8-4b0bb4ad8e35@www.fastmail.com> (raw)
In-Reply-To: <20210807072409.9018-3-sergio.paracuellos@gmail.com>



在2021年8月7日八月 下午3:24,Sergio Paracuellos写道:
> Defining PCI_IOBASE for MIPS ralink in expected addresses results in 
> PCI IO
> resources being assigned but the addresses generated for IO accesses 
> are wrong
> since the ioremap in the PCI core function 
> 'pci_parse_request_of_pci_ranges'
> tries to remap to a fixed virtual address (PC_IOBASE) which can't work 
> for KSEG1
> addresses. To get it working this way, we would need to put PCI_IOBASE 
> somewhere
> into KSEG2 which will result in creating TLB entries for IO addresses, 
> which most
> of the time isn't needed on MIPS because of access via KSEG1. To allow 

It was designed to allow multiple PCI bridge with sparse IO space pattern.
So for ralink it's not going to happen?

Thanks.
- Jiaxun


> MIPS PCI
> drivers to properly use the PCI generic core we need to increase 
> IO_SPACE_LIMIT
> since IO addresses are in addresses higher that 0xffff. We also need to 
> avoid
> the call 'devm_pci_remap_iospace' when 
> 'pci_parse_request_of_pci_ranges' is
> called to avoid the following problem:
> 
> ------------[ cut here ]------------
> WARNING: CPU: 2 PID: 1 at ../drivers/pci/pci.c:4066 pci_remap_iospace+0x3c/0x54
> This architecture does not support memory mapped I/O
> Modules linked in:
> CPU: 2 PID: 1 Comm: swapper/0 Not tainted 5.10.1+ #1228
> Stack : 00000000 00000000 807fa974 00000000 827ffa80 80066b48 80710000 0000000b
>         00000000 00000000 81c59aac 7d06ddec 80850000 00000001 81c59a40 7d06ddec
>         00000000 00000000 807c909c 81c598f0 00000001 81c59904 00000000 0000000a
>         203a6d6d 80708880 0000000f 70617773 80850000 00000000 00000000 807d0000
>         807ffecc 1e160000 00000001 00000200 00000000 8054e920 00000008 815e0008
>         ...
> Call Trace:
> [<80008efc>] show_stack+0x8c/0x130
> [<806e1674>] dump_stack+0x9c/0xc8
> [<80024a3c>] __warn+0xc0/0xe8
> [<80024ad0>] warn_slowpath_fmt+0x6c/0xbc
> [<80410ca8>] pci_remap_iospace+0x3c/0x54
> [<80410d20>] devm_pci_remap_iospace+0x58/0xa4
> [<8042019c>] devm_of_pci_bridge_init+0x4dc/0x55c
> [<80408de8>] devm_pci_alloc_host_bridge+0x78/0x88
> [<80424e44>] mt7621_pci_probe+0x68/0x9a4
> [<80464804>] platform_drv_probe+0x40/0x7c
> [<804628bc>] really_probe+0x2fc/0x4e4
> [<80463214>] device_driver_attach+0x4c/0x74
> [<80463384>] __driver_attach+0x148/0x150
> [<8046047c>] bus_for_each_dev+0x6c/0xb0
> [<804614dc>] bus_add_driver+0x1b4/0x1fc
> [<80463aa0>] driver_register+0xd0/0x110
> [<80001714>] do_one_initcall+0x84/0x1c0
> [<808e7fd0>] kernel_init_freeable+0x214/0x24c
> [<806e4164>] kernel_init+0x14/0x118
> [<80003358>] ret_from_kernel_thread+0x14/0x1c
> 
> ---[ end trace 1c9d4412bd51b53c ]---
> mt7621-pci 1e140000.pcie: error -19: failed to map resource [io  
> 0x1e160000-0x1e16ffff]
> 
> Hence don't call 'devm_pci_remap_iospace' if PCI_IOBASE is not defined to get
> a working PCI core APIs for MIPS ralink platforms.
> 
> Signed-off-by: Sergio Paracuellos <sergio.paracuellos@gmail.com>
> ---
>  drivers/pci/of.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/drivers/pci/of.c b/drivers/pci/of.c
> index a143b02b2dcd..657aef39bf63 100644
> --- a/drivers/pci/of.c
> +++ b/drivers/pci/of.c
> @@ -564,12 +564,14 @@ static int pci_parse_request_of_pci_ranges(struct 
> device *dev,
>  
>  		switch (resource_type(res)) {
>  		case IORESOURCE_IO:
> +#ifdef PCI_IOBASE
>  			err = devm_pci_remap_iospace(dev, res, iobase);
>  			if (err) {
>  				dev_warn(dev, "error %d: failed to map resource %pR\n",
>  					 err, res);
>  				resource_list_destroy_entry(win);
>  			}
> +#endif
>  			break;
>  		case IORESOURCE_MEM:
>  			res_valid |= !(res->flags & IORESOURCE_PREFETCH);
> -- 
> 2.25.1
> 
> 


-- 
- Jiaxun

  reply	other threads:[~2021-08-08  1:42 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-08-07  7:24 [PATCH 0/3] MIPS: ralink: properly handle pci IO resources Sergio Paracuellos
2021-08-07  7:24 ` [PATCH 1/3] MIPS: ralink: don't define PC_IOBASE but increase IO_SPACE_LIMIT Sergio Paracuellos
2021-08-07  7:24 ` [PATCH 2/3] PCI: of: avoid 'devm_pci_remap_iospace' if PCI_IOBASE is not defined Sergio Paracuellos
2021-08-08  1:41   ` Jiaxun Yang [this message]
2021-08-08  5:20     ` Sergio Paracuellos
2021-08-10 22:32   ` Bjorn Helgaas
2021-08-11 10:19     ` Sergio Paracuellos
2021-08-07  7:24 ` [PATCH 3/3] staging: mt7621-pci: set end limit for 'ioport_resource' Sergio Paracuellos

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=7f0d48a6-d4ae-4e8d-aaa8-4b0bb4ad8e35@www.fastmail.com \
    --to=jiaxun.yang@flygoat.com \
    --cc=bhelgaas@google.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mips@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=linux-staging@lists.linux.dev \
    --cc=matthias.bgg@gmail.com \
    --cc=neil@brown.name \
    --cc=sergio.paracuellos@gmail.com \
    --cc=tsbogend@alpha.franken.de \
    --subject='Re: [PATCH 2/3] PCI: of: avoid '\''devm_pci_remap_iospace'\'' if PCI_IOBASE is not defined' \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).