* [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; 8+ 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] 8+ 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 ` Greg KH 2011-04-20 11:34 ` [PATCH 3/3] uml: fix hppfs build Richard Weinberger 1 sibling, 1 reply; 8+ 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] 8+ 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 0 siblings, 0 replies; 8+ 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] 8+ messages in thread
* Re: [stable] [PATCH 2/3] um: Add support for 64 bit atomic operations @ 2011-04-20 14:27 ` Greg KH 0 siblings, 0 replies; 8+ messages in thread From: Greg KH @ 2011-04-20 14:27 UTC (permalink / raw) To: Richard Weinberger Cc: akpm, Martin Walch, linux-kernel, user-mode-linux-devel, stable 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 ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [stable] [PATCH 2/3] um: Add support for 64 bit atomic operations 2011-04-20 14:27 ` Greg KH (?) @ 2011-04-20 14:29 ` Richard Weinberger 2011-04-20 14:34 ` Greg KH -1 siblings, 1 reply; 8+ 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] 8+ 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; 8+ 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] 8+ 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; 8+ 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] 8+ 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; 8+ 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] 8+ messages in thread
end of thread, other threads:[~2011-04-20 14:36 UTC | newest] Thread overview: 8+ 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:27 ` 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 an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.