+ x86-work-around-old-gas-bug.patch added to -mm tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The patch titled
     x86: work around old gas bug
has been added to the -mm tree.  Its filename is
     x86-work-around-old-gas-bug.patch

Before you just go and hit "reply", please:
   a) Consider who else should be cc'ed
   b) Prefer to cc a suitable mailing list as well
   c) Ideally: find the original patch on the mailing list and do a
      reply-to-all to that, adding suitable additional cc's

*** Remember to use Documentation/SubmitChecklist when testing your code ***

See http://userweb.kernel.org/~akpm/stuff/added-to-mm.txt to find
out what to do about this

The current -mm tree may be found at http://userweb.kernel.org/~akpm/mmotm/

------------------------------------------------------
Subject: x86: work around old gas bug
From: Shaohua Li <shaohua.li@xxxxxxxxx>

> arch/x86/kernel/entry_64.S: Assembler messages:
> arch/x86/kernel/entry_64.S:984: Error: junk at end of line, first unrecognized character is `1'
> arch/x86/kernel/entry_64.S:984: Error: too many positional arguments
> arch/x86/kernel/entry_64.S:984: Error: junk at end of line, first unrecognized character is `1'
> arch/x86/kernel/entry_64.S:984: Error: too many positional arguments
> arch/x86/kernel/entry_64.S:984: Error: junk at end of line, first unrecognized character is `1'
> arch/x86/kernel/entry_64.S:984: Error: too many positional arguments
> arch/x86/kernel/entry_64.S:984: Error: junk at end of line, first unrecognized character is `1'
> arch/x86/kernel/entry_64.S:984: Error: too many positional arguments
> arch/x86/kernel/entry_64.S:984: Error: junk at end of line, first unrecognized character is `1'
> arch/x86/kernel/entry_64.S:984: Error: too many positional arguments
> arch/x86/kernel/entry_64.S:984: Error: junk at end of line, first unrecognized character is `1'
> arch/x86/kernel/entry_64.S:984: Error: too many positional arguments
> arch/x86/kernel/entry_64.S:984: Error: junk at end of line, first unrecognized character is `1'
> arch/x86/kernel/entry_64.S:984: Error: too many positional arguments
> arch/x86/kernel/entry_64.S:984: Error: junk at end of line, first unrecognized character is `1'
> arch/x86/kernel/entry_64.S:984: Error: too many positional arguments
> arch/x86/kernel/entry_64.S:984: Error: junk at end of line, first unrecognized character is `1'
> arch/x86/kernel/entry_64.S:984: Error: too many positional arguments
> arch/x86/kernel/entry_64.S:984: Error: junk at end of line, first unrecognized character is `1'
> arch/x86/kernel/entry_64.S:984: Error: too many positional arguments
> arch/x86/kernel/entry_64.S:984: Error: junk at end of line, first unrecognized character is `1'
> arch/x86/kernel/entry_64.S:984: Error: too many positional arguments
> arch/x86/kernel/entry_64.S:984: Error: junk at end of line, first unrecognized character is `1'
> arch/x86/kernel/entry_64.S:984: Error: too many positional arguments
> arch/x86/kernel/entry_64.S:984: Error: junk at end of line, first unrecognized character is `1'
> arch/x86/kernel/entry_64.S:984: Error: too many positional arguments
> arch/x86/kernel/entry_64.S:984: Error: junk at end of line, first unrecognized character is `1'
> arch/x86/kernel/entry_64.S:984: Error: too many positional arguments
> arch/x86/kernel/entry_64.S:984: Error: junk at end of line, first unrecognized character is `1'
> arch/x86/kernel/entry_64.S:984: Error: too many positional arguments
> arch/x86/kernel/entry_64.S:984: Error: junk at end of line, first unrecognized character is `1'
> arch/x86/kernel/entry_64.S:984: Error: too many positional arguments
> make[1]: *** [arch/x86/kernel/entry_64.o] Error 1
> make: *** [arch/x86/kernel/entry_64.o] Error 2
>
> Due to
>
> #ifdef CONFIG_SMP
> .irp idx,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,
>         16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31
> .if NUM_INVALIDATE_TLB_VECTORS > \idx
> apicinterrupt (INVALIDATE_TLB_VECTOR_START)+\idx \
>         invalidate_interrupt\idx smp_invalidate_interrupt
> .endif
> .endr
> #endif
>

