* [PATCH 1/3] um: Adjust current_thread_info() for gcc-4.6 @ 2011-04-20 11:34 Richard Weinberger 2011-04-20 11:34 ` [uml-devel] [PATCH 2/3] um: Add support for 64 bit atomic operations Richard Weinberger 2011-04-20 11:34 ` [PATCH 3/3] uml: fix hppfs build Richard Weinberger 0 siblings, 2 replies; 7+ messages in thread From: Richard Weinberger @ 2011-04-20 11:34 UTC (permalink / raw) To: akpm; +Cc: linux-kernel, user-mode-linux-devel, Richard Weinberger In some cases gcc-4.6 will optimize away current_thread_info(). To prevent gcc from doing so the stack address has to be obtained via inline asm. LKML-Reference: http://marc.info/?i=201104132150.05623.richard@nod.at Signed-off-by: Richard Weinberger <richard@nod.at> --- arch/um/include/asm/thread_info.h | 5 ++++- 1 files changed, 4 insertions(+), 1 deletions(-) diff --git a/arch/um/include/asm/thread_info.h b/arch/um/include/asm/thread_info.h index e2cf786..5bd1bad 100644 --- a/arch/um/include/asm/thread_info.h +++ b/arch/um/include/asm/thread_info.h @@ -49,7 +49,10 @@ static inline struct thread_info *current_thread_info(void) { struct thread_info *ti; unsigned long mask = THREAD_SIZE - 1; - ti = (struct thread_info *) (((unsigned long) &ti) & ~mask); + void *p; + + asm volatile ("" : "=r" (p) : "0" (&ti)); + ti = (struct thread_info *) (((unsigned long)p) & ~mask); return ti; } -- 1.7.4.2 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [uml-devel] [PATCH 2/3] um: Add support for 64 bit atomic operations 2011-04-20 11:34 [PATCH 1/3] um: Adjust current_thread_info() for gcc-4.6 Richard Weinberger @ 2011-04-20 11:34 ` Richard Weinberger 2011-04-20 14:27 ` [uml-devel] [stable] " Greg KH 2011-04-20 11:34 ` [PATCH 3/3] uml: fix hppfs build Richard Weinberger 1 sibling, 1 reply; 7+ messages in thread From: Richard Weinberger @ 2011-04-20 11:34 UTC (permalink / raw) To: akpm Cc: user-mode-linux-devel, Richard Weinberger, linux-kernel, disable, stable This adds support for 64 bit atomic operations on 32 bit UML systems. XFS needs them since 2.6.38. Reported-by: Martin Walch <walch.martin@web.de> Tested-by: Martin Walch <walch.martin@web.de> Cc: Martin Walch <walch.martin@web.de> Cc: <stable@kernel.org> # .38.x 084189a: um: disable CONFIG_CMPXCHG_LOCAL Signed-off-by: Richard Weinberger <richard@nod.at> --- arch/um/sys-i386/Makefile | 2 +- arch/um/sys-i386/atomic64_cx8_32.S | 225 ++++++++++++++++++++++++++++++++++++ 2 files changed, 226 insertions(+), 1 deletions(-) create mode 100644 arch/um/sys-i386/atomic64_cx8_32.S diff --git a/arch/um/sys-i386/Makefile b/arch/um/sys-i386/Makefile index 804b28d..b1da91c 100644 --- a/arch/um/sys-i386/Makefile +++ b/arch/um/sys-i386/Makefile @@ -4,7 +4,7 @@ obj-y = bug.o bugs.o checksum.o delay.o fault.o ksyms.o ldt.o ptrace.o \ ptrace_user.o setjmp.o signal.o stub.o stub_segv.o syscalls.o sysrq.o \ - sys_call_table.o tls.o + sys_call_table.o tls.o atomic64_cx8_32.o obj-$(CONFIG_BINFMT_ELF) += elfcore.o diff --git a/arch/um/sys-i386/atomic64_cx8_32.S b/arch/um/sys-i386/atomic64_cx8_32.S new file mode 100644 index 0000000..1e901d3 --- /dev/null +++ b/arch/um/sys-i386/atomic64_cx8_32.S @@ -0,0 +1,225 @@ +/* + * atomic64_t for 586+ + * + * Copied from arch/x86/lib/atomic64_cx8_32.S + * + * Copyright © 2010 Luca Barbieri + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + */ + +#include <linux/linkage.h> +#include <asm/alternative-asm.h> +#include <asm/dwarf2.h> + +.macro SAVE reg + pushl_cfi %\reg + CFI_REL_OFFSET \reg, 0 +.endm + +.macro RESTORE reg + popl_cfi %\reg + CFI_RESTORE \reg +.endm + +.macro read64 reg + movl %ebx, %eax + movl %ecx, %edx +/* we need LOCK_PREFIX since otherwise cmpxchg8b always does the write */ + LOCK_PREFIX + cmpxchg8b (\reg) +.endm + +ENTRY(atomic64_read_cx8) + CFI_STARTPROC + + read64 %ecx + ret + CFI_ENDPROC +ENDPROC(atomic64_read_cx8) + +ENTRY(atomic64_set_cx8) + CFI_STARTPROC + +1: +/* we don't need LOCK_PREFIX since aligned 64-bit writes + * are atomic on 586 and newer */ + cmpxchg8b (%esi) + jne 1b + + ret + CFI_ENDPROC +ENDPROC(atomic64_set_cx8) + +ENTRY(atomic64_xchg_cx8) + CFI_STARTPROC + + movl %ebx, %eax + movl %ecx, %edx +1: + LOCK_PREFIX + cmpxchg8b (%esi) + jne 1b + + ret + CFI_ENDPROC +ENDPROC(atomic64_xchg_cx8) + +.macro addsub_return func ins insc +ENTRY(atomic64_\func\()_return_cx8) + CFI_STARTPROC + SAVE ebp + SAVE ebx + SAVE esi + SAVE edi + + movl %eax, %esi + movl %edx, %edi + movl %ecx, %ebp + + read64 %ebp +1: + movl %eax, %ebx + movl %edx, %ecx + \ins\()l %esi, %ebx + \insc\()l %edi, %ecx + LOCK_PREFIX + cmpxchg8b (%ebp) + jne 1b + +10: + movl %ebx, %eax + movl %ecx, %edx + RESTORE edi + RESTORE esi + RESTORE ebx + RESTORE ebp + ret + CFI_ENDPROC +ENDPROC(atomic64_\func\()_return_cx8) +.endm + +addsub_return add add adc +addsub_return sub sub sbb + +.macro incdec_return func ins insc +ENTRY(atomic64_\func\()_return_cx8) + CFI_STARTPROC + SAVE ebx + + read64 %esi +1: + movl %eax, %ebx + movl %edx, %ecx + \ins\()l $1, %ebx + \insc\()l $0, %ecx + LOCK_PREFIX + cmpxchg8b (%esi) + jne 1b + +10: + movl %ebx, %eax + movl %ecx, %edx + RESTORE ebx + ret + CFI_ENDPROC +ENDPROC(atomic64_\func\()_return_cx8) +.endm + +incdec_return inc add adc +incdec_return dec sub sbb + +ENTRY(atomic64_dec_if_positive_cx8) + CFI_STARTPROC + SAVE ebx + + read64 %esi +1: + movl %eax, %ebx + movl %edx, %ecx + subl $1, %ebx + sbb $0, %ecx + js 2f + LOCK_PREFIX + cmpxchg8b (%esi) + jne 1b + +2: + movl %ebx, %eax + movl %ecx, %edx + RESTORE ebx + ret + CFI_ENDPROC +ENDPROC(atomic64_dec_if_positive_cx8) + +ENTRY(atomic64_add_unless_cx8) + CFI_STARTPROC + SAVE ebp + SAVE ebx +/* these just push these two parameters on the stack */ + SAVE edi + SAVE esi + + movl %ecx, %ebp + movl %eax, %esi + movl %edx, %edi + + read64 %ebp +1: + cmpl %eax, 0(%esp) + je 4f +2: + movl %eax, %ebx + movl %edx, %ecx + addl %esi, %ebx + adcl %edi, %ecx + LOCK_PREFIX + cmpxchg8b (%ebp) + jne 1b + + movl $1, %eax +3: + addl $8, %esp + CFI_ADJUST_CFA_OFFSET -8 + RESTORE ebx + RESTORE ebp + ret +4: + cmpl %edx, 4(%esp) + jne 2b + xorl %eax, %eax + jmp 3b + CFI_ENDPROC +ENDPROC(atomic64_add_unless_cx8) + +ENTRY(atomic64_inc_not_zero_cx8) + CFI_STARTPROC + SAVE ebx + + read64 %esi +1: + testl %eax, %eax + je 4f +2: + movl %eax, %ebx + movl %edx, %ecx + addl $1, %ebx + adcl $0, %ecx + LOCK_PREFIX + cmpxchg8b (%esi) + jne 1b + + movl $1, %eax +3: + RESTORE ebx + ret +4: + testl %edx, %edx + jne 2b + jmp 3b + CFI_ENDPROC +ENDPROC(atomic64_inc_not_zero_cx8) -- 1.7.4.2 ------------------------------------------------------------------------------ Benefiting from Server Virtualization: Beyond Initial Workload Consolidation -- Increasing the use of server virtualization is a top priority.Virtualization can reduce costs, simplify management, and improve application availability and disaster protection. Learn more about boosting the value of server virtualization. http://p.sf.net/sfu/vmware-sfdev2dev _______________________________________________ User-mode-linux-devel mailing list User-mode-linux-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [uml-devel] [stable] [PATCH 2/3] um: Add support for 64 bit atomic operations 2011-04-20 11:34 ` [uml-devel] [PATCH 2/3] um: Add support for 64 bit atomic operations Richard Weinberger @ 2011-04-20 14:27 ` Greg KH 2011-04-20 14:29 ` Richard Weinberger 0 siblings, 1 reply; 7+ messages in thread From: Greg KH @ 2011-04-20 14:27 UTC (permalink / raw) To: Richard Weinberger; +Cc: stable, akpm, user-mode-linux-devel, linux-kernel On Wed, Apr 20, 2011 at 01:34:25PM +0200, Richard Weinberger wrote: > This adds support for 64 bit atomic operations on > 32 bit UML systems. > XFS needs them since 2.6.38. > > Reported-by: Martin Walch <walch.martin@web.de> > Tested-by: Martin Walch <walch.martin@web.de> > Cc: Martin Walch <walch.martin@web.de> > Cc: <stable@kernel.org> # .38.x 084189a: um: disable CONFIG_CMPXCHG_LOCAL Why is this a stable patch? confused, greg k-h ------------------------------------------------------------------------------ Benefiting from Server Virtualization: Beyond Initial Workload Consolidation -- Increasing the use of server virtualization is a top priority.Virtualization can reduce costs, simplify management, and improve application availability and disaster protection. Learn more about boosting the value of server virtualization. http://p.sf.net/sfu/vmware-sfdev2dev _______________________________________________ User-mode-linux-devel mailing list User-mode-linux-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [stable] [PATCH 2/3] um: Add support for 64 bit atomic operations 2011-04-20 14:27 ` [uml-devel] [stable] " Greg KH @ 2011-04-20 14:29 ` Richard Weinberger 2011-04-20 14:34 ` Greg KH 0 siblings, 1 reply; 7+ messages in thread From: Richard Weinberger @ 2011-04-20 14:29 UTC (permalink / raw) To: Greg KH; +Cc: akpm, Martin Walch, linux-kernel, user-mode-linux-devel, stable Am Mittwoch 20 April 2011, 16:27:02 schrieb Greg KH: > On Wed, Apr 20, 2011 at 01:34:25PM +0200, Richard Weinberger wrote: > > This adds support for 64 bit atomic operations on > > 32 bit UML systems. > > XFS needs them since 2.6.38. > > > > Reported-by: Martin Walch <walch.martin@web.de> > > Tested-by: Martin Walch <walch.martin@web.de> > > Cc: Martin Walch <walch.martin@web.de> > > Cc: <stable@kernel.org> # .38.x 084189a: um: disable CONFIG_CMPXCHG_LOCAL > > Why is this a stable patch? Because it fixes a build error in 2.6.38. See: https://bugzilla.kernel.org/show_bug.cgi?id=32812 Thanks, //richard > confused, > > greg k-h ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [stable] [PATCH 2/3] um: Add support for 64 bit atomic operations 2011-04-20 14:29 ` Richard Weinberger @ 2011-04-20 14:34 ` Greg KH 2011-04-20 14:36 ` Richard Weinberger 0 siblings, 1 reply; 7+ messages in thread From: Greg KH @ 2011-04-20 14:34 UTC (permalink / raw) To: Richard Weinberger Cc: akpm, Martin Walch, linux-kernel, user-mode-linux-devel, stable On Wed, Apr 20, 2011 at 04:29:23PM +0200, Richard Weinberger wrote: > Am Mittwoch 20 April 2011, 16:27:02 schrieb Greg KH: > > On Wed, Apr 20, 2011 at 01:34:25PM +0200, Richard Weinberger wrote: > > > This adds support for 64 bit atomic operations on > > > 32 bit UML systems. > > > XFS needs them since 2.6.38. > > > > > > Reported-by: Martin Walch <walch.martin@web.de> > > > Tested-by: Martin Walch <walch.martin@web.de> > > > Cc: Martin Walch <walch.martin@web.de> > > > Cc: <stable@kernel.org> # .38.x 084189a: um: disable CONFIG_CMPXCHG_LOCAL > > > > Why is this a stable patch? > > Because it fixes a build error in 2.6.38. > See: https://bugzilla.kernel.org/show_bug.cgi?id=32812 Then why not put that in the changelog entry in the first place? thanks, greg "please save me time" k-h ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [stable] [PATCH 2/3] um: Add support for 64 bit atomic operations 2011-04-20 14:34 ` Greg KH @ 2011-04-20 14:36 ` Richard Weinberger 0 siblings, 0 replies; 7+ messages in thread From: Richard Weinberger @ 2011-04-20 14:36 UTC (permalink / raw) To: Greg KH; +Cc: akpm, Martin Walch, linux-kernel, user-mode-linux-devel, stable Am Mittwoch 20 April 2011, 16:34:08 schrieb Greg KH: > On Wed, Apr 20, 2011 at 04:29:23PM +0200, Richard Weinberger wrote: > > Am Mittwoch 20 April 2011, 16:27:02 schrieb Greg KH: > > > On Wed, Apr 20, 2011 at 01:34:25PM +0200, Richard Weinberger wrote: > > > > This adds support for 64 bit atomic operations on > > > > 32 bit UML systems. > > > > XFS needs them since 2.6.38. > > > > > > > > Reported-by: Martin Walch <walch.martin@web.de> > > > > Tested-by: Martin Walch <walch.martin@web.de> > > > > Cc: Martin Walch <walch.martin@web.de> > > > > Cc: <stable@kernel.org> # .38.x 084189a: um: disable > > > > CONFIG_CMPXCHG_LOCAL > > > > > > Why is this a stable patch? > > > > Because it fixes a build error in 2.6.38. > > See: https://bugzilla.kernel.org/show_bug.cgi?id=32812 > > Then why not put that in the changelog entry in the first place? Sorry, will do better next time! Thanks, //richard > thanks, > > greg "please save me time" k-h ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 3/3] uml: fix hppfs build 2011-04-20 11:34 [PATCH 1/3] um: Adjust current_thread_info() for gcc-4.6 Richard Weinberger 2011-04-20 11:34 ` [uml-devel] [PATCH 2/3] um: Add support for 64 bit atomic operations Richard Weinberger @ 2011-04-20 11:34 ` Richard Weinberger 1 sibling, 0 replies; 7+ messages in thread From: Richard Weinberger @ 2011-04-20 11:34 UTC (permalink / raw) To: akpm; +Cc: linux-kernel, user-mode-linux-devel, Randy Dunlap, Richard Weinberger From: Randy Dunlap <randy.dunlap@oracle.com> Make HoneyPot ProcFS depend on CONFIG_PROC_FS so that it will build. Recommended by Christoph Hellwig. Fixes kernel bugzilla #33692: https://bugzilla.kernel.org/show_bug.cgi?id=33692 Reported-by: Simon Danner <danner.simon@gmail.com> Signed-off-by: Randy Dunlap <randy.dunlap@oracle.com> Cc: Jeff Dike <jdike@addtoit.com> Cc: user-mode-linux-devel@lists.sourceforge.net Cc: Christoph Hellwig <hch@infradead.org> Signed-off-by: Richard Weinberger <richard@nod.at> --- arch/um/Kconfig.um | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/arch/um/Kconfig.um b/arch/um/Kconfig.um index 90a438a..b5e675e 100644 --- a/arch/um/Kconfig.um +++ b/arch/um/Kconfig.um @@ -47,7 +47,7 @@ config HOSTFS config HPPFS tristate "HoneyPot ProcFS (EXPERIMENTAL)" - depends on EXPERIMENTAL + depends on EXPERIMENTAL && PROC_FS help hppfs (HoneyPot ProcFS) is a filesystem which allows UML /proc entries to be overridden, removed, or fabricated from the host. -- 1.7.4.2 ^ permalink raw reply related [flat|nested] 7+ messages in thread
end of thread, other threads:[~2011-04-20 14:36 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2011-04-20 11:34 [PATCH 1/3] um: Adjust current_thread_info() for gcc-4.6 Richard Weinberger 2011-04-20 11:34 ` [uml-devel] [PATCH 2/3] um: Add support for 64 bit atomic operations Richard Weinberger 2011-04-20 14:27 ` [uml-devel] [stable] " Greg KH 2011-04-20 14:29 ` Richard Weinberger 2011-04-20 14:34 ` Greg KH 2011-04-20 14:36 ` Richard Weinberger 2011-04-20 11:34 ` [PATCH 3/3] uml: fix hppfs build Richard Weinberger
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).