From: Niklas Cassel <cassel@kernel.org>
To: Frank Li <Frank.Li@nxp.com>
Cc: "Manivannan Sadhasivam" <mani@kernel.org>,
"Krzysztof Wilczyński" <kwilczynski@kernel.org>,
"Kishon Vijay Abraham I" <kishon@kernel.org>,
"Bjorn Helgaas" <bhelgaas@google.com>,
"Jon Mason" <jdmason@kudzu.us>,
"Dave Jiang" <dave.jiang@intel.com>,
"Allen Hubbe" <allenbh@gmail.com>,
linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org,
ntb@lists.linux.dev, imx@lists.linux.dev
Subject: Re: [PATCH v3 1/3] PCI: endpoint: Add helper function pci_epf_get_bar_required_size()
Date: Fri, 26 Sep 2025 14:31:42 +0200 [thread overview]
Message-ID: <aNaHrj0rwLTtSRS3@ryzen> (raw)
In-Reply-To: <20250925-vntb_msi_doorbell-v3-1-ae0b0c93caae@nxp.com>
On Thu, Sep 25, 2025 at 01:01:47PM -0400, Frank Li wrote:
> Introduce pci_epf_get_bar_required_size() to retrieve the required BAR
> size and memory size. Prepare for adding support to set an MMIO address to
> a specific BAR.
>
> Use two variables 'aligned_bar_size' and 'aligned_mem_size' to avoid
> confuse.
s/confuse/confusion/
>
> No functional changes.
>
> Signed-off-by: Frank Li <Frank.Li@nxp.com>
> ---
> change in v3
> - change return value to int.
> - use two pointers return bar size aligned and memory start address aligned
> - update comments about why need memory align size. Actually iATU require
> start address match aligned requirement. Since kernel return align to
> size's address.
> - use two varible aligned_bar_size and aligned_mem_size to avoid confuse
> use 'size'.
>
> change in v2
> - new patch
> ---
> drivers/pci/endpoint/pci-epf-core.c | 84 +++++++++++++++++++++++--------------
> 1 file changed, 53 insertions(+), 31 deletions(-)
>
> diff --git a/drivers/pci/endpoint/pci-epf-core.c b/drivers/pci/endpoint/pci-epf-core.c
> index d54e18872aefc07c655c94c104a347328ff7a432..2cd0257831f9885a4381c087ed8f3326f5960966 100644
> --- a/drivers/pci/endpoint/pci-epf-core.c
> +++ b/drivers/pci/endpoint/pci-epf-core.c
> @@ -208,6 +208,49 @@ void pci_epf_remove_vepf(struct pci_epf *epf_pf, struct pci_epf *epf_vf)
> }
> EXPORT_SYMBOL_GPL(pci_epf_remove_vepf);
>
> +static int
> +pci_epf_get_bar_required_size(struct pci_epf *epf, size_t size,
> + size_t *aligned_bar_size,
> + size_t *aligned_mem_size,
> + enum pci_barno bar,
> + const struct pci_epc_features *epc_features,
> + enum pci_epc_interface_type type)
> +{
> + u64 bar_fixed_size = epc_features->bar[bar].fixed_size;
> + size_t align = epc_features->align;
> +
> + if (size < 128)
> + size = 128;
> +
> + /* According to PCIe base spec, min size for a resizable BAR is 1 MB. */
> + if (epc_features->bar[bar].type == BAR_RESIZABLE && size < SZ_1M)
> + size = SZ_1M;
> +
> + if (epc_features->bar[bar].type == BAR_FIXED && bar_fixed_size) {
> + if (size > bar_fixed_size) {
> + dev_err(&epf->dev,
> + "requested BAR size is larger than fixed size\n");
> + return -ENOMEM;
> + }
> + size = bar_fixed_size;
> + } else {
> + /* BAR size must be power of two */
> + size = roundup_pow_of_two(size);
> + }
> +
> + *aligned_bar_size = size;
I think this name is wrong.
The BAR size has not been aligned to anything.
The BAR size has to be a power of two, but that is a requirement of the PCI
specification, so that in an inherent property of a BAR.
Perhaps just name it size or bar_size?
Kind regards,
Niklas
next prev parent reply other threads:[~2025-09-26 12:31 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-09-25 17:01 [PATCH v3 0/3] pci: endpoint: vntb: add MSI doorbell support Frank Li
2025-09-25 17:01 ` [PATCH v3 1/3] PCI: endpoint: Add helper function pci_epf_get_bar_required_size() Frank Li
2025-09-26 12:31 ` Niklas Cassel [this message]
2025-09-26 14:56 ` Frank Li
2025-09-26 15:16 ` Niklas Cassel
2025-09-26 17:10 ` Frank Li
2025-09-26 17:14 ` Niklas Cassel
2025-09-25 17:01 ` [PATCH v3 2/3] PCI: endpoint: Add API pci_epf_assign_bar_space() Frank Li
2025-09-25 17:01 ` [PATCH v3 3/3] PCI: endpoint: pci-epf-vntb: Add MSI doorbell support Frank Li
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=aNaHrj0rwLTtSRS3@ryzen \
--to=cassel@kernel.org \
--cc=Frank.Li@nxp.com \
--cc=allenbh@gmail.com \
--cc=bhelgaas@google.com \
--cc=dave.jiang@intel.com \
--cc=imx@lists.linux.dev \
--cc=jdmason@kudzu.us \
--cc=kishon@kernel.org \
--cc=kwilczynski@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=mani@kernel.org \
--cc=ntb@lists.linux.dev \
/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
Be 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.