From: Kishon Vijay Abraham I <kishon@ti.com> To: Rob Herring <robh@kernel.org> Cc: Bjorn Helgaas <bhelgaas@google.com>, Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>, Arnd Bergmann <arnd@arndb.de>, Tom Joseph <tjoseph@cadence.com>, Greg Kroah-Hartman <gregkh@linuxfoundation.org>, <linux-pci@vger.kernel.org>, <devicetree@vger.kernel.org>, <linux-kernel@vger.kernel.org>, <linux-omap@vger.kernel.org>, <linux-arm-kernel@lists.infradead.org> Subject: Re: [PATCH v4 07/14] PCI: cadence: Add new *ops* for CPU addr fixup Date: Thu, 21 May 2020 17:04:54 +0530 [thread overview] Message-ID: <3f9cf6e5-94f8-4c54-aaee-c181b0e79f1f@ti.com> (raw) In-Reply-To: <20200520213434.GA583923@bogus> Hi Rob, On 5/21/2020 3:04 AM, Rob Herring wrote: > On Wed, May 06, 2020 at 08:44:22PM +0530, Kishon Vijay Abraham I wrote: >> Cadence driver uses "mem" memory resource to obtain the offset of >> configuration space address region, memory space address region and >> message space address region. The obtained offset is used to program >> the Address Translation Unit (ATU). However certain platforms like TI's >> J721E SoC require the absolute address to be programmed in the ATU and not >> just the offset. > > Once again, Cadence host binding is broken (or at least the example is). > The 'mem' region shouldn't even exist. It is overlapping the config > space and 'ranges': > > reg = <0x0 0xfb000000 0x0 0x01000000>, > <0x0 0x41000000 0x0 0x00001000>, > <0x0 0x40000000 0x0 0x04000000>; > reg-names = "reg", "cfg", "mem"; > > ranges = <0x02000000 0x0 0x42000000 0x0 0x42000000 0x0 0x1000000>, > <0x01000000 0x0 0x43000000 0x0 0x43000000 0x0 0x0010000>; > > > 16M of registers looks a bit odd. I guess it doesn't matter > unless you have a 32-bit platform and care about your virtual > space. Probably should have been 3 regions for LM, RP, and AT looking > at the driver. The "mem" region in never ioremapped. However $patch removes requiring to add "mem" memory resource. > > Whatever outbound address translation you need should be based on > 'ranges'. You mean we don't need to add "new *ops* for CPU addr fixup"?. The issue is ranges provides CPU address and PCI address. The CPU will access whatever is populated in ranges to access the PCI bus. However while programming the ATU, we cannot use the CPU address provided in ranges directly (in some platforms) because the controller does not see the full address and only the lower 28bits. This similar restriction was there with Designware (mostly an integration issue) and we used *ops* to fixup the address that has to be programmed in ATU. The Designware initially used a wrapper so that ranges property can be directly used [1]. However this approach was later removed in [2] [1] -> https://lore.kernel.org/patchwork/patch/468523/ [2] -> https://lkml.org/lkml/2015/10/16/232 Thanks Kishon
WARNING: multiple messages have this Message-ID (diff)
From: Kishon Vijay Abraham I <kishon@ti.com> To: Rob Herring <robh@kernel.org> Cc: devicetree@vger.kernel.org, Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>, Arnd Bergmann <arnd@arndb.de>, Greg Kroah-Hartman <gregkh@linuxfoundation.org>, linux-kernel@vger.kernel.org, Tom Joseph <tjoseph@cadence.com>, linux-pci@vger.kernel.org, Bjorn Helgaas <bhelgaas@google.com>, linux-omap@vger.kernel.org, linux-arm-kernel@lists.infradead.org Subject: Re: [PATCH v4 07/14] PCI: cadence: Add new *ops* for CPU addr fixup Date: Thu, 21 May 2020 17:04:54 +0530 [thread overview] Message-ID: <3f9cf6e5-94f8-4c54-aaee-c181b0e79f1f@ti.com> (raw) In-Reply-To: <20200520213434.GA583923@bogus> Hi Rob, On 5/21/2020 3:04 AM, Rob Herring wrote: > On Wed, May 06, 2020 at 08:44:22PM +0530, Kishon Vijay Abraham I wrote: >> Cadence driver uses "mem" memory resource to obtain the offset of >> configuration space address region, memory space address region and >> message space address region. The obtained offset is used to program >> the Address Translation Unit (ATU). However certain platforms like TI's >> J721E SoC require the absolute address to be programmed in the ATU and not >> just the offset. > > Once again, Cadence host binding is broken (or at least the example is). > The 'mem' region shouldn't even exist. It is overlapping the config > space and 'ranges': > > reg = <0x0 0xfb000000 0x0 0x01000000>, > <0x0 0x41000000 0x0 0x00001000>, > <0x0 0x40000000 0x0 0x04000000>; > reg-names = "reg", "cfg", "mem"; > > ranges = <0x02000000 0x0 0x42000000 0x0 0x42000000 0x0 0x1000000>, > <0x01000000 0x0 0x43000000 0x0 0x43000000 0x0 0x0010000>; > > > 16M of registers looks a bit odd. I guess it doesn't matter > unless you have a 32-bit platform and care about your virtual > space. Probably should have been 3 regions for LM, RP, and AT looking > at the driver. The "mem" region in never ioremapped. However $patch removes requiring to add "mem" memory resource. > > Whatever outbound address translation you need should be based on > 'ranges'. You mean we don't need to add "new *ops* for CPU addr fixup"?. The issue is ranges provides CPU address and PCI address. The CPU will access whatever is populated in ranges to access the PCI bus. However while programming the ATU, we cannot use the CPU address provided in ranges directly (in some platforms) because the controller does not see the full address and only the lower 28bits. This similar restriction was there with Designware (mostly an integration issue) and we used *ops* to fixup the address that has to be programmed in ATU. The Designware initially used a wrapper so that ranges property can be directly used [1]. However this approach was later removed in [2] [1] -> https://lore.kernel.org/patchwork/patch/468523/ [2] -> https://lkml.org/lkml/2015/10/16/232 Thanks Kishon _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2020-05-21 11:35 UTC|newest] Thread overview: 62+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-05-06 15:14 [PATCH v4 00/14] Add PCIe support to TI's J721E SoC Kishon Vijay Abraham I 2020-05-06 15:14 ` Kishon Vijay Abraham I 2020-05-06 15:14 ` [PATCH v4 01/14] PCI: cadence: Fix cdns_pcie_{host|ep}_setup() error path Kishon Vijay Abraham I 2020-05-06 15:14 ` Kishon Vijay Abraham I 2020-05-20 20:59 ` Rob Herring 2020-05-20 20:59 ` Rob Herring 2020-05-06 15:14 ` [PATCH v4 02/14] linux/kernel.h: Add PTR_ALIGN_DOWN macro Kishon Vijay Abraham I 2020-05-06 15:14 ` Kishon Vijay Abraham I 2020-05-20 21:00 ` Rob Herring 2020-05-20 21:00 ` Rob Herring 2020-05-06 15:14 ` [PATCH v4 03/14] PCI: cadence: Add support to use custom read and write accessors Kishon Vijay Abraham I 2020-05-06 15:14 ` Kishon Vijay Abraham I 2020-05-20 21:02 ` Rob Herring 2020-05-20 21:02 ` Rob Herring 2020-05-20 22:07 ` Rob Herring 2020-05-20 22:07 ` Rob Herring 2020-05-21 13:33 ` Kishon Vijay Abraham I 2020-05-21 13:33 ` Kishon Vijay Abraham I 2020-05-21 22:17 ` Rob Herring 2020-05-21 22:17 ` Rob Herring 2020-05-22 3:36 ` Kishon Vijay Abraham I 2020-05-22 3:36 ` Kishon Vijay Abraham I 2020-05-06 15:14 ` [PATCH v4 04/14] PCI: cadence: Add support to start link and verify link status Kishon Vijay Abraham I 2020-05-06 15:14 ` Kishon Vijay Abraham I 2020-05-20 21:06 ` Rob Herring 2020-05-20 21:06 ` Rob Herring 2020-05-06 15:14 ` [PATCH v4 05/14] PCI: cadence: Add read/write accessors to perform only 32-bit accesses Kishon Vijay Abraham I 2020-05-06 15:14 ` Kishon Vijay Abraham I 2020-05-06 15:14 ` [PATCH v4 06/14] PCI: cadence: Allow pci_host_bridge to have custom pci_ops Kishon Vijay Abraham I 2020-05-06 15:14 ` Kishon Vijay Abraham I 2020-05-06 15:14 ` [PATCH v4 07/14] PCI: cadence: Add new *ops* for CPU addr fixup Kishon Vijay Abraham I 2020-05-06 15:14 ` Kishon Vijay Abraham I 2020-05-20 21:34 ` Rob Herring 2020-05-20 21:34 ` Rob Herring 2020-05-21 11:34 ` Kishon Vijay Abraham I [this message] 2020-05-21 11:34 ` Kishon Vijay Abraham I 2020-05-22 16:45 ` Rob Herring 2020-05-22 16:45 ` Rob Herring 2020-05-23 1:24 ` Kishon Vijay Abraham I 2020-05-23 1:24 ` Kishon Vijay Abraham I 2020-05-06 15:14 ` [PATCH v4 08/14] PCI: cadence: Fix updating Vendor ID and Subsystem Vendor ID register Kishon Vijay Abraham I 2020-05-06 15:14 ` Kishon Vijay Abraham I 2020-05-20 21:36 ` Rob Herring 2020-05-20 21:36 ` Rob Herring 2020-05-06 15:14 ` [PATCH v4 09/14] PCI: cadence: Add MSI-X support to Endpoint driver Kishon Vijay Abraham I 2020-05-06 15:14 ` Kishon Vijay Abraham I 2020-05-06 15:14 ` [PATCH v4 10/14] dt-bindings: PCI: Add host mode dt-bindings for TI's J721E SoC Kishon Vijay Abraham I 2020-05-06 15:14 ` Kishon Vijay Abraham I 2020-05-06 15:14 ` [PATCH v4 11/14] dt-bindings: PCI: Add EP " Kishon Vijay Abraham I 2020-05-06 15:14 ` Kishon Vijay Abraham I 2020-05-06 15:14 ` [PATCH v4 12/14] PCI: j721e: Add TI J721E PCIe driver Kishon Vijay Abraham I 2020-05-06 15:14 ` Kishon Vijay Abraham I 2020-05-06 15:14 ` [PATCH v4 13/14] misc: pci_endpoint_test: Add J721E in pci_device_id table Kishon Vijay Abraham I 2020-05-06 15:14 ` Kishon Vijay Abraham I 2020-05-20 22:12 ` Rob Herring 2020-05-20 22:12 ` Rob Herring 2020-05-06 15:14 ` [PATCH v4 14/14] MAINTAINERS: Add Kishon Vijay Abraham I for TI J721E SoC PCIe Kishon Vijay Abraham I 2020-05-06 15:14 ` Kishon Vijay Abraham I 2020-05-20 22:12 ` Rob Herring 2020-05-20 22:12 ` Rob Herring 2020-05-18 11:14 ` [PATCH v4 00/14] Add PCIe support to TI's J721E SoC Kishon Vijay Abraham I 2020-05-18 11:14 ` Kishon Vijay Abraham I
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=3f9cf6e5-94f8-4c54-aaee-c181b0e79f1f@ti.com \ --to=kishon@ti.com \ --cc=arnd@arndb.de \ --cc=bhelgaas@google.com \ --cc=devicetree@vger.kernel.org \ --cc=gregkh@linuxfoundation.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-omap@vger.kernel.org \ --cc=linux-pci@vger.kernel.org \ --cc=lorenzo.pieralisi@arm.com \ --cc=robh@kernel.org \ --cc=tjoseph@cadence.com \ /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: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.