diff mbox series

x86/pci: Add missing forward declaration for pci_numachip_init()

Message ID 20210729234059.1509820-1-kw@linux.com
State New
Headers show
Series x86/pci: Add missing forward declaration for pci_numachip_init() | expand

Commit Message

Krzysztof Wilczyński July 29, 2021, 11:40 p.m. UTC
At the moment, the function pci_numachip_init() is defined in the
numachip.c file.  Since this function has users outside of this file,
add missing foward declaration to the pci_x86.h file.

This resolves the following sparse and compile time warning:

  arch/x86/pci/numachip.c:108:12: warning: no previous prototype for function 'pci_numachip_init' [-Wmissing-prototypes]
  arch/x86/pci/numachip.c:108:12: warning: symbol 'pci_numachip_init' was not declared. Should it be static?

Signed-off-by: Krzysztof Wilczyński <kw@linux.com>
---
 arch/x86/include/asm/pci_x86.h | 4 ++++
 1 file changed, 4 insertions(+)

Comments

Bjorn Helgaas July 30, 2021, 9:19 p.m. UTC | #1
On Thu, Jul 29, 2021 at 11:40:59PM +0000, Krzysztof Wilczyński wrote:
> At the moment, the function pci_numachip_init() is defined in the
> numachip.c file.  Since this function has users outside of this file,
> add missing foward declaration to the pci_x86.h file.
> 
> This resolves the following sparse and compile time warning:
> 
>   arch/x86/pci/numachip.c:108:12: warning: no previous prototype for function 'pci_numachip_init' [-Wmissing-prototypes]
>   arch/x86/pci/numachip.c:108:12: warning: symbol 'pci_numachip_init' was not declared. Should it be static?

Thanks for worrying about warnings like this.  They're small but
important.

What should be done with the pci_numachip_init() declaration in
arch/x86/include/asm/numachip/numachip.h?  It doesn't seem like we
should have *two* declarations.

The one in arch/x86/include/asm/numachip/numachip.h is:

  extern int __init pci_numachip_init(void);

I'm not enough of a C language lawyer to know whether "__init" in a
declaration is useful.  It doesn't *seem* like it would be useful
since this is not a definition and the compiler isn't generating code
here.  But "git grep __init include/ arch/*/include" finds quite a few
of them.

> Signed-off-by: Krzysztof Wilczyński <kw@linux.com>
> ---
>  arch/x86/include/asm/pci_x86.h | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/arch/x86/include/asm/pci_x86.h b/arch/x86/include/asm/pci_x86.h
> index 490411dba438..906f40cae3fc 100644
> --- a/arch/x86/include/asm/pci_x86.h
> +++ b/arch/x86/include/asm/pci_x86.h
> @@ -50,6 +50,10 @@ enum pci_bf_sort_state {
>  	pci_dmi_bf,
>  };
>  
> +/* numachip.c */
> +
> +int pci_numachip_init(void);
> +
>  /* pci-i386.c */
>  
>  void pcibios_resource_survey(void);
> -- 
> 2.32.0
>
Thomas Gleixner Aug. 12, 2021, 3:05 p.m. UTC | #2
On Thu, Jul 29 2021 at 23:40, Krzysztof Wilczyński wrote:
> At the moment, the function pci_numachip_init() is defined in the
> numachip.c file.  Since this function has users outside of this file,
> add missing foward declaration to the pci_x86.h file.
>
> This resolves the following sparse and compile time warning:
>
>   arch/x86/pci/numachip.c:108:12: warning: no previous prototype for function 'pci_numachip_init' [-Wmissing-prototypes]
>   arch/x86/pci/numachip.c:108:12: warning: symbol 'pci_numachip_init'
>   was not declared. Should it be static?

No. arch/x86/pci/numachip.c simply lacks

 #include <asm/numachip/numachip.h>

Thanks,

        tglx
Thomas Gleixner Aug. 12, 2021, 3:14 p.m. UTC | #3
On Fri, Jul 30 2021 at 16:19, Bjorn Helgaas wrote:
> On Thu, Jul 29, 2021 at 11:40:59PM +0000, Krzysztof Wilczyński wrote:
> What should be done with the pci_numachip_init() declaration in
> arch/x86/include/asm/numachip/numachip.h?  It doesn't seem like we
> should have *two* declarations.

Right. Include that file in the C file and be done with it.

> The one in arch/x86/include/asm/numachip/numachip.h is:
>
>   extern int __init pci_numachip_init(void);
>
> I'm not enough of a C language lawyer to know whether "__init" in a
> declaration is useful.  It doesn't *seem* like it would be useful
> since this is not a definition and the compiler isn't generating code
> here.  But "git grep __init include/ arch/*/include" finds quite a few
> of them.

__init on the prototype is not having any effect except perhaps
documentary value at least with current compilers.

The attribute magic is vague in both the C specification and the
compiler manuals, but that might change some day in the future. But in
which direction is unknown :)

Thanks,

        tglx
Krzysztof Wilczyński Aug. 12, 2021, 4:11 p.m. UTC | #4
Hi Thomas,

[...]
> > What should be done with the pci_numachip_init() declaration in
> > arch/x86/include/asm/numachip/numachip.h?  It doesn't seem like we
> > should have *two* declarations.
> 
> Right. Include that file in the C file and be done with it.

I will send v2 shortly with the correct header file included.

Thank you both!

	Krzysztof
diff mbox series

Patch

diff --git a/arch/x86/include/asm/pci_x86.h b/arch/x86/include/asm/pci_x86.h
index 490411dba438..906f40cae3fc 100644
--- a/arch/x86/include/asm/pci_x86.h
+++ b/arch/x86/include/asm/pci_x86.h
@@ -50,6 +50,10 @@  enum pci_bf_sort_state {
 	pci_dmi_bf,
 };
 
+/* numachip.c */
+
+int pci_numachip_init(void);
+
 /* pci-i386.c */
 
 void pcibios_resource_survey(void);