[PATCH] powernv: Use __printf in pe_level_printk

2016-07-14 Thread Joe Perches
Make the compiler detect format and argument mismatches.

Signed-off-by: Joe Perches 
---
 arch/powerpc/platforms/powernv/pci.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/powerpc/platforms/powernv/pci.h 
b/arch/powerpc/platforms/powernv/pci.h
index 3a97990..1c1a586 100644
--- a/arch/powerpc/platforms/powernv/pci.h
+++ b/arch/powerpc/platforms/powernv/pci.h
@@ -213,6 +213,7 @@ extern void pnv_pci_dma_bus_setup(struct pci_bus *bus);
 extern int pnv_setup_msi_irqs(struct pci_dev *pdev, int nvec, int type);
 extern void pnv_teardown_msi_irqs(struct pci_dev *pdev);
 
+__printf(3, 4)
 extern void pe_level_printk(const struct pnv_ioda_pe *pe, const char *level,
const char *fmt, ...);
 #define pe_err(pe, fmt, ...)   \
-- 
2.8.0.rc4.16.g56331f8

___
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev

Re: [PATCH] powernv: Use __printf in pe_level_printk

2016-07-21 Thread kbuild test robot
Hi,

[auto build test ERROR on v4.7-rc7]
[also build test ERROR on next-20160721]
[cannot apply to powerpc/next]
[if your patch is applied to the wrong git tree, please drop us a note to help 
improve the system]

url:
https://github.com/0day-ci/linux/commits/Joe-Perches/powernv-Use-__printf-in-pe_level_printk/20160715-171449
config: powerpc-ppc64_defconfig (attached as .config)
compiler: powerpc64-linux-gnu-gcc (Debian 5.4.0-6) 5.4.0 20160609
reproduce:
wget 
https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross
 -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
make.cross ARCH=powerpc 

All errors (new ones prefixed by >>):

   In file included from arch/powerpc/platforms/powernv/pci-ioda.c:49:0:
   arch/powerpc/platforms/powernv/pci-ioda.c: In function 