Signed-off-by: Shaohua Li <shaohua.li@xxxxxxxxx>
Cc: Ingo Molnar <mingo@xxxxxxx>
Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
Cc: "H. Peter Anvin" <hpa@xxxxxxxxx>
Cc: Jan Beulich <jbeulich@xxxxxxxxxx>
Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
---

 arch/x86/include/asm/entry_arch.h |  164 ++++++++++++++++++++++++++--
 arch/x86/kernel/entry_64.S        |  133 +++++++++++++++++++++-
 2 files changed, 285 insertions(+), 12 deletions(-)

diff -puN arch/x86/include/asm/entry_arch.h~x86-work-around-old-gas-bug arch/x86/include/asm/entry_arch.h
--- a/arch/x86/include/asm/entry_arch.h~x86-work-around-old-gas-bug
+++ a/arch/x86/include/asm/entry_arch.h
@@ -16,14 +16,166 @@ BUILD_INTERRUPT(call_function_single_int
 BUILD_INTERRUPT(irq_move_cleanup_interrupt,IRQ_MOVE_CLEANUP_VECTOR)
 BUILD_INTERRUPT(reboot_interrupt,REBOOT_VECTOR)
 
-.irp idx,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, \
-	16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31
-.if NUM_INVALIDATE_TLB_VECTORS > \idx
-BUILD_INTERRUPT3(invalidate_interrupt\idx,
-		 (INVALIDATE_TLB_VECTOR_START)+\idx,
+.if NUM_INVALIDATE_TLB_VECTORS > 0
+BUILD_INTERRUPT3(invalidate_interrupt0,
+		 (INVALIDATE_TLB_VECTOR_START)+0,
+		 smp_invalidate_interrupt)
+.endif
+.if NUM_INVALIDATE_TLB_VECTORS > 1
+BUILD_INTERRUPT3(invalidate_interrupt1,
+		 (INVALIDATE_TLB_VECTOR_START)+1,
+		 smp_invalidate_interrupt)
+.endif
+.if NUM_INVALIDATE_TLB_VECTORS > 2
+BUILD_INTERRUPT3(invalidate_interrupt2,
+		 (INVALIDATE_TLB_VECTOR_START)+2,
+		 smp_invalidate_interrupt)
+.endif
+.if NUM_INVALIDATE_TLB_VECTORS > 3
+BUILD_INTERRUPT3(invalidate_interrupt3,
+		 (INVALIDATE_TLB_VECTOR_START)+3,
+		 smp_invalidate_interrupt)
+.endif
+.if NUM_INVALIDATE_TLB_VECTORS > 4
+BUILD_INTERRUPT3(invalidate_interrupt4,
+		 (INVALIDATE_TLB_VECTOR_START)+4,
+		 smp_invalidate_interrupt)
+.endif
+.if NUM_INVALIDATE_TLB_VECTORS > 5
+BUILD_INTERRUPT3(invalidate_interrupt5,
+		 (INVALIDATE_TLB_VECTOR_START)+5,
+		 smp_invalidate_interrupt)
+.endif
+.if NUM_INVALIDATE_TLB_VECTORS > 6
+BUILD_INTERRUPT3(invalidate_interrupt6,
+		 (INVALIDATE_TLB_VECTOR_START)+6,
+		 smp_invalidate_interrupt)
+.endif
+.if NUM_INVALIDATE_TLB_VECTORS > 7
+BUILD_INTERRUPT3(invalidate_interrupt7,
+		 (INVALIDATE_TLB_VECTOR_START)+7,
+		 smp_invalidate_interrupt)
+.endif
+.if NUM_INVALIDATE_TLB_VECTORS > 8
+BUILD_INTERRUPT3(invalidate_interrupt8,
+		 (INVALIDATE_TLB_VECTOR_START)+8,
+		 smp_invalidate_interrupt)
+.endif
+.if NUM_INVALIDATE_TLB_VECTORS > 9
+BUILD_INTERRUPT3(invalidate_interrupt9,
+		 (INVALIDATE_TLB_VECTOR_START)+9,
+		 smp_invalidate_interrupt)
+.endif
+.if NUM_INVALIDATE_TLB_VECTORS > 10
+BUILD_INTERRUPT3(invalidate_interrupt10,
+		 (INVALIDATE_TLB_VECTOR_START)+10,
+		 smp_invalidate_interrupt)
+.endif
+.if NUM_INVALIDATE_TLB_VECTORS > 11
+BUILD_INTERRUPT3(invalidate_interrupt11,
+		 (INVALIDATE_TLB_VECTOR_START)+11,
+		 smp_invalidate_interrupt)
+.endif
+.if NUM_INVALIDATE_TLB_VECTORS > 12
+BUILD_INTERRUPT3(invalidate_interrupt12,
+		 (INVALIDATE_TLB_VECTOR_START)+12,
+		 smp_invalidate_interrupt)
+.endif
+.if NUM_INVALIDATE_TLB_VECTORS > 13
+BUILD_INTERRUPT3(invalidate_interrupt13,
+		 (INVALIDATE_TLB_VECTOR_START)+13,
+		 smp_invalidate_interrupt)
+.endif
+.if NUM_INVALIDATE_TLB_VECTORS > 14
+BUILD_INTERRUPT3(invalidate_interrupt14,
+		 (INVALIDATE_TLB_VECTOR_START)+14,
+		 smp_invalidate_interrupt)
+.endif
+.if NUM_INVALIDATE_TLB_VECTORS > 15
+BUILD_INTERRUPT3(invalidate_interrupt15,
+		 (INVALIDATE_TLB_VECTOR_START)+15,
+		 smp_invalidate_interrupt)
+.endif
+.if NUM_INVALIDATE_TLB_VECTORS > 16
+BUILD_INTERRUPT3(invalidate_interrupt16,
+		 (INVALIDATE_TLB_VECTOR_START)+16,
+		 smp_invalidate_interrupt)
+.endif
+.if NUM_INVALIDATE_TLB_VECTORS > 17
+BUILD_INTERRUPT3(invalidate_interrupt17,
+		 (INVALIDATE_TLB_VECTOR_START)+17,
+		 smp_invalidate_interrupt)
+.endif
+.if NUM_INVALIDATE_TLB_VECTORS > 18
+BUILD_INTERRUPT3(invalidate_interrupt18,
+		 (INVALIDATE_TLB_VECTOR_START)+18,
+		 smp_invalidate_interrupt)
+.endif
+.if NUM_INVALIDATE_TLB_VECTORS > 19
+BUILD_INTERRUPT3(invalidate_interrupt19,
+		 (INVALIDATE_TLB_VECTOR_START)+19,
+		 smp_invalidate_interrupt)
+.endif
+.if NUM_INVALIDATE_TLB_VECTORS > 20
+BUILD_INTERRUPT3(invalidate_interrupt20,
+		 (INVALIDATE_TLB_VECTOR_START)+20,
+		 smp_invalidate_interrupt)
+.endif
+.if NUM_INVALIDATE_TLB_VECTORS > 21
+BUILD_INTERRUPT3(invalidate_interrupt21,
+		 (INVALIDATE_TLB_VECTOR_START)+21,
+		 smp_invalidate_interrupt)
+.endif
+.if NUM_INVALIDATE_TLB_VECTORS > 22
+BUILD_INTERRUPT3(invalidate_interrupt22,
+		 (INVALIDATE_TLB_VECTOR_START)+22,
+		 smp_invalidate_interrupt)
+.endif
+.if NUM_INVALIDATE_TLB_VECTORS > 23
+BUILD_INTERRUPT3(invalidate_interrupt23,
+		 (INVALIDATE_TLB_VECTOR_START)+23,
+		 smp_invalidate_interrupt)
+.endif
+.if NUM_INVALIDATE_TLB_VECTORS > 24
+BUILD_INTERRUPT3(invalidate_interrupt24,
+		 (INVALIDATE_TLB_VECTOR_START)+24,
+		 smp_invalidate_interrupt)
+.endif
+.if NUM_INVALIDATE_TLB_VECTORS > 25
+BUILD_INTERRUPT3(invalidate_interrupt25,
+		 (INVALIDATE_TLB_VECTOR_START)+25,
+		 smp_invalidate_interrupt)
+.endif
+.if NUM_INVALIDATE_TLB_VECTORS > 26
+BUILD_INTERRUPT3(invalidate_interrupt26,
+		 (INVALIDATE_TLB_VECTOR_START)+26,
+		 smp_invalidate_interrupt)
+.endif
+.if NUM_INVALIDATE_TLB_VECTORS > 27
+BUILD_INTERRUPT3(invalidate_interrupt27,
+		 (INVALIDATE_TLB_VECTOR_START)+27,
+		 smp_invalidate_interrupt)
+.endif
+.if NUM_INVALIDATE_TLB_VECTORS > 28
+BUILD_INTERRUPT3(invalidate_interrupt28,
+		 (INVALIDATE_TLB_VECTOR_START)+28,
+		 smp_invalidate_interrupt)
+.endif
+.if NUM_INVALIDATE_TLB_VECTORS > 29
+BUILD_INTERRUPT3(invalidate_interrupt29,
+		 (INVALIDATE_TLB_VECTOR_START)+29,
+		 smp_invalidate_interrupt)
+.endif
+.if NUM_INVALIDATE_TLB_VECTORS > 30
+BUILD_INTERRUPT3(invalidate_interrupt30,
+		 (INVALIDATE_TLB_VECTOR_START)+30,
+		 smp_invalidate_interrupt)
+.endif
+.if NUM_INVALIDATE_TLB_VECTORS > 31
+BUILD_INTERRUPT3(invalidate_interrupt31,
+		 (INVALIDATE_TLB_VECTOR_START)+31,
 		 smp_invalidate_interrupt)
 .endif
-.endr
 #endif
 
 BUILD_INTERRUPT(x86_platform_ipi, X86_PLATFORM_IPI_VECTOR)
diff -puN arch/x86/kernel/entry_64.S~x86-work-around-old-gas-bug arch/x86/kernel/entry_64.S
--- a/arch/x86/kernel/entry_64.S~x86-work-around-old-gas-bug
+++ a/arch/x86/kernel/entry_64.S
@@ -975,13 +975,134 @@ apicinterrupt X86_PLATFORM_IPI_VECTOR \
 	x86_platform_ipi smp_x86_platform_ipi
 
 #ifdef CONFIG_SMP
-.irp idx,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, \
-	16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31
-.if NUM_INVALIDATE_TLB_VECTORS > \idx
-apicinterrupt (INVALIDATE_TLB_VECTOR_START)+\idx \
-	invalidate_interrupt\idx smp_invalidate_interrupt
+.if NUM_INVALIDATE_TLB_VECTORS > 0
+apicinterrupt (INVALIDATE_TLB_VECTOR_START)+0 \
+	invalidate_interrupt0 smp_invalidate_interrupt
+.endif
+.if NUM_INVALIDATE_TLB_VECTORS > 1
+apicinterrupt (INVALIDATE_TLB_VECTOR_START)+1 \
+	invalidate_interrupt1 smp_invalidate_interrupt
+.endif
+.if NUM_INVALIDATE_TLB_VECTORS > 2
+apicinterrupt (INVALIDATE_TLB_VECTOR_START)+2 \
+	invalidate_interrupt2 smp_invalidate_interrupt
+.endif
+.if NUM_INVALIDATE_TLB_VECTORS > 3
+apicinterrupt (INVALIDATE_TLB_VECTOR_START)+3 \
+	invalidate_interrupt3 smp_invalidate_interrupt
+.endif
+.if NUM_INVALIDATE_TLB_VECTORS > 4
+apicinterrupt (INVALIDATE_TLB_VECTOR_START)+4 \
+	invalidate_interrupt4 smp_invalidate_interrupt
+.endif
+.if NUM_INVALIDATE_TLB_VECTORS > 5
+apicinterrupt (INVALIDATE_TLB_VECTOR_START)+5 \
+	invalidate_interrupt5 smp_invalidate_interrupt
+.endif
+.if NUM_INVALIDATE_TLB_VECTORS > 6
+apicinterrupt (INVALIDATE_TLB_VECTOR_START)+6 \
+	invalidate_interrupt6 smp_invalidate_interrupt
+.endif
+.if NUM_INVALIDATE_TLB_VECTORS > 7
+apicinterrupt (INVALIDATE_TLB_VECTOR_START)+7 \
+	invalidate_interrupt7 smp_invalidate_interrupt
+.endif
+.if NUM_INVALIDATE_TLB_VECTORS > 8
+apicinterrupt (INVALIDATE_TLB_VECTOR_START)+8 \
+	invalidate_interrupt8 smp_invalidate_interrupt
+.endif
+.if NUM_INVALIDATE_TLB_VECTORS > 9
+apicinterrupt (INVALIDATE_TLB_VECTOR_START)+9 \
+	invalidate_interrupt9 smp_invalidate_interrupt
+.endif
+.if NUM_INVALIDATE_TLB_VECTORS > 10
+apicinterrupt (INVALIDATE_TLB_VECTOR_START)+10 \
+	invalidate_interrupt10 smp_invalidate_interrupt
+.endif
+.if NUM_INVALIDATE_TLB_VECTORS > 11
+apicinterrupt (INVALIDATE_TLB_VECTOR_START)+11 \
+	invalidate_interrupt11 smp_invalidate_interrupt
+.endif
+.if NUM_INVALIDATE_TLB_VECTORS > 12
+apicinterrupt (INVALIDATE_TLB_VECTOR_START)+12 \
+	invalidate_interrupt12 smp_invalidate_interrupt
+.endif
+.if NUM_INVALIDATE_TLB_VECTORS > 13
+apicinterrupt (INVALIDATE_TLB_VECTOR_START)+13 \
+	invalidate_interrupt13 smp_invalidate_interrupt
+.endif
+.if NUM_INVALIDATE_TLB_VECTORS > 14
+apicinterrupt (INVALIDATE_TLB_VECTOR_START)+14 \
+	invalidate_interrupt14 smp_invalidate_interrupt
+.endif
+.if NUM_INVALIDATE_TLB_VECTORS > 15
+apicinterrupt (INVALIDATE_TLB_VECTOR_START)+15 \
+	invalidate_interrupt15 smp_invalidate_interrupt
+.endif
+.if NUM_INVALIDATE_TLB_VECTORS > 16
+apicinterrupt (INVALIDATE_TLB_VECTOR_START)+16 \
+	invalidate_interrupt16 smp_invalidate_interrupt
+.endif
+.if NUM_INVALIDATE_TLB_VECTORS > 17
+apicinterrupt (INVALIDATE_TLB_VECTOR_START)+17 \
+	invalidate_interrupt17 smp_invalidate_interrupt
+.endif
+.if NUM_INVALIDATE_TLB_VECTORS > 18
+apicinterrupt (INVALIDATE_TLB_VECTOR_START)+18 \
+	invalidate_interrupt18 smp_invalidate_interrupt
+.endif
+.if NUM_INVALIDATE_TLB_VECTORS > 19
+apicinterrupt (INVALIDATE_TLB_VECTOR_START)+19 \
+	invalidate_interrupt19 smp_invalidate_interrupt
+.endif
+.if NUM_INVALIDATE_TLB_VECTORS > 20
+apicinterrupt (INVALIDATE_TLB_VECTOR_START)+20 \
+	invalidate_interrupt20 smp_invalidate_interrupt
+.endif
+.if NUM_INVALIDATE_TLB_VECTORS > 21
+apicinterrupt (INVALIDATE_TLB_VECTOR_START)+21 \
+	invalidate_interrupt21 smp_invalidate_interrupt
+.endif
+.if NUM_INVALIDATE_TLB_VECTORS > 22
+apicinterrupt (INVALIDATE_TLB_VECTOR_START)+22 \
+	invalidate_interrupt22 smp_invalidate_interrupt
+.endif
+.if NUM_INVALIDATE_TLB_VECTORS > 23
+apicinterrupt (INVALIDATE_TLB_VECTOR_START)+23 \
+	invalidate_interrupt23 smp_invalidate_interrupt
+.endif
+.if NUM_INVALIDATE_TLB_VECTORS > 24
+apicinterrupt (INVALIDATE_TLB_VECTOR_START)+24 \
+	invalidate_interrupt24 smp_invalidate_interrupt
+.endif
+.if NUM_INVALIDATE_TLB_VECTORS > 25
+apicinterrupt (INVALIDATE_TLB_VECTOR_START)+25 \
+	invalidate_interrupt25 smp_invalidate_interrupt
+.endif
+.if NUM_INVALIDATE_TLB_VECTORS > 26
+apicinterrupt (INVALIDATE_TLB_VECTOR_START)+26 \
+	invalidate_interrupt26 smp_invalidate_interrupt
+.endif
+.if NUM_INVALIDATE_TLB_VECTORS > 27
+apicinterrupt (INVALIDATE_TLB_VECTOR_START)+27 \
+	invalidate_interrupt27 smp_invalidate_interrupt
+.endif
+.if NUM_INVALIDATE_TLB_VECTORS > 28
+apicinterrupt (INVALIDATE_TLB_VECTOR_START)+28 \
+	invalidate_interrupt28 smp_invalidate_interrupt
+.endif
+.if NUM_INVALIDATE_TLB_VECTORS > 29
+apicinterrupt (INVALIDATE_TLB_VECTOR_START)+29 \
+	invalidate_interrupt29 smp_invalidate_interrupt
+.endif
+.if NUM_INVALIDATE_TLB_VECTORS > 30
+apicinterrupt (INVALIDATE_TLB_VECTOR_START)+30 \
+	invalidate_interrupt30 smp_invalidate_interrupt
+.endif
+.if NUM_INVALIDATE_TLB_VECTORS > 31
+apicinterrupt (INVALIDATE_TLB_VECTOR_START)+31 \
+	invalidate_interrupt31 smp_invalidate_interrupt
 .endif
-.endr
 #endif
 
 apicinterrupt THRESHOLD_APIC_VECTOR \
_

Patches currently in -mm which might be from shaohua.li@xxxxxxxxx are

linux-next.patch
x86-work-around-old-gas-bug.patch
mm-vmscan-kswapd-should-not-free-an-excessive-number-of-pages-when-balancing-small-zones.patch
fs-ioctlc-remove-unnecessary-variable.patch

--
To unsubscribe from this list: send the line "unsubscribe mm-commits" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Kernel Newbies FAQ]     [Kernel Archive]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [Bugtraq]     [Photo]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]

  Powered by Linux