xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] Fix asmlinkage functions
@ 2012-06-19 19:12 Bastian Blank
  2012-06-20  7:59 ` Jan Beulich
  2012-06-20  8:28 ` M A Young
  0 siblings, 2 replies; 6+ messages in thread
From: Bastian Blank @ 2012-06-19 19:12 UTC (permalink / raw)
  To: xen-devel

According to gcc-4.7, "void bla(void)" is incompatible with "asmlinkage
void bla(void)". As asmlinkage expands to __attribute__((regparm(0))),
it is correct.

The patch adds the missing asmlinkage to function declarations affected.
It is needed for 4.1 and 4.2.

Signed-off-by: Bastian Blank <waldi@debian.org>

---
Origin: debian
Forwarded: no
Last-Update: 2012-06-15

--- xen-4.1.3~rc1+hg-20120614.a9c0a89c08f2.orig/xen/arch/x86/i8259.c
+++ xen-4.1.3~rc1+hg-20120614.a9c0a89c08f2/xen/arch/x86/i8259.c
@@ -62,7 +62,7 @@
     IRQ(x,8), IRQ(x,9), IRQ(x,a), IRQ(x,b), \
     IRQ(x,c), IRQ(x,d), IRQ(x,e), IRQ(x,f)
 
-    static void (*interrupt[])(void) = {
+    static void (*asmlinkage interrupt[])(void) = {
         IRQLIST_16(0x0), IRQLIST_16(0x1), IRQLIST_16(0x2), IRQLIST_16(0x3),
         IRQLIST_16(0x4), IRQLIST_16(0x5), IRQLIST_16(0x6), IRQLIST_16(0x7),
         IRQLIST_16(0x8), IRQLIST_16(0x9), IRQLIST_16(0xa), IRQLIST_16(0xb),
--- xen-4.1.3~rc1+hg-20120614.a9c0a89c08f2.orig/xen/include/asm-x86/hvm/svm/intr.h
+++ xen-4.1.3~rc1+hg-20120614.a9c0a89c08f2/xen/include/asm-x86/hvm/svm/intr.h
@@ -21,6 +21,8 @@
 #ifndef __ASM_X86_HVM_SVM_INTR_H__
 #define __ASM_X86_HVM_SVM_INTR_H__
 
-void svm_intr_assist(void);
+#include <asm/config.h>
+
+asmlinkage void svm_intr_assist(void);
 
 #endif /* __ASM_X86_HVM_SVM_INTR_H__ */
--- xen-4.1.3~rc1+hg-20120614.a9c0a89c08f2.orig/xen/include/asm-x86/hvm/vmx/vmx.h
+++ xen-4.1.3~rc1+hg-20120614.a9c0a89c08f2/xen/include/asm-x86/hvm/vmx/vmx.h
@@ -63,7 +63,7 @@
 
 void vmx_asm_vmexit_handler(struct cpu_user_regs);
 void vmx_asm_do_vmentry(void);
-void vmx_intr_assist(void);
+asmlinkage void vmx_intr_assist(void);
 void vmx_do_resume(struct vcpu *);
 void vmx_vlapic_msr_changed(struct vcpu *v);
 void vmx_realmode(struct cpu_user_regs *regs);
-- 
There is a multi-legged creature crawling on your shoulder.
		-- Spock, "A Taste of Armageddon", stardate 3193.9

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] Fix asmlinkage functions
  2012-06-19 19:12 [PATCH] Fix asmlinkage functions Bastian Blank
@ 2012-06-20  7:59 ` Jan Beulich
  2012-06-20  8:12   ` Bastian Blank
  2012-06-20  8:28 ` M A Young
  1 sibling, 1 reply; 6+ messages in thread
From: Jan Beulich @ 2012-06-20  7:59 UTC (permalink / raw)
  To: Bastian Blank; +Cc: xen-devel

>>> On 19.06.12 at 21:12, Bastian Blank <waldi@debian.org> wrote:
> According to gcc-4.7, "void bla(void)" is incompatible with "asmlinkage
> void bla(void)". As asmlinkage expands to __attribute__((regparm(0))),
> it is correct.
> 
> The patch adds the missing asmlinkage to function declarations affected.
> It is needed for 4.1 and 4.2.

Iirc Keir had already taken steps towards removing all the
(pointless) asmlinkage annotations, so if there are any left I
think we'd rather see them removed than made consistent.

Additionally I doubt there is such a problem in current -unstable,
as the result of Keir's work was to have asmlinkage defined to
nothing on x86 (so I can't see how gcc would be able to diagnose
any inconsistencies). Is Debian (and 4.1) perhaps rather in need
of some backport?

Jan

> Signed-off-by: Bastian Blank <waldi@debian.org>
> 
> ---
> Origin: debian
> Forwarded: no
> Last-Update: 2012-06-15
> 
> --- xen-4.1.3~rc1+hg-20120614.a9c0a89c08f2.orig/xen/arch/x86/i8259.c
> +++ xen-4.1.3~rc1+hg-20120614.a9c0a89c08f2/xen/arch/x86/i8259.c
> @@ -62,7 +62,7 @@
>      IRQ(x,8), IRQ(x,9), IRQ(x,a), IRQ(x,b), \
>      IRQ(x,c), IRQ(x,d), IRQ(x,e), IRQ(x,f)
>  
> -    static void (*interrupt[])(void) = {
> +    static void (*asmlinkage interrupt[])(void) = {
>          IRQLIST_16(0x0), IRQLIST_16(0x1), IRQLIST_16(0x2), IRQLIST_16(0x3),
>          IRQLIST_16(0x4), IRQLIST_16(0x5), IRQLIST_16(0x6), IRQLIST_16(0x7),
>          IRQLIST_16(0x8), IRQLIST_16(0x9), IRQLIST_16(0xa), IRQLIST_16(0xb),
> --- xen-4.1.3~rc1+hg-20120614.a9c0a89c08f2.orig/xen/include/asm-x86/hvm/svm/intr.h
> +++ xen-4.1.3~rc1+hg-20120614.a9c0a89c08f2/xen/include/asm-x86/hvm/svm/intr.h
> @@ -21,6 +21,8 @@
>  #ifndef __ASM_X86_HVM_SVM_INTR_H__
>  #define __ASM_X86_HVM_SVM_INTR_H__
>  
> -void svm_intr_assist(void);
> +#include <asm/config.h>
> +
> +asmlinkage void svm_intr_assist(void);

Furthermore, this ...

>  #endif /* __ASM_X86_HVM_SVM_INTR_H__ */
> --- xen-4.1.3~rc1+hg-20120614.a9c0a89c08f2.orig/xen/include/asm-x86/hvm/vmx/vmx.h
> +++ xen-4.1.3~rc1+hg-20120614.a9c0a89c08f2/xen/include/asm-x86/hvm/vmx/vmx.h
> @@ -63,7 +63,7 @@
>  
>  void vmx_asm_vmexit_handler(struct cpu_user_regs);
>  void vmx_asm_do_vmentry(void);
> -void vmx_intr_assist(void);
> +asmlinkage void vmx_intr_assist(void);

... and this declaration could be dropped altogether (as having
call sites in assembly files only).

Jan

>  void vmx_do_resume(struct vcpu *);
>  void vmx_vlapic_msr_changed(struct vcpu *v);
>  void vmx_realmode(struct cpu_user_regs *regs);
> -- 
> There is a multi-legged creature crawling on your shoulder.
> 		-- Spock, "A Taste of Armageddon", stardate 3193.9
> 
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@lists.xen.org 
> http://lists.xen.org/xen-devel 

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] Fix asmlinkage functions
  2012-06-20  7:59 ` Jan Beulich
@ 2012-06-20  8:12   ` Bastian Blank
  2012-06-20  8:42     ` Keir Fraser
  0 siblings, 1 reply; 6+ messages in thread
From: Bastian Blank @ 2012-06-20  8:12 UTC (permalink / raw)
  To: xen-devel

On Wed, Jun 20, 2012 at 08:59:55AM +0100, Jan Beulich wrote:
> Iirc Keir had already taken steps towards removing all the
> (pointless) asmlinkage annotations, so if there are any left I
> think we'd rather see them removed than made consistent.

I see a lot of them and always not on both declaration and definition.

| xen/arch/arm/traps.c:asmlinkage void __div0(void)
| xen/arch/arm/traps.c:asmlinkage void do_trap_undefined_instruction(struct cpu_user_regs *regs)
| xen/arch/arm/traps.c:asmlinkage void do_trap_supervisor_call(struct cpu_user_regs *regs)
| xen/arch/arm/traps.c:asmlinkage void do_trap_prefetch_abort(struct cpu_user_regs *regs)
| xen/arch/arm/traps.c:asmlinkage void do_trap_data_abort(struct cpu_user_regs *regs)
| xen/arch/arm/traps.c:asmlinkage void do_trap_hypervisor(struct cpu_user_regs *regs)
| xen/arch/arm/traps.c:asmlinkage void do_trap_irq(struct cpu_user_regs *regs)
| xen/arch/arm/traps.c:asmlinkage void do_trap_fiq(struct cpu_user_regs *regs)
| xen/arch/arm/traps.c:asmlinkage void leave_hypervisor_tail(void)
| xen/common/softirq.c:asmlinkage void do_softirq(void)
| xen/include/acpi/acpixf.h:acpi_status asmlinkage acpi_enter_sleep_state(u8 sleep_state);
| xen/include/acpi/acpixf.h:acpi_status asmlinkage acpi_enter_sleep_state_s4bios(void);
| xen/include/xen/softirq.h:asmlinkage void do_softirq(void);

It is not longer problematic because asmlinkage is always defined
empty, but it is still there.

Bastian

-- 
We have found all life forms in the galaxy are capable of superior
development.
		-- Kirk, "The Gamesters of Triskelion", stardate 3211.7

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] Fix asmlinkage functions
  2012-06-19 19:12 [PATCH] Fix asmlinkage functions Bastian Blank
  2012-06-20  7:59 ` Jan Beulich
@ 2012-06-20  8:28 ` M A Young
  2012-06-20  8:43   ` Keir Fraser
  1 sibling, 1 reply; 6+ messages in thread
From: M A Young @ 2012-06-20  8:28 UTC (permalink / raw)
  To: Bastian Blank; +Cc: xen-devel

On Tue, 19 Jun 2012, Bastian Blank wrote:

> According to gcc-4.7, "void bla(void)" is incompatible with "asmlinkage
> void bla(void)". As asmlinkage expands to __attribute__((regparm(0))),
> it is correct.
>
> The patch adds the missing asmlinkage to function declarations affected.
> It is needed for 4.1 and 4.2.
>
> Signed-off-by: Bastian Blank <waldi@debian.org>

This is only relevant for 4.1 . In 4.2 asmlinkage got flattened to a no-op 
in changeset 24511
http://xenbits.xen.org/hg/staging/xen-unstable.hg/rev/a141f6d64916 . It 
would be a good idea to get this problem fixed for 4.1.3 but backporting 
the change from 4.2 might be a better idea.

 	Michael Young

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] Fix asmlinkage functions
  2012-06-20  8:12   ` Bastian Blank
@ 2012-06-20  8:42     ` Keir Fraser
  0 siblings, 0 replies; 6+ messages in thread
From: Keir Fraser @ 2012-06-20  8:42 UTC (permalink / raw)
  To: Bastian Blank, xen-devel; +Cc: Jan Beulich

On 20/06/2012 09:12, "Bastian Blank" <waldi@debian.org> wrote:

> On Wed, Jun 20, 2012 at 08:59:55AM +0100, Jan Beulich wrote:
>> Iirc Keir had already taken steps towards removing all the
>> (pointless) asmlinkage annotations, so if there are any left I
>> think we'd rather see them removed than made consistent.
> 
> I see a lot of them and always not on both declaration and definition.

Most of the below are in arch/arm, no relevance to x86. The few others are
acceptable, only acpi_enter_sleep_state() has a 'non-matching' definition in
arch/x86, but of course x86 asmlinkage is a no-op so it's fine.

I have backported my xen-unstable patch to 4.0 and 4.1, so you should find
those trees build okay now.

 -- Keir

> | xen/arch/arm/traps.c:asmlinkage void __div0(void)
> | xen/arch/arm/traps.c:asmlinkage void do_trap_undefined_instruction(struct
> cpu_user_regs *regs)
> | xen/arch/arm/traps.c:asmlinkage void do_trap_supervisor_call(struct
> cpu_user_regs *regs)
> | xen/arch/arm/traps.c:asmlinkage void do_trap_prefetch_abort(struct
> cpu_user_regs *regs)
> | xen/arch/arm/traps.c:asmlinkage void do_trap_data_abort(struct cpu_user_regs
> *regs)
> | xen/arch/arm/traps.c:asmlinkage void do_trap_hypervisor(struct cpu_user_regs
> *regs)
> | xen/arch/arm/traps.c:asmlinkage void do_trap_irq(struct cpu_user_regs *regs)
> | xen/arch/arm/traps.c:asmlinkage void do_trap_fiq(struct cpu_user_regs *regs)
> | xen/arch/arm/traps.c:asmlinkage void leave_hypervisor_tail(void)
> | xen/common/softirq.c:asmlinkage void do_softirq(void)
> | xen/include/acpi/acpixf.h:acpi_status asmlinkage acpi_enter_sleep_state(u8
> sleep_state);
> | xen/include/acpi/acpixf.h:acpi_status asmlinkage
> acpi_enter_sleep_state_s4bios(void);
> | xen/include/xen/softirq.h:asmlinkage void do_softirq(void);
> 
> It is not longer problematic because asmlinkage is always defined
> empty, but it is still there.
> 
> Bastian

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] Fix asmlinkage functions
  2012-06-20  8:28 ` M A Young