'pnv_ioda_setup_bus_PE':
>> arch/powerpc/platforms/powernv/pci-ioda.c:1067:15: error: format '%d' 
>> expects argument of type 'int', but argument 4 has type 'resource_size_t 
>> {aka long long unsigned int}' [-Werror=format=]
  pe_info(pe, "Secondary bus %d..%d associated with PE#%d\n",
  ^
   arch/powerpc/platforms/powernv/pci.h:224:33: note: in definition of macro 
'pe_info'
 pe_level_printk(pe, KERN_INFO, fmt, ##__VA_ARGS__)
^
   arch/powerpc/platforms/powernv/pci-ioda.c:1067:15: error: format '%d' 
expects argument of type 'int', but argument 5 has type 'resource_size_t {aka 
long long unsigned int}' [-Werror=format=]
  pe_info(pe, "Secondary bus %d..%d associated with PE#%d\n",
  ^
   arch/powerpc/platforms/powernv/pci.h:224:33: note: in definition of macro 
'pe_info'
 pe_level_printk(pe, KERN_INFO, fmt, ##__VA_ARGS__)
^
   arch/powerpc/platforms/powernv/pci-ioda.c:1070:15: error: format '%d' 
expects argument of type 'int', but argument 4 has type 'resource_size_t {aka 
long long unsigned int}' [-Werror=format=]
  pe_info(pe, "Secondary bus %d associated with PE#%d\n",
  ^
   arch/powerpc/platforms/powernv/pci.h:224:33: note: in definition of macro 
'pe_info'
 pe_level_printk(pe, KERN_INFO, fmt, ##__VA_ARGS__)
^
   arch/powerpc/platforms/powernv/pci-ioda.c: In function 
'pnv_pci_ioda1_setup_dma_pe':
>> arch/powerpc/platforms/powernv/pci-ioda.c:2100:15: error: format '%ld' 
>> expects argument of type 'long int', but argument 4 has type 'int64_t {aka 
>> long long int}' [-Werror=format=]
   pe_err(pe, " Failed to configure 32-bit TCE table,"
  ^
   arch/powerpc/platforms/powernv/pci.h:220:32: note: in definition of macro 
'pe_err'
 pe_level_printk(pe, KERN_ERR, fmt, ##__VA_ARGS__)
   ^
   arch/powerpc/platforms/powernv/pci-ioda.c: In function 
'pnv_pci_ioda2_set_window':
>> arch/powerpc/platforms/powernv/pci-ioda.c:2160:14: error: format '%x' 
>> expects argument of type 'unsigned int', but argument 7 has type 'long 
>> unsigned int' [-Werror=format=]
 pe_info(pe, "Setting up window#%d %llx..%llx pg=%x\n", num,
 ^
   arch/powerpc/platforms/powernv/pci.h:224:33: note: in definition of macro 
'pe_info'
 pe_level_printk(pe, KERN_INFO, fmt, ##__VA_ARGS__)
^
   arch/powerpc/platforms/powernv/pci-ioda.c:2176:14: error: format '%ld' 
expects argument of type 'long int', but argument 4 has type 'int64_t {aka long 
long int}' [-Werror=format=]
  pe_err(pe, "Failed to configure TCE table, err %ld\n", rc);
 ^
   arch/powerpc/platforms/powernv/pci.h:220:32: note: in definition of macro 
'pe_err'
 pe_level_printk(pe, KERN_ERR, fmt, ##__VA_ARGS__)
   ^
   cc1: all warnings being treated as errors

vim +1067 arch/powerpc/platforms/powernv/pci-ioda.c

184cd4a3 Benjamin Herrenschmidt 2011-11-15  1061pe->pbus = bus;
184cd4a3 Benjamin Herrenschmidt 2011-11-15  1062pe->pdev = NULL;
184cd4a3 Benjamin Herrenschmidt 2011-11-15  1063pe->mve_number = -1;
b918c62e Yinghai Lu 2012-05-17  1064pe->rid = 
bus->busn_res.start << 8;
184cd4a3 Benjamin Herrenschmidt 2011-11-15  1065  
fb446ad0 Gavin Shan 2012-08-20  1066if (all)
fb446ad0 Gavin Shan 2012-08-20 @1067pe_info(pe, 
"Secondary bus %d..%d associated with PE#%d\n",
1e916772 Gavin Shan 2016-05-03  1068
bus->busn_res.start, bus->busn_res.end, pe->pe_number);
fb446ad0 Gavin Shan 2012-08-20  1069else
fb446ad0 Gavin Shan 2012-08-20 @1070pe_info(pe, 
"Secondary bus %d associated with PE#%d\n",
1e916772 Gavin Shan 2016-05-03  1071
bus->busn_res.start, pe->pe_number);
184cd4a3 Benjamin Herrenschmidt 2011-11-15  1072  
184cd4a3 Benjamin Herrenschmidt 2011-11-15  1073   

Re: [PATCH] powernv: Use __printf in pe_level_printk

2016-07-22 Thread kbuild test robot
Hi,

[auto build test WARNING on v4.7-rc7]
[also build test WARNING on next-20160721]
[cannot apply to powerpc/next]
[if your patch is applied to the wrong git tree, please drop us a note to help 
improve the system]

url:
https://github.com/0day-ci/linux/commits/Joe-Perches/powernv-Use-__printf-in-pe_level_printk/20160715-171449
config: powerpc-allmodconfig (attached as .config)
compiler: powerpc64-linux-gnu-gcc (Debian 5.4.0-6) 5.4.0 20160609
reproduce:
wget 
https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross
 -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
make.cross ARCH=powerpc 

All warnings (new ones prefixed by >>):

   In file included from arch/powerpc/platforms/powernv/pci-ioda.c:49:0:
   arch/powerpc/platforms/powernv/pci-ioda.c: In function 
'pnv_ioda_deconfigure_pe':
>> arch/powerpc/platforms/powernv/pci-ioda.c:784:15: warning: format '%ld' 
>> expects argument of type 'long int', but argument 4 has type 'int64_t {aka 
>> long long int}' [-Wformat=]
  pe_warn(pe, "OPAL error %ld remove self from PELTV\n", rc);
  ^
   arch/powerpc/platforms/powernv/pci.h:222:36: note: in definition of macro 
'pe_warn'
 pe_level_printk(pe, KERN_WARNING, fmt, ##__VA_ARGS__)
   ^
   arch/powerpc/platforms/powernv/pci-ioda.c:788:14: warning: format '%ld' 
expects argument of type 'long int', but argument 4 has type 'int64_t {aka long 
long int}' [-Wformat=]
  pe_err(pe, "OPAL error %ld trying to setup PELT table\n", rc);
 ^
   arch/powerpc/platforms/powernv/pci.h:220:32: note: in definition of macro 
'pe_err'
 pe_level_printk(pe, KERN_ERR, fmt, ##__VA_ARGS__)
   ^
   arch/powerpc/platforms/powernv/pci-ioda.c: In function 
'pnv_ioda_setup_bus_PE':
>> arch/powerpc/platforms/powernv/pci-ioda.c:1067:15: warning: format '%d' 
>> expects argument of type 'int', but argument 4 has type 'resource_size_t 
>> {aka long long unsigned int}' [-Wformat=]
  pe_info(pe, "Secondary bus %d..%d associated with PE#%d\n",
  ^
   arch/powerpc/platforms/powernv/pci.h:224:33: note: in definition of macro 
'pe_info'
 pe_level_printk(pe, KERN_INFO, fmt, ##__VA_ARGS__)
^
   arch/powerpc/platforms/powernv/pci-ioda.c:1067:15: warning: format '%d' 
expects argument of type 'int', but argument 5 has type 'resource_size_t {aka 
long long unsigned int}' [-Wformat=]
  pe_info(pe, "Secondary bus %d..%d associated with PE#%d\n",
  ^
   arch/powerpc/platforms/powernv/pci.h:224:33: note: in definition of macro 
'pe_info'
 pe_level_printk(pe, KERN_INFO, fmt, ##__VA_ARGS__)
^
   arch/powerpc/platforms/powernv/pci-ioda.c:1070:15: warning: format '%d' 
expects argument of type 'int', but argument 4 has type 'resource_size_t {aka 
long long unsigned int}' [-Wformat=]
  pe_info(pe, "Secondary bus %d associated with PE#%d\n",
  ^
   arch/powerpc/platforms/powernv/pci.h:224:33: note: in definition of macro 
'pe_info'
 pe_level_printk(pe, KERN_INFO, fmt, ##__VA_ARGS__)
^
   arch/powerpc/platforms/powernv/pci-ioda.c: In function 
'pnv_pci_ioda2_release_dma_pe':
   arch/powerpc/platforms/powernv/pci-ioda.c:1358:15: warning: format '%ld' 
expects argument of type 'long int', but argument 4 has type 'int64_t {aka long 
long int}' [-Wformat=]
  pe_warn(pe, "OPAL error %ld release DMA window\n", rc);
  ^
   arch/powerpc/platforms/powernv/pci.h:222:36: note: in definition of macro 
'pe_warn'
 pe_level_printk(pe, KERN_WARNING, fmt, ##__VA_ARGS__)
   ^
   arch/powerpc/platforms/powernv/pci-ioda.c: In function 
'pnv_pci_ioda1_setup_dma_pe':
   arch/powerpc/platforms/powernv/pci-ioda.c:2100:15: warning: format '%ld' 
expects argument of type 'long int', but argument 4 has type 'int64_t {aka long 
long int}' [-Wformat=]
   pe_err(pe, " Failed to configure 32-bit TCE table,"
  ^
   arch/powerpc/platforms/powernv/pci.h:220:32: note: in definition of macro 
'pe_err'
 pe_level_printk(pe, KERN_ERR, fmt, ##__VA_ARGS__)
   ^
   arch/powerpc/platforms/powernv/pci-ioda.c: In function 
'pnv_pci_ioda2_set_window':
>> arch/powerpc/platforms/powernv/pci-ioda.c:2160:14: warning: format '%x' 
>> expects argument of type 'unsigned int', but argument 7 has type 'long 
>> unsigned int' [-Wformat=]
 pe_info(pe, "Setting up window#%d %llx..%llx pg=%x\n", num,
 ^
   arch/powerpc/platforms/powernv/pci.h:224:33: note: in definition of macro 
'pe_info'
 pe_level_printk(pe, KERN_INFO, fmt, ##__VA_ARGS__)
^
   arch/powerpc/platforms/powernv/pci-ioda.c:2176:14: warning: format '%ld' 
expects argument of type 'long int', b

Re: [PATCH] powernv: Use __printf in pe_level_printk

2016-07-14 Thread Michael Ellerman
Joe Perches  writes:

> Make the compiler detect format and argument mismatches.
>
> Signed-off-by: Joe Perches 
> ---
>  arch/powerpc/platforms/powernv/pci.h | 1 +
>  1 file changed, 1 insertion(+)
>
> diff --git a/arch/powerpc/platforms/powernv/pci.h 
> b/arch/powerpc/platforms/powernv/pci.h
> index 3a97990..1c1a586 100644
> --- a/arch/powerpc/platforms/powernv/pci.h
> +++ b/arch/powerpc/platforms/powernv/pci.h
> @@ -213,6 +213,7 @@ extern void pnv_pci_dma_bus_setup(struct pci_bus *bus);
>  extern int pnv_setup_msi_irqs(struct pci_dev *pdev, int nvec, int type);
>  extern void pnv_teardown_msi_irqs(struct pci_dev *pdev);
>  
> +__printf(3, 4)
>  extern void pe_level_printk(const struct pnv_ioda_pe *pe, const char *level,
>   const char *fmt, ...);

Thanks, but it breaks the build due to lots of new warnings.

We'll have to fix those before merging it.

cheers

In file included from ../arch/powerpc/platforms/powernv/pci-ioda.c:49:0:
../arch/powerpc/platforms/powernv/pci-ioda.c: In function 
‘pnv_ioda_deconfigure_pe’:
../arch/powerpc/platforms/powernv/pci-ioda.c:784:15: error: format ‘%ld’ 
expects argument of type ‘long int’, but argument 4 has type ‘int64_t {aka long 
long int}’ [-Werror=format=]
   pe_warn(pe, "OPAL error %ld remove self from PELTV\n", rc);
   ^
../arch/powerpc/platforms/powernv/pci.h:233:36: note: in definition of macro 
‘pe_warn’
  pe_level_printk(pe, KERN_WARNING, fmt, ##__VA_ARGS__)
^~~
../arch/powerpc/platforms/powernv/pci-ioda.c:788:14: error: format ‘%ld’ 
expects argument of type ‘long int’, but argument 4 has type ‘int64_t {aka long 
long int}’ [-Werror=format=]
   pe_err(pe, "OPAL error %ld trying to setup PELT table\n", rc);
  ^
../arch/powerpc/platforms/powernv/pci.h:231:32: note: in definition of macro 
‘pe_err’
  pe_level_printk(pe, KERN_ERR, fmt, ##__VA_ARGS__)
^~~
../arch/powerpc/platforms/powernv/pci-ioda.c: In function 
‘pnv_ioda_setup_bus_PE’:
../arch/powerpc/platforms/powernv/pci-ioda.c:1095:15: error: format ‘%d’ 
expects argument of type ‘int’, but argument 4 has type ‘resource_size_t {aka 
long long unsigned int}’ [-Werror=format=]
   pe_info(pe, "Secondary bus %d..%d associated with PE#%d\n",
   ^
../arch/powerpc/platforms/powernv/pci.h:235:33: note: in definition of macro 
‘pe_info’
  pe_level_printk(pe, KERN_INFO, fmt, ##__VA_ARGS__)
 ^~~
../arch/powerpc/platforms/powernv/pci-ioda.c:1095:15: error: format ‘%d’ 
expects argument of type ‘int’, but argument 5 has type ‘resource_size_t {aka 
long long unsigned int}’ [-Werror=format=]
   pe_info(pe, "Secondary bus %d..%d associated with PE#%d\n",
   ^
../arch/powerpc/platforms/powernv/pci.h:235:33: note: in definition of macro 
‘pe_info’
  pe_level_printk(pe, KERN_INFO, fmt, ##__VA_ARGS__)
 ^~~
../arch/powerpc/platforms/powernv/pci-ioda.c:1098:15: error: format ‘%d’ 
expects argument of type ‘int’, but argument 4 has type ‘resource_size_t {aka 
long long unsigned int}’ [-Werror=format=]
   pe_info(pe, "Secondary bus %d associated with PE#%d\n",
   ^
../arch/powerpc/platforms/powernv/pci.h:235:33: note: in definition of macro 
‘pe_info’
  pe_level_printk(pe, KERN_INFO, fmt, ##__VA_ARGS__)
 ^~~
../arch/powerpc/platforms/powernv/pci-ioda.c: In function 
‘pnv_pci_ioda2_release_dma_pe’:
../arch/powerpc/platforms/powernv/pci-ioda.c:1351:15: error: format ‘%ld’ 
expects argument of type ‘long int’, but argument 4 has type ‘int64_t {aka long 
long int}’ [-Werror=format=]
   pe_warn(pe, "OPAL error %ld release DMA window\n", rc);
   ^
../arch/powerpc/platforms/powernv/pci.h:233:36: note: in definition of macro 
‘pe_warn’
  pe_level_printk(pe, KERN_WARNING, fmt, ##__VA_ARGS__)
^~~
../arch/powerpc/platforms/powernv/pci-ioda.c: In function 
‘pnv_pci_ioda1_setup_dma_pe’:
../arch/powerpc/platforms/powernv/pci-ioda.c:2093:15: error: format ‘%ld’ 
expects argument of type ‘long int’, but argument 4 has type ‘int64_t {aka long 
long int}’ [-Werror=format=]
pe_err(pe, " Failed to configure 32-bit TCE table,"
   ^
../arch/powerpc/platforms/powernv/pci.h:231:32: note: in definition of macro 
‘pe_err’
  pe_level_printk(pe, KERN_ERR, fmt, ##__VA_ARGS__)
^~~
../arch/powerpc/platforms/powernv/pci-ioda.c: In function 
‘pnv_pci_ioda2_set_window’:
../arch/powerpc/platforms/powernv/pci-ioda.c:2153:14: error: format ‘%x’ 
expects argument of type ‘unsigned int’, but argument 7 has type ‘long unsigned 
int’ [-Werror=format=]
  pe_info(pe, "Setting up window#%d %llx..%llx pg=%x\n", num,
  ^
../arch/powerpc/platforms/powernv/pci.h:235:33: note: in definition of macro 
‘pe_info’
  pe_level_printk(pe, KERN_INFO, fmt, ##__VA_ARGS__)
 ^~~
../arch/powerpc/platforms/power

Re: [PATCH] powernv: Use __printf in pe_level_printk

2016-07-14 Thread Joe Perches
On Fri, 2016-07-15 at 14:36 +1000, Michael Ellerman wrote:
> Joe Perches  writes:
> 
> > 
> > Make the compiler detect format and argument mismatches.
> > 
> > Signed-off-by: Joe Perches 
> > ---
> >  arch/powerpc/platforms/powernv/pci.h | 1 +
> >  1 file changed, 1 insertion(+)
> > 
> > diff --git a/arch/powerpc/platforms/powernv/pci.h
> > b/arch/powerpc/platforms/powernv/pci.h
> > index 3a97990..1c1a586 100644
> > --- a/arch/powerpc/platforms/powernv/pci.h
> > +++ b/arch/powerpc/platforms/powernv/pci.h
> > @@ -213,6 +213,7 @@ extern void pnv_pci_dma_bus_setup(struct pci_bus
> > *bus);
> >  extern int pnv_setup_msi_irqs(struct pci_dev *pdev, int nvec, int
> > type);
> >  extern void pnv_teardown_msi_irqs(struct pci_dev *pdev);
> >  
> > +__printf(3, 4)
> >  extern void pe_level_printk(const struct pnv_ioda_pe *pe, const
> > char *level,
> >     const char *fmt, ...);
> Thanks, but it breaks the build due to lots of new warnings.
> 
> We'll have to fix those before merging it.

Good.  Are you going to fix those?

I thought I did a powerpc defconfig build of arch/powerpc/
and I believe it finished without error, but I'm pleased
it found some defects.

I think it's now marked "rejected" in patchwork.
Perhaps it'd better to mark it "deferred" instead.
___
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev

Re: [PATCH] powernv: Use __printf in pe_level_printk

2016-07-14 Thread Michael Ellerman
Joe Perches  writes:

> On Fri, 2016-07-15 at 14:36 +1000, Michael Ellerman wrote:
>> Joe Perches  writes:
>> > 
>> > diff --git a/arch/powerpc/platforms/powernv/pci.h
>> > b/arch/powerpc/platforms/powernv/pci.h
>> > index 3a97990..1c1a586 100644
>> > --- a/arch/powerpc/platforms/powernv/pci.h
>> > +++ b/arch/powerpc/platforms/powernv/pci.h
>> > @@ -213,6 +213,7 @@ extern void pnv_pci_dma_bus_setup(struct pci_bus
>> > *bus);
>> >  extern int pnv_setup_msi_irqs(struct pci_dev *pdev, int nvec, int
>> > type);
>> >  extern void pnv_teardown_msi_irqs(struct pci_dev *pdev);
>> >  
>> > +__printf(3, 4)
>> >  extern void pe_level_printk(const struct pnv_ioda_pe *pe, const
>> > char *level,
>> >    const char *fmt, ...);
>> Thanks, but it breaks the build due to lots of new warnings.
>> 
>> We'll have to fix those before merging it.
>
> Good.  Are you going to fix those?

Not this month.

> I thought I did a powerpc defconfig build of arch/powerpc/
> and I believe it finished without error, but I'm pleased
> it found some defects.

Hmm, I'd be surprised, but it might depend on the exact config /
compiler etc.

> I think it's now marked "rejected" in patchwork.
> Perhaps it'd better to mark it "deferred" instead.

I can do that. Though realistically I'm unlikely to go back and find it.

cheers
___
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev