From: Kishon Vijay Abraham I <kishon@ti.com> To: Bjorn Helgaas <bhelgaas@google.com>, Jonathan Corbet <corbet@lwn.net>, Kishon Vijay Abraham I <kishon@ti.com>, Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>, Arnd Bergmann <arnd@arndb.de>, Jon Mason <jdmason@kudzu.us>, Dave Jiang <dave.jiang@intel.com>, Allen Hubbe <allenbh@gmail.com>, Tom Joseph <tjoseph@cadence.com>, Rob Herring <robh@kernel.org> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>, <linux-pci@vger.kernel.org>, <linux-doc@vger.kernel.org>, <linux-kernel@vger.kernel.org>, <linux-ntb@googlegroups.com> Subject: [PATCH v5 02/17] PCI: endpoint: Make *_get_first_free_bar() take into account 64 bit BAR Date: Fri, 18 Sep 2020 12:12:12 +0530 [thread overview] Message-ID: <20200918064227.1463-3-kishon@ti.com> (raw) In-Reply-To: <20200918064227.1463-1-kishon@ti.com> pci_epc_get_first_free_bar() uses only "reserved_bar" member in epc_features to get the first unreserved BAR. However if the reserved BAR is also a 64-bit BAR, then the next BAR shouldn't be returned (since 64-bit BAR uses two BARs). Make pci_epc_get_first_free_bar() take into account 64 bit BAR while returning the first free unreserved BAR. Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com> --- drivers/pci/endpoint/pci-epc-core.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/drivers/pci/endpoint/pci-epc-core.c b/drivers/pci/endpoint/pci-epc-core.c index cadd3db0cbb0..25e57672e1a1 100644 --- a/drivers/pci/endpoint/pci-epc-core.c +++ b/drivers/pci/endpoint/pci-epc-core.c @@ -93,12 +93,20 @@ EXPORT_SYMBOL_GPL(pci_epc_get); unsigned int pci_epc_get_first_free_bar(const struct pci_epc_features *epc_features) { - int free_bar; + unsigned long free_bar; if (!epc_features) return 0; - free_bar = ffz(epc_features->reserved_bar); + /* Find if the reserved BAR is also a 64-bit BAR */ + free_bar = epc_features->reserved_bar & epc_features->bar_fixed_64bit; + + /* Set the adjacent bit if the reserved BAR is also a 64-bit BAR */ + free_bar <<= 1; + free_bar |= epc_features->reserved_bar; + + /* Now find the free BAR */ + free_bar = ffz(free_bar); if (free_bar > 5) return 0; -- 2.17.1
WARNING: multiple messages have this Message-ID (diff)
From: Kishon Vijay Abraham I <kishon@ti.com> To: Bjorn Helgaas <bhelgaas@google.com>, Jonathan Corbet <corbet@lwn.net>, Kishon Vijay Abraham I <kishon@ti.com>, Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>, Arnd Bergmann <arnd@arndb.de>, Jon Mason <jdmason@kudzu.us>, Dave Jiang <dave.jiang@intel.com>, Allen Hubbe <allenbh@gmail.com>, Tom Joseph <tjoseph@cadence.com>, Rob Herring <robh@kernel.org> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>, linux-pci@vger.kernel.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-ntb@googlegroups.com Subject: [PATCH v5 02/17] PCI: endpoint: Make *_get_first_free_bar() take into account 64 bit BAR Date: Fri, 18 Sep 2020 12:12:12 +0530 [thread overview] Message-ID: <20200918064227.1463-3-kishon@ti.com> (raw) In-Reply-To: <20200918064227.1463-1-kishon@ti.com> pci_epc_get_first_free_bar() uses only "reserved_bar" member in epc_features to get the first unreserved BAR. However if the reserved BAR is also a 64-bit BAR, then the next BAR shouldn't be returned (since 64-bit BAR uses two BARs). Make pci_epc_get_first_free_bar() take into account 64 bit BAR while returning the first free unreserved BAR. Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com> --- drivers/pci/endpoint/pci-epc-core.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/drivers/pci/endpoint/pci-epc-core.c b/drivers/pci/endpoint/pci-epc-core.c index cadd3db0cbb0..25e57672e1a1 100644 --- a/drivers/pci/endpoint/pci-epc-core.c +++ b/drivers/pci/endpoint/pci-epc-core.c @@ -93,12 +93,20 @@ EXPORT_SYMBOL_GPL(pci_epc_get); unsigned int pci_epc_get_first_free_bar(const struct pci_epc_features *epc_features) { - int free_bar; + unsigned long free_bar; if (!epc_features) return 0; - free_bar = ffz(epc_features->reserved_bar); + /* Find if the reserved BAR is also a 64-bit BAR */ + free_bar = epc_features->reserved_bar & epc_features->bar_fixed_64bit; + + /* Set the adjacent bit if the reserved BAR is also a 64-bit BAR */ + free_bar <<= 1; + free_bar |= epc_features->reserved_bar; + + /* Now find the free BAR */ + free_bar = ffz(free_bar); if (free_bar > 5) return 0; -- 2.17.1
next prev parent reply other threads:[~2020-09-18 6:43 UTC|newest] Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-09-18 6:42 [PATCH v5 00/17] Implement NTB Controller using multiple PCI EP Kishon Vijay Abraham I 2020-09-18 6:42 ` Kishon Vijay Abraham I 2020-09-18 6:42 ` [PATCH v5 01/17] Documentation: PCI: Add specification for the *PCI NTB* function device Kishon Vijay Abraham I 2020-09-18 6:42 ` Kishon Vijay Abraham I 2020-09-18 6:42 ` Kishon Vijay Abraham I [this message] 2020-09-18 6:42 ` [PATCH v5 02/17] PCI: endpoint: Make *_get_first_free_bar() take into account 64 bit BAR Kishon Vijay Abraham I 2020-09-18 6:42 ` [PATCH v5 03/17] PCI: endpoint: Add helper API to get the 'next' unreserved BAR Kishon Vijay Abraham I 2020-09-18 6:42 ` Kishon Vijay Abraham I 2020-09-18 6:42 ` [PATCH v5 04/17] PCI: endpoint: Make *_free_bar() to return error codes on failure Kishon Vijay Abraham I 2020-09-18 6:42 ` Kishon Vijay Abraham I 2020-09-18 6:42 ` [PATCH v5 05/17] PCI: endpoint: Remove unused pci_epf_match_device() Kishon Vijay Abraham I 2020-09-18 6:42 ` Kishon Vijay Abraham I 2020-09-18 6:42 ` [PATCH v5 06/17] PCI: endpoint: Add support to associate secondary EPC with EPF Kishon Vijay Abraham I 2020-09-18 6:42 ` Kishon Vijay Abraham I 2020-09-18 6:42 ` [PATCH v5 07/17] PCI: endpoint: Add support in configfs to associate two EPCs " Kishon Vijay Abraham I 2020-09-18 6:42 ` Kishon Vijay Abraham I 2020-09-18 6:42 ` [PATCH v5 08/17] PCI: endpoint: Add pci_epc_ops to map MSI irq Kishon Vijay Abraham I 2020-09-18 6:42 ` Kishon Vijay Abraham I 2020-09-18 6:42 ` [PATCH v5 09/17] PCI: endpoint: Add pci_epf_ops for epf drivers to expose function specific attrs Kishon Vijay Abraham I 2020-09-18 6:42 ` Kishon Vijay Abraham I 2020-09-18 6:42 ` [PATCH v5 10/17] PCI: endpoint: Allow user to create sub-directory of 'EPF Device' directory Kishon Vijay Abraham I 2020-09-18 6:42 ` Kishon Vijay Abraham I 2020-09-18 6:42 ` [PATCH v5 11/17] PCI: cadence: Implement ->msi_map_irq() ops Kishon Vijay Abraham I 2020-09-18 6:42 ` Kishon Vijay Abraham I 2020-09-18 6:42 ` [PATCH v5 12/17] PCI: endpoint: Add EP function driver to provide NTB functionality Kishon Vijay Abraham I 2020-09-18 6:42 ` Kishon Vijay Abraham I 2020-09-18 16:17 ` Randy Dunlap 2020-09-21 4:34 ` Kishon Vijay Abraham I 2020-09-21 4:34 ` Kishon Vijay Abraham I 2020-09-18 6:42 ` [PATCH v5 13/17] PCI: Add TI J721E device to pci ids Kishon Vijay Abraham I 2020-09-18 6:42 ` Kishon Vijay Abraham I 2020-09-18 6:42 ` [PATCH v5 14/17] NTB: Add support for EPF PCI-Express Non-Transparent Bridge Kishon Vijay Abraham I 2020-09-18 6:42 ` Kishon Vijay Abraham I 2020-09-18 16:15 ` Randy Dunlap 2020-09-21 4:52 ` Kishon Vijay Abraham I 2020-09-21 4:52 ` Kishon Vijay Abraham I 2020-09-21 4:58 ` Randy Dunlap 2020-09-18 6:42 ` [PATCH v5 15/17] NTB: tool: Enable the NTB/PCIe link on the local or remote side of bridge Kishon Vijay Abraham I 2020-09-18 6:42 ` Kishon Vijay Abraham I 2020-09-18 6:42 ` [PATCH v5 16/17] Documentation: PCI: Add configfs binding documentation for pci-ntb endpoint function Kishon Vijay Abraham I 2020-09-18 6:42 ` Kishon Vijay Abraham I 2020-09-18 6:42 ` [PATCH v5 17/17] Documentation: PCI: Add userguide for PCI endpoint NTB function Kishon Vijay Abraham I 2020-09-18 6:42 ` 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=20200918064227.1463-3-kishon@ti.com \ --to=kishon@ti.com \ --cc=allenbh@gmail.com \ --cc=arnd@arndb.de \ --cc=bhelgaas@google.com \ --cc=corbet@lwn.net \ --cc=dave.jiang@intel.com \ --cc=gregkh@linuxfoundation.org \ --cc=jdmason@kudzu.us \ --cc=linux-doc@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-ntb@googlegroups.com \ --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.