m68k: add missing types to asm/irq.h

Message ID 5971770.lOV4Wx5bFT@eto.sf-tec.de
State New
Headers
Series m68k: add missing types to asm/irq.h |

Commit Message

Rolf Eike Beer Sept. 17, 2023, 9:18 a.m. UTC
  As reported in f8b648bf6628 ("net: sunhme: move asm includes to below linux
includes") when including this <asm/*> header before the needed <linux/*>
headers the compilation will fail because of missing types.

Signed-off-by: Rolf Eike Beer <eike-kernel@sf-tec.de>
---
 arch/m68k/include/asm/irq.h | 3 +++
 1 file changed, 3 insertions(+)

The patch is entirely untested.
  

Comments

Geert Uytterhoeven Oct. 4, 2023, 3:16 p.m. UTC | #1
Hi Rolf,

Thanks for your patch!

On Sun, Sep 17, 2023 at 11:18 AM Rolf Eike Beer <eike-kernel@sf-tec.de> wrote:
> As reported in f8b648bf6628 ("net: sunhme: move asm includes to below linux
> includes") when including this <asm/*> header before the needed <linux/*>
> headers the compilation will fail because of missing types.

    arch/m68k/include/asm/irq.h:66:20: warning: ‘struct pt_regs’
declared inside parameter list will not be visible outside of this
definition or declaration
       66 |             struct pt_regs *));
          |                    ^~~~~~~
    arch/m68k/include/asm/irq.h:78:11: error: expected ‘;’ before ‘void’
       78 | asmlinkage void do_IRQ(int irq, struct pt_regs *regs);
          |           ^~~~~
          |           ;
    arch/m68k/include/asm/irq.h:78:40: warning: ‘struct pt_regs’
declared inside parameter list will not be visible outside of this
definition or declaration
       78 | asmlinkage void do_IRQ(int irq, struct pt_regs *regs);
          |                                        ^~~~~~~
    arch/m68k/include/asm/irq.h:79:8: error: unknown type name ‘atomic_t’
       79 | extern atomic_t irq_err_count;
          |        ^~~~~~~~

> Signed-off-by: Rolf Eike Beer <eike-kernel@sf-tec.de>

> --- a/arch/m68k/include/asm/irq.h
> +++ b/arch/m68k/include/asm/irq.h
> @@ -2,6 +2,8 @@
>  #ifndef _M68K_IRQ_H_
>  #define _M68K_IRQ_H_
>
> +#include <linux/types.h>

When just including this file, that still leads to:

    arch/m68k/include/asm/irq.h:82:11: error: expected ‘;’ before ‘void’
       82 | asmlinkage void do_IRQ(int irq, struct pt_regs *regs);
          |           ^~~~~
          |           ;

Instead, you want:

    #include <linux/atomic.h>
    #include <linux/linkage.h>

> +
>  /*
>   * This should be the same as the max(NUM_X_SOURCES) for all the
>   * different m68k hosts compiled into the kernel.
> @@ -59,6 +61,7 @@
>  struct irq_data;
>  struct irq_chip;
>  struct irq_desc;
> +struct pt_regs;

OK

>  extern unsigned int m68k_irq_startup(struct irq_data *data);
>  extern unsigned int m68k_irq_startup_irq(unsigned int irq);
>  extern void m68k_irq_shutdown(struct irq_data *data);

Reviewed-by: Geert Uytterhoeven <geert@linux-m68k.org>
i.e. will queue in the m68k for-v6.7 branch, with the above fixed.

Gr{oetje,eeting}s,

                        Geert
  

Patch

diff --git a/arch/m68k/include/asm/irq.h b/arch/m68k/include/asm/irq.h
index 7829e955ca04..4b182bad0526 100644
--- a/arch/m68k/include/asm/irq.h
+++ b/arch/m68k/include/asm/irq.h
@@ -2,6 +2,8 @@ 
 #ifndef _M68K_IRQ_H_
 #define _M68K_IRQ_H_
 
+#include <linux/types.h>
+
 /*
  * This should be the same as the max(NUM_X_SOURCES) for all the
  * different m68k hosts compiled into the kernel.
@@ -59,6 +61,7 @@ 
 struct irq_data;
 struct irq_chip;
 struct irq_desc;
+struct pt_regs;
 extern unsigned int m68k_irq_startup(struct irq_data *data);
 extern unsigned int m68k_irq_startup_irq(unsigned int irq);
 extern void m68k_irq_shutdown(struct irq_data *data);