Re: [PATCH V2 2/6] powerpc/powernv: simplify the calculation of iov resource
From: Gavin Shan <hidden>
Date: 2015-08-07 01:41:01
On Thu, Aug 06, 2015 at 09:49:02PM +0800, Wei Yang wrote:
On Thu, Aug 06, 2015 at 02:51:40PM +1000, Gavin Shan wrote:quoted
On Wed, Aug 05, 2015 at 09:24:59AM +0800, Wei Yang wrote:quoted
The alignment of IOV BAR on PowerNV platform is the total size of the IOV BAR. No matter whether the IOV BAR is truncated or not, the total size could be calculated by (vfs_expanded * VF size).s/VF size/VF BAR size I think the changelog would be more explicit: The alignment of IOV BAR on PowerNV platform is the total size of the IOV BAR, no matter whether the IOV BAR is extended with number of max VFs or number of max PE number (256). The alignment can be calculatednumber of max VFs is not correct. This should be roundup_pow_of_two(total_vfs). Others looks good to me.
Yes, You're correct.
quoted
by (vfs_expaned * VF_BAR_size).quoted
This patch simplifies the pnv_pci_iov_resource_alignment() by removing the first case. Signed-off-by: Wei Yang <redacted>Reviewed-by: Gavin Shan <redacted>quoted
--- arch/powerpc/platforms/powernv/pci-ioda.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-)diff --git a/arch/powerpc/platforms/powernv/pci-ioda.c b/arch/powerpc/platforms/powernv/pci-ioda.c index 9b41dba..7192e62 100644 --- a/arch/powerpc/platforms/powernv/pci-ioda.c +++ b/arch/powerpc/platforms/powernv/pci-ioda.c@@ -2987,12 +2987,16 @@ static resource_size_t pnv_pci_iov_resource_alignment(struct pci_dev *pdev,int resno) { struct pci_dn *pdn = pci_get_pdn(pdev); - resource_size_t align, iov_align; - - iov_align = resource_size(&pdev->resource[resno]); - if (iov_align) - return iov_align; + resource_size_t align; + /* + * On PowerNV platform, IOV BAR is mapped by M64 BAR to enable the + * SR-IOV. While from hardware perspective, the range mapped by M64 + * BAR should be size aligned. + * + * This function return the total IOV BAR size if expanded or just the + * individual size if not. + */ align = pci_iov_resource_size(pdev, resno); if (pdn->vfs_expanded) return pdn->vfs_expanded * align; -- 1.7.9.5-- Richard Yang Help you, Help me