Message ID | 1402365399-5121-13-git-send-email-weiyang@linux.vnet.ibm.com (mailing list archive) |
---|---|
State | New, archived |
Delegated to: | Bjorn Helgaas |
Headers | show |
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 <weiyang@linux.vnet.ibm.com> >--- > 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 -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Mon, Jun 23, 2014 at 04:09:47PM +1000, Gavin Shan wrote: >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 <weiyang@linux.vnet.ibm.com> >>--- >> 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 :) I guess you want to name it to pnv_pcibios_sriov_resource_alignment()? pcibios_sriov_resource_alignment() is the general name for this function. If yes, this is changed. > >>+{ >>+ 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
On Mon, Jun 23, 2014 at 04:21:42PM +0800, Wei Yang wrote: >On Mon, Jun 23, 2014 at 04:09:47PM +1000, Gavin Shan wrote: >>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 <weiyang@linux.vnet.ibm.com> >>>--- >>> 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); Both lines exceed 80 lines here :) >>> #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 :) > >I guess you want to name it to pnv_pcibios_sriov_resource_alignment()? >pcibios_sriov_resource_alignment() is the general name for this function. > >If yes, this is changed. > Nope, What I mean is to have something like this: struct machdep_calls { : #ifdef CONFIG_PCI_IOV resource_size_t (*pci_sriov_resource_size)(struct pci_dev *dev, int resno); resource_size_t (*pci_sriov_resource_alignment)(struct pci_dev *dev, int resno, resource_size_t align); #endif : } ppc_md.pci_sriov_resource_size = pnv_pci_iov_res_size; ppc_md.pci_sriov_resource_alignment = pnv_pci_iov_res_alignment; The point is not to have prefix "__" for callbacks in "struct machdep_calls". ppc_md.__pci_sriov_resource_size is the first one that has prefix "__" >> >>>+{ >>>+ 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 -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Tue, Jun 24, 2014 at 09:29:22AM +1000, Gavin Shan wrote: >On Mon, Jun 23, 2014 at 04:21:42PM +0800, Wei Yang wrote: >>On Mon, Jun 23, 2014 at 04:09:47PM +1000, Gavin Shan wrote: >>>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 <weiyang@linux.vnet.ibm.com> >>>>--- >>>> 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); > >Both lines exceed 80 lines here :) > >>>> #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 :) >> >>I guess you want to name it to pnv_pcibios_sriov_resource_alignment()? >>pcibios_sriov_resource_alignment() is the general name for this function. >> >>If yes, this is changed. >> > >Nope, What I mean is to have something like this: > > struct machdep_calls { > : > #ifdef CONFIG_PCI_IOV > resource_size_t (*pci_sriov_resource_size)(struct pci_dev *dev, > int resno); > resource_size_t (*pci_sriov_resource_alignment)(struct pci_dev *dev, > int resno, > resource_size_t align); > #endif > : > } > > ppc_md.pci_sriov_resource_size = pnv_pci_iov_res_size; > ppc_md.pci_sriov_resource_alignment = pnv_pci_iov_res_alignment; > >The point is not to have prefix "__" for callbacks in "struct machdep_calls". >ppc_md.__pci_sriov_resource_size is the first one that has prefix "__" Yep, will change the name. > >>> >>>>+{ >>>>+ 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
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) +{ + 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);
This patch implements the pcibios_sriov_resource_alignment() on powernv platform. Signed-off-by: Wei Yang <weiyang@linux.vnet.ibm.com> --- 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(+)