From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from e23smtp08.au.ibm.com (e23smtp08.au.ibm.com [202.81.31.141]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id ADD861A001C for ; Mon, 23 Jun 2014 16:09:51 +1000 (EST) Received: from /spool/local by e23smtp08.au.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Mon, 23 Jun 2014 16:09:50 +1000 Received: from d23relay04.au.ibm.com (d23relay04.au.ibm.com [9.190.234.120]) by d23dlp03.au.ibm.com (Postfix) with ESMTP id E4DBE357804F for ; Mon, 23 Jun 2014 16:09:47 +1000 (EST) Received: from d23av02.au.ibm.com (d23av02.au.ibm.com [9.190.235.138]) by d23relay04.au.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id s5N5rSMw39649426 for ; Mon, 23 Jun 2014 15:53:28 +1000 Received: from d23av02.au.ibm.com (localhost [127.0.0.1]) by d23av02.au.ibm.com (8.14.4/8.14.4/NCO v10.0 AVout) with ESMTP id s5N69kQ9015987 for ; Mon, 23 Jun 2014 16:09:47 +1000 Date: Mon, 23 Jun 2014 16:09:47 +1000 From: Gavin Shan To: Wei Yang Subject: Re: [RFC PATCH V3 12/17] powerpc/powernv: implement pcibios_sriov_resource_alignment on powernv Message-ID: <20140623060947.GB12055@shangw> References: <1402365399-5121-1-git-send-email-weiyang@linux.vnet.ibm.com> <1402365399-5121-13-git-send-email-weiyang@linux.vnet.ibm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii In-Reply-To: <1402365399-5121-13-git-send-email-weiyang@linux.vnet.ibm.com> Cc: benh@au1.ibm.com, linux-pci@vger.kernel.org, gwshan@linux.vnet.ibm.com, yan@linux.vnet.ibm.com, bhelgaas@google.com, qiudayu@linux.vnet.ibm.com, linuxppc-dev@lists.ozlabs.org Reply-To: Gavin Shan List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , On Tue, Jun 10, 2014 at 09:56:34AM +0800, Wei Yang wrote: >This patch implements the pcibios_sriov_resource_alignment() on powernv >platform. > >Signed-off-by: Wei Yang >--- > arch/powerpc/include/asm/machdep.h | 1 + > arch/powerpc/kernel/pci-common.c | 8 ++++++++ > arch/powerpc/platforms/powernv/pci-ioda.c | 17 +++++++++++++++++ > 3 files changed, 26 insertions(+) > >diff --git a/arch/powerpc/include/asm/machdep.h b/arch/powerpc/include/asm/machdep.h >index 2f2e770..3bbc55f 100644 >--- a/arch/powerpc/include/asm/machdep.h >+++ b/arch/powerpc/include/asm/machdep.h >@@ -242,6 +242,7 @@ struct machdep_calls { > resource_size_t (*pcibios_window_alignment)(struct pci_bus *, unsigned long type); > #ifdef CONFIG_PCI_IOV > resource_size_t (*__pci_sriov_resource_size)(struct pci_dev *, int resno); >+ resource_size_t (*__pci_sriov_resource_alignment)(struct pci_dev *, int resno, resource_size_t align); > #endif /* CONFIG_PCI_IOV */ > > /* Called to shutdown machine specific hardware not already controlled >diff --git a/arch/powerpc/kernel/pci-common.c b/arch/powerpc/kernel/pci-common.c >index c4e2e92..35345ac 100644 >--- a/arch/powerpc/kernel/pci-common.c >+++ b/arch/powerpc/kernel/pci-common.c >@@ -128,6 +128,14 @@ resource_size_t pcibios_sriov_resource_size(struct pci_dev *pdev, int resno) > > return 0; > } >+ >+resource_size_t pcibios_sriov_resource_alignment(struct pci_dev *pdev, int resno, resource_size_t align) >+{ >+ if (ppc_md.__pci_sriov_resource_alignment) >+ return ppc_md.__pci_sriov_resource_alignment(pdev, resno, align); >+ >+ return 0; >+} > #endif /* CONFIG_PCI_IOV */ > > static resource_size_t pcibios_io_size(const struct pci_controller *hose) >diff --git a/arch/powerpc/platforms/powernv/pci-ioda.c b/arch/powerpc/platforms/powernv/pci-ioda.c >index 7dfad6a..b0ac851 100644 >--- a/arch/powerpc/platforms/powernv/pci-ioda.c >+++ b/arch/powerpc/platforms/powernv/pci-ioda.c >@@ -1573,6 +1573,22 @@ static resource_size_t __pnv_pci_sriov_resource_size(struct pci_dev *pdev, int r > > return size; > } >+ >+static resource_size_t __pnv_pci_sriov_resource_alignment(struct pci_dev *pdev, int resno, >+ resource_size_t align) The function could be "pcibios_sriov_resource_alignment()", but it's not a big deal. If you prefer the original one, then keep it :) >+{ >+ struct pci_dn *pdn = pci_get_pdn(pdev); >+ resource_size_t iov_align; >+ >+ iov_align = resource_size(&pdev->resource[resno]); >+ if (iov_align) >+ return iov_align; >+ >+ if (pdn->vfs) >+ return pdn->vfs * align; >+ >+ return align; >+} > #endif /* CONFIG_PCI_IOV */ > > /* Prevent enabling devices for which we couldn't properly >@@ -1777,6 +1793,7 @@ void __init pnv_pci_init_ioda_phb(struct device_node *np, > ppc_md.pcibios_window_alignment = pnv_pci_window_alignment; > #ifdef CONFIG_PCI_IOV > ppc_md.__pci_sriov_resource_size = __pnv_pci_sriov_resource_size; >+ ppc_md.__pci_sriov_resource_alignment = __pnv_pci_sriov_resource_alignment; > #endif /* CONFIG_PCI_IOV */ > pci_add_flags(PCI_REASSIGN_ALL_RSRC); > Thanks, Gavin