* [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
* [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
* 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
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.