@ 2012-06-20  8:43   ` Keir Fraser
  0 siblings, 0 replies; 6+ messages in thread
From: Keir Fraser @ 2012-06-20  8:43 UTC (permalink / raw)
  To: M A Young, Bastian Blank; +Cc: xen-devel

On 20/06/2012 09:28, "M A Young" <m.a.young@durham.ac.uk> wrote:

> On Tue, 19 Jun 2012, Bastian Blank wrote:
> 
>> According to gcc-4.7, "void bla(void)" is incompatible with "asmlinkage
>> void bla(void)". As asmlinkage expands to __attribute__((regparm(0))),
>> it is correct.
>> 
>> The patch adds the missing asmlinkage to function declarations affected.
>> It is needed for 4.1 and 4.2.
>> 
>> Signed-off-by: Bastian Blank <waldi@debian.org>
> 
> This is only relevant for 4.1 . In 4.2 asmlinkage got flattened to a no-op
> in changeset 24511
> http://xenbits.xen.org/hg/staging/xen-unstable.hg/rev/a141f6d64916 . It
> would be a good idea to get this problem fixed for 4.1.3 but backporting
> the change from 4.2 might be a better idea.

Done, and for forthcoming 4.0.4-rc3 too.

> Michael Young
> 
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@lists.xen.org
> http://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2012-06-20  8:43 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-06-19 19:12 [PATCH] Fix asmlinkage functions Bastian Blank
2012-06-20  7:59 ` Jan Beulich
2012-06-20  8:12   ` Bastian Blank
2012-06-20  8:42     ` Keir Fraser
2012-06-20  8:28 ` M A Young
2012-06-20  8:43   ` Keir Fraser

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).