From: Alexey Kardashevskiy <aik@ozlabs.ru>
To: Wei Yang <weiyang@linux.vnet.ibm.com>,
gwshan@linux.vnet.ibm.com, benh@kernel.crashing.org
Cc: linuxppc-dev@ozlabs.org
Subject: Re: [PATCH v3 4/6] powerpc/powernv: replace the hard coded boundary with gate
Date: Sat, 15 Aug 2015 20:27:04 +1000 [thread overview]
Message-ID: <55CF13F8.2070906@ozlabs.ru> (raw)
In-Reply-To: <1439475071-7001-5-git-send-email-weiyang@linux.vnet.ibm.com>
On 08/14/2015 12:11 AM, Wei Yang wrote:
> At the moment 64bit-prefetchable window can be maximum 64GB, which is
> currently got from device tree. This means that in shared mode the maximum
> supported VF BAR size is 64GB/256=256MB. While this size could exhaust the
> whole 64bit-prefetchable window. This is a design decision to set a
> boundary to 64MB of the VF BAR size. Since VF BAR size with 64MB would
> occupy a quarter of the 64bit-prefetchable window, this is affordable.
>
> This patch replaces magic limit of 64MB with (m64_segsize >> 1) and adds
> comment to explain the reason for it.
Having m64_segsize divided in _halves_ is also magic (or is it a "design
decision"?).
>
> Signed-off-by: Wei Yang <weiyang@linux.vnet.ibm.com>
> ---
> arch/powerpc/platforms/powernv/pci-ioda.c | 22 +++++++++++++++++-----
> 1 file changed, 17 insertions(+), 5 deletions(-)
>
> diff --git a/arch/powerpc/platforms/powernv/pci-ioda.c b/arch/powerpc/platforms/powernv/pci-ioda.c
> index 4da0f50..3e8c0b4 100644
> --- a/arch/powerpc/platforms/powernv/pci-ioda.c
> +++ b/arch/powerpc/platforms/powernv/pci-ioda.c
> @@ -2688,7 +2688,7 @@ static void pnv_pci_ioda_fixup_iov_resources(struct pci_dev *pdev)
> struct pnv_phb *phb;
> struct resource *res;
> int i;
> - resource_size_t size;
> + resource_size_t size, gate;
It should be:
const resource_size_t gate = phb->ioda.m64_segsize >> 1;
as it never changes in the function.
> struct pci_dn *pdn;
> int mul, total_vfs;
>
> @@ -2704,6 +2704,17 @@ static void pnv_pci_ioda_fixup_iov_resources(struct pci_dev *pdev)
>
> total_vfs = pci_sriov_get_totalvfs(pdev);
> mul = phb->ioda.total_pe;
> + /*
> + * If bigger than or equal to half of M64 segment size, just round up
> + * power of two.
> + *
> + * Generally, one M64 BAR maps one IOV BAR. To avoid conflict with
> + * other devices, IOV BAR size is expanded to be (total_pe *
> + * VF_BAR_size). When VF_BAR_size is half of M64 segment size , the
> + * expanded size would equal to half of the whole M64 Space size,
> + * which will exhaust the M64 Space and limit the system flexibility.
> + */
> + gate = phb->ioda.m64_segsize >> 1;
>
> for (i = 0; i < PCI_SRIOV_NUM_BARS; i++) {
> res = &pdev->resource[i + PCI_IOV_RESOURCES];
> @@ -2718,10 +2729,11 @@ static void pnv_pci_ioda_fixup_iov_resources(struct pci_dev *pdev)
>
> size = pci_iov_resource_size(pdev, i + PCI_IOV_RESOURCES);
>
> - /* bigger than 64M */
> - if (size > (1 << 26)) {
> - dev_info(&pdev->dev, "PowerNV: VF BAR%d: %pR IOV size is bigger than 64M, roundup power2\n",
> - i, res);
> + /* bigger than or equal to gate */
That multiline comment is better to be here, I think.
> + if (size >= gate) {
> + dev_info(&pdev->dev, "PowerNV: VF BAR%d: %pR IOV size "
> + "is bigger than %lld, roundup power2\n",
> + i, res, gate);
> mul = roundup_pow_of_two(total_vfs);
> pdn->m64_single_mode = true;
> break;
>
--
Alexey
next prev parent reply other threads:[~2015-08-15 10:27 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-08-13 14:11 [PATCH v3 0/6] Redesign SR-IOV on PowerNV Wei Yang
2015-08-13 14:11 ` [PATCH v3 1/6] powerpc/powernv: don't enable SRIOV when VF BAR has non 64bit-prefetchable BAR Wei Yang
2015-08-14 0:30 ` Gavin Shan
2015-08-13 14:11 ` [PATCH v3 2/6] powerpc/powernv: simplify the calculation of iov resource alignment Wei Yang
2015-08-14 1:04 ` Gavin Shan
2015-08-14 3:39 ` Wei Yang
2015-08-13 14:11 ` [PATCH v3 3/6] powerpc/powernv: use one M64 BAR in Single PE mode for one VF BAR Wei Yang
2015-08-14 0:52 ` Gavin Shan
2015-08-14 3:54 ` Wei Yang
2015-08-15 10:10 ` Alexey Kardashevskiy
2015-08-13 14:11 ` [PATCH v3 4/6] powerpc/powernv: replace the hard coded boundary with gate Wei Yang
2015-08-14 0:54 ` Gavin Shan
2015-08-15 10:27 ` Alexey Kardashevskiy [this message]
2015-08-17 2:21 ` Wei Yang
2015-08-13 14:11 ` [PATCH v3 5/6] powerpc/powernv: boundary the total VF BAR size instead of the individual one Wei Yang
2015-08-14 0:57 ` Gavin Shan
2015-08-15 10:21 ` Alexey Kardashevskiy
2015-08-13 14:11 ` [PATCH v3 6/6] powerpc/powernv: allocate sparse PE# when using M64 BAR in Single PE mode Wei Yang
2015-08-14 1:03 ` Gavin Shan
2015-08-14 3:57 ` Wei Yang
2015-08-15 10:27 ` Alexey Kardashevskiy
2015-08-15 23:28 ` Gavin Shan
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=55CF13F8.2070906@ozlabs.ru \
--to=aik@ozlabs.ru \
--cc=benh@kernel.crashing.org \
--cc=gwshan@linux.vnet.ibm.com \
--cc=linuxppc-dev@ozlabs.org \
--cc=weiyang@linux.vnet.ibm.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: 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.