* [PATCH] checkstack: use $UTS_MACHINE as target architecture
@ 2014-07-05 11:22 Konstantin Khlebnikov
2014-07-07 22:05 ` Andrew Morton
0 siblings, 1 reply; 18+ messages in thread
From: Konstantin Khlebnikov @ 2014-07-05 11:22 UTC (permalink / raw)
To: Andrew Morton, linux-kernel; +Cc: x86, user-mode-linux-devel, linux-kbuild
This fixes command # make checkstack for i386/x86_64.
Looks like $UTS_MACHINE is exactly what scripts/checkstack.pl needs.
By default $UTS_MACHINE is equal to $ARCH, but some arch/${ARCH}/Makefile
overrides it. This patch updates it also in arch/x86/Makefile.um
broken in ffee0de ("x86: Default to ARCH=x86 to avoid overriding CONFIG_64BIT")
Signed-off-by: Konstantin Khlebnikov <koct9i@gmail.com>
---
Makefile | 11 +----------
arch/x86/Makefile.um | 2 ++
2 files changed, 3 insertions(+), 10 deletions(-)
diff --git a/Makefile b/Makefile
index b0ee945..50fb690 100644
--- a/Makefile
+++ b/Makefile
@@ -1416,18 +1416,9 @@ endif #ifeq ($(mixed-targets),1)
PHONY += checkstack kernelrelease kernelversion image_name
-# UML needs a little special treatment here. It wants to use the host
-# toolchain, so needs $(SUBARCH) passed to checkstack.pl. Everyone
-# else wants $(ARCH), including people doing cross-builds, which means
-# that $(SUBARCH) doesn't work here.
-ifeq ($(ARCH), um)
-CHECKSTACK_ARCH := $(SUBARCH)
-else
-CHECKSTACK_ARCH := $(ARCH)
-endif
checkstack:
$(OBJDUMP) -d vmlinux $$(find . -name '*.ko') | \
- $(PERL) $(src)/scripts/checkstack.pl $(CHECKSTACK_ARCH)
+ $(PERL) $(src)/scripts/checkstack.pl $(UTS_MACHINE)
kernelrelease:
@echo "$(KERNELVERSION)$$($(CONFIG_SHELL) $(srctree)/scripts/setlocalversion $(srctree))"
diff --git a/arch/x86/Makefile.um b/arch/x86/Makefile.um
index 36b62bc..8fc912b 100644
--- a/arch/x86/Makefile.um
+++ b/arch/x86/Makefile.um
@@ -3,6 +3,7 @@ core-y += arch/x86/crypto/
ifeq ($(CONFIG_X86_32),y)
START := 0x8048000
+UTS_MACHINE := i386
LDFLAGS += -m elf_i386
ELF_ARCH := i386
ELF_FORMAT := elf32-i386
@@ -47,6 +48,7 @@ KBUILD_AFLAGS += -m64
LDFLAGS += -m elf_x86_64
KBUILD_CPPFLAGS += -m64
+UTS_MACHINE := x86_64
ELF_ARCH := i386:x86-64
ELF_FORMAT := elf64-x86-64
^ permalink raw reply related [flat|nested] 18+ messages in thread* Re: [PATCH] checkstack: use $UTS_MACHINE as target architecture 2014-07-05 11:22 [PATCH] checkstack: use $UTS_MACHINE as target architecture Konstantin Khlebnikov @ 2014-07-07 22:05 ` Andrew Morton 2014-07-08 5:48 ` Konstantin Khlebnikov 0 siblings, 1 reply; 18+ messages in thread From: Andrew Morton @ 2014-07-07 22:05 UTC (permalink / raw) To: Konstantin Khlebnikov Cc: linux-kernel, x86, user-mode-linux-devel, linux-kbuild On Sat, 05 Jul 2014 15:22:38 +0400 Konstantin Khlebnikov <koct9i@gmail.com> wrote: > This fixes command # make checkstack for i386/x86_64. > Looks like $UTS_MACHINE is exactly what scripts/checkstack.pl needs. > > By default $UTS_MACHINE is equal to $ARCH, but some arch/${ARCH}/Makefile > overrides it. This patch updates it also in arch/x86/Makefile.um > > broken in ffee0de ("x86: Default to ARCH=x86 to avoid overriding CONFIG_64BIT") The changelog doesn't describe the bug which is being fixed. It should do so please. If there are any compiler/make error messages then those should be included. ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH] checkstack: use $UTS_MACHINE as target architecture 2014-07-07 22:05 ` Andrew Morton @ 2014-07-08 5:48 ` Konstantin Khlebnikov 2014-07-08 8:01 ` [uml-devel] " Richard Weinberger 2014-07-08 10:31 ` Konstantin Khlebnikov 0 siblings, 2 replies; 18+ messages in thread From: Konstantin Khlebnikov @ 2014-07-08 5:48 UTC (permalink / raw) To: Andrew Morton; +Cc: Linux Kernel Mailing List, x86, UML devel, linux-kbuild On Tue, Jul 8, 2014 at 2:05 AM, Andrew Morton <akpm@linux-foundation.org> wrote: > On Sat, 05 Jul 2014 15:22:38 +0400 Konstantin Khlebnikov <koct9i@gmail.com> wrote: > >> This fixes command # make checkstack for i386/x86_64. >> Looks like $UTS_MACHINE is exactly what scripts/checkstack.pl needs. >> >> By default $UTS_MACHINE is equal to $ARCH, but some arch/${ARCH}/Makefile >> overrides it. This patch updates it also in arch/x86/Makefile.um >> >> broken in ffee0de ("x86: Default to ARCH=x86 to avoid overriding CONFIG_64BIT") > > The changelog doesn't describe the bug which is being fixed. It should > do so please. If there are any compiler/make error messages then those > should be included. > Oh, ok. checkstalk.pl needs either i386 or x86_64, x86 isn't enough. $ make checkstack objdump -d vmlinux $(find . -name '*.ko') | \ perl /home/blind/src/linux-stable/scripts/checkstack.pl x86 wrong or unknown architecture "x86" ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [uml-devel] [PATCH] checkstack: use $UTS_MACHINE as target architecture 2014-07-08 5:48 ` Konstantin Khlebnikov @ 2014-07-08 8:01 ` Richard Weinberger 2014-07-08 8:16 ` Konstantin Khlebnikov 2014-07-08 10:31 ` Konstantin Khlebnikov 1 sibling, 1 reply; 18+ messages in thread From: Richard Weinberger @ 2014-07-08 8:01 UTC (permalink / raw) To: Konstantin Khlebnikov Cc: Andrew Morton, x86@kernel.org, Linux Kernel Mailing List, UML devel, linux-kbuild On Tue, Jul 8, 2014 at 7:48 AM, Konstantin Khlebnikov <koct9i@gmail.com> wrote: > On Tue, Jul 8, 2014 at 2:05 AM, Andrew Morton <akpm@linux-foundation.org> wrote: >> On Sat, 05 Jul 2014 15:22:38 +0400 Konstantin Khlebnikov <koct9i@gmail.com> wrote: >> >>> This fixes command # make checkstack for i386/x86_64. >>> Looks like $UTS_MACHINE is exactly what scripts/checkstack.pl needs. >>> >>> By default $UTS_MACHINE is equal to $ARCH, but some arch/${ARCH}/Makefile >>> overrides it. This patch updates it also in arch/x86/Makefile.um >>> >>> broken in ffee0de ("x86: Default to ARCH=x86 to avoid overriding CONFIG_64BIT") >> >> The changelog doesn't describe the bug which is being fixed. It should >> do so please. If there are any compiler/make error messages then those >> should be included. >> > > Oh, ok. checkstalk.pl needs either i386 or x86_64, x86 isn't enough. > > $ make checkstack > objdump -d vmlinux $(find . -name '*.ko') | \ > perl /home/blind/src/linux-stable/scripts/checkstack.pl x86 > wrong or unknown architecture "x86" And now we need ARCH, SUBARCH and UTS_MACHINE on UML? :-( -- Thanks, //richard ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [uml-devel] [PATCH] checkstack: use $UTS_MACHINE as target architecture 2014-07-08 8:01 ` [uml-devel] " Richard Weinberger @ 2014-07-08 8:16 ` Konstantin Khlebnikov 2014-07-08 8:20 ` Richard Weinberger 0 siblings, 1 reply; 18+ messages in thread From: Konstantin Khlebnikov @ 2014-07-08 8:16 UTC (permalink / raw) To: Richard Weinberger Cc: Andrew Morton, x86@kernel.org, Linux Kernel Mailing List, UML devel, linux-kbuild On Tue, Jul 8, 2014 at 12:01 PM, Richard Weinberger <richard.weinberger@gmail.com> wrote: > On Tue, Jul 8, 2014 at 7:48 AM, Konstantin Khlebnikov <koct9i@gmail.com> wrote: >> On Tue, Jul 8, 2014 at 2:05 AM, Andrew Morton <akpm@linux-foundation.org> wrote: >>> On Sat, 05 Jul 2014 15:22:38 +0400 Konstantin Khlebnikov <koct9i@gmail.com> wrote: >>> >>>> This fixes command # make checkstack for i386/x86_64. >>>> Looks like $UTS_MACHINE is exactly what scripts/checkstack.pl needs. >>>> >>>> By default $UTS_MACHINE is equal to $ARCH, but some arch/${ARCH}/Makefile >>>> overrides it. This patch updates it also in arch/x86/Makefile.um >>>> >>>> broken in ffee0de ("x86: Default to ARCH=x86 to avoid overriding CONFIG_64BIT") >>> >>> The changelog doesn't describe the bug which is being fixed. It should >>> do so please. If there are any compiler/make error messages then those >>> should be included. >>> >> >> Oh, ok. checkstalk.pl needs either i386 or x86_64, x86 isn't enough. >> >> $ make checkstack >> objdump -d vmlinux $(find . -name '*.ko') | \ >> perl /home/blind/src/linux-stable/scripts/checkstack.pl x86 >> wrong or unknown architecture "x86" > > And now we need ARCH, SUBARCH and UTS_MACHINE on UML? :-( Nope UTS_MACHINE is autodetected, see hunk Makefile.x86 in my patch. I thought about cleaning this part of UML. For example we could move arch/x86/um into arch/um/x86 and use # make ARCH=um/x86 after collecting this stuff together it woud be easier to get rid of forever-broken parts. As I see UML has been designed to work everywhere but SMP seem never worked as well as any host os except of linux or other arch except x86. > > -- > Thanks, > //richard ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [uml-devel] [PATCH] checkstack: use $UTS_MACHINE as target architecture 2014-07-08 8:16 ` Konstantin Khlebnikov @ 2014-07-08 8:20 ` Richard Weinberger 2014-07-08 8:30 ` Konstantin Khlebnikov 0 siblings, 1 reply; 18+ messages in thread From: Richard Weinberger @ 2014-07-08 8:20 UTC (permalink / raw) To: Konstantin Khlebnikov Cc: Andrew Morton, x86@kernel.org, Linux Kernel Mailing List, UML devel, linux-kbuild Am 08.07.2014 10:16, schrieb Konstantin Khlebnikov: > On Tue, Jul 8, 2014 at 12:01 PM, Richard Weinberger > <richard.weinberger@gmail.com> wrote: >> On Tue, Jul 8, 2014 at 7:48 AM, Konstantin Khlebnikov <koct9i@gmail.com> wrote: >>> On Tue, Jul 8, 2014 at 2:05 AM, Andrew Morton <akpm@linux-foundation.org> wrote: >>>> On Sat, 05 Jul 2014 15:22:38 +0400 Konstantin Khlebnikov <koct9i@gmail.com> wrote: >>>> >>>>> This fixes command # make checkstack for i386/x86_64. >>>>> Looks like $UTS_MACHINE is exactly what scripts/checkstack.pl needs. >>>>> >>>>> By default $UTS_MACHINE is equal to $ARCH, but some arch/${ARCH}/Makefile >>>>> overrides it. This patch updates it also in arch/x86/Makefile.um >>>>> >>>>> broken in ffee0de ("x86: Default to ARCH=x86 to avoid overriding CONFIG_64BIT") >>>> >>>> The changelog doesn't describe the bug which is being fixed. It should >>>> do so please. If there are any compiler/make error messages then those >>>> should be included. >>>> >>> >>> Oh, ok. checkstalk.pl needs either i386 or x86_64, x86 isn't enough. >>> >>> $ make checkstack >>> objdump -d vmlinux $(find . -name '*.ko') | \ >>> perl /home/blind/src/linux-stable/scripts/checkstack.pl x86 >>> wrong or unknown architecture "x86" >> >> And now we need ARCH, SUBARCH and UTS_MACHINE on UML? :-( > > Nope UTS_MACHINE is autodetected, see hunk Makefile.x86 in my patch. > > I thought about cleaning this part of UML. > For example we could move arch/x86/um into arch/um/x86 and use # make > ARCH=um/x86 No way. We moved the x86 stuff to arch/x86/ a few Years ago by design. > after collecting this stuff together it woud be easier to get rid of > forever-broken parts. > As I see UML has been designed to work everywhere but SMP seem never worked > as well as any host os except of linux or other arch except x86. Currently UML runs only on x86_32/64. Adding/fixing SMP support should be doable. Thanks, //richard ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [uml-devel] [PATCH] checkstack: use $UTS_MACHINE as target architecture 2014-07-08 8:20 ` Richard Weinberger @ 2014-07-08 8:30 ` Konstantin Khlebnikov 2014-07-08 8:33 ` Richard Weinberger 0 siblings, 1 reply; 18+ messages in thread From: Konstantin Khlebnikov @ 2014-07-08 8:30 UTC (permalink / raw) To: Richard Weinberger Cc: Andrew Morton, x86@kernel.org, Linux Kernel Mailing List, UML devel, linux-kbuild On Tue, Jul 8, 2014 at 12:20 PM, Richard Weinberger <richard@nod.at> wrote: > Am 08.07.2014 10:16, schrieb Konstantin Khlebnikov: >> On Tue, Jul 8, 2014 at 12:01 PM, Richard Weinberger >> <richard.weinberger@gmail.com> wrote: >>> On Tue, Jul 8, 2014 at 7:48 AM, Konstantin Khlebnikov <koct9i@gmail.com> wrote: >>>> On Tue, Jul 8, 2014 at 2:05 AM, Andrew Morton <akpm@linux-foundation.org> wrote: >>>>> On Sat, 05 Jul 2014 15:22:38 +0400 Konstantin Khlebnikov <koct9i@gmail.com> wrote: >>>>> >>>>>> This fixes command # make checkstack for i386/x86_64. >>>>>> Looks like $UTS_MACHINE is exactly what scripts/checkstack.pl needs. >>>>>> >>>>>> By default $UTS_MACHINE is equal to $ARCH, but some arch/${ARCH}/Makefile >>>>>> overrides it. This patch updates it also in arch/x86/Makefile.um >>>>>> >>>>>> broken in ffee0de ("x86: Default to ARCH=x86 to avoid overriding CONFIG_64BIT") >>>>> >>>>> The changelog doesn't describe the bug which is being fixed. It should >>>>> do so please. If there are any compiler/make error messages then those >>>>> should be included. >>>>> >>>> >>>> Oh, ok. checkstalk.pl needs either i386 or x86_64, x86 isn't enough. >>>> >>>> $ make checkstack >>>> objdump -d vmlinux $(find . -name '*.ko') | \ >>>> perl /home/blind/src/linux-stable/scripts/checkstack.pl x86 >>>> wrong or unknown architecture "x86" >>> >>> And now we need ARCH, SUBARCH and UTS_MACHINE on UML? :-( >> >> Nope UTS_MACHINE is autodetected, see hunk Makefile.x86 in my patch. >> >> I thought about cleaning this part of UML. >> For example we could move arch/x86/um into arch/um/x86 and use # make >> ARCH=um/x86 > > No way. We moved the x86 stuff to arch/x86/ a few Years ago by design. Ok, fine. We could leave it in arch/x86/um and use make ARCH=x86/um > >> after collecting this stuff together it woud be easier to get rid of >> forever-broken parts. >> As I see UML has been designed to work everywhere but SMP seem never worked >> as well as any host os except of linux or other arch except x86. > > Currently UML runs only on x86_32/64. > Adding/fixing SMP support should be doable. This might be quite difficult on top of current ptrace-based design. I thought about running userspace in kvm context, this might be much faster than ptrace but requires indirect uaccess like for 4gb-split. But it's very unlikely that I'll find time for that. > > Thanks, > //richard ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [uml-devel] [PATCH] checkstack: use $UTS_MACHINE as target architecture 2014-07-08 8:30 ` Konstantin Khlebnikov @ 2014-07-08 8:33 ` Richard Weinberger 2014-07-08 8:47 ` Konstantin Khlebnikov 0 siblings, 1 reply; 18+ messages in thread From: Richard Weinberger @ 2014-07-08 8:33 UTC (permalink / raw) To: Konstantin Khlebnikov Cc: Andrew Morton, x86@kernel.org, Linux Kernel Mailing List, UML devel, linux-kbuild Am 08.07.2014 10:30, schrieb Konstantin Khlebnikov: > On Tue, Jul 8, 2014 at 12:20 PM, Richard Weinberger <richard@nod.at> wrote: >> Am 08.07.2014 10:16, schrieb Konstantin Khlebnikov: >>> On Tue, Jul 8, 2014 at 12:01 PM, Richard Weinberger >>> <richard.weinberger@gmail.com> wrote: >>>> On Tue, Jul 8, 2014 at 7:48 AM, Konstantin Khlebnikov <koct9i@gmail.com> wrote: >>>>> On Tue, Jul 8, 2014 at 2:05 AM, Andrew Morton <akpm@linux-foundation.org> wrote: >>>>>> On Sat, 05 Jul 2014 15:22:38 +0400 Konstantin Khlebnikov <koct9i@gmail.com> wrote: >>>>>> >>>>>>> This fixes command # make checkstack for i386/x86_64. >>>>>>> Looks like $UTS_MACHINE is exactly what scripts/checkstack.pl needs. >>>>>>> >>>>>>> By default $UTS_MACHINE is equal to $ARCH, but some arch/${ARCH}/Makefile >>>>>>> overrides it. This patch updates it also in arch/x86/Makefile.um >>>>>>> >>>>>>> broken in ffee0de ("x86: Default to ARCH=x86 to avoid overriding CONFIG_64BIT") >>>>>> >>>>>> The changelog doesn't describe the bug which is being fixed. It should >>>>>> do so please. If there are any compiler/make error messages then those >>>>>> should be included. >>>>>> >>>>> >>>>> Oh, ok. checkstalk.pl needs either i386 or x86_64, x86 isn't enough. >>>>> >>>>> $ make checkstack >>>>> objdump -d vmlinux $(find . -name '*.ko') | \ >>>>> perl /home/blind/src/linux-stable/scripts/checkstack.pl x86 >>>>> wrong or unknown architecture "x86" >>>> >>>> And now we need ARCH, SUBARCH and UTS_MACHINE on UML? :-( >>> >>> Nope UTS_MACHINE is autodetected, see hunk Makefile.x86 in my patch. >>> >>> I thought about cleaning this part of UML. >>> For example we could move arch/x86/um into arch/um/x86 and use # make >>> ARCH=um/x86 >> >> No way. We moved the x86 stuff to arch/x86/ a few Years ago by design. > > Ok, fine. We could leave it in arch/x86/um and use make ARCH=x86/um I don't like this. Please keep ARCH=um as is. >> >>> after collecting this stuff together it woud be easier to get rid of >>> forever-broken parts. >>> As I see UML has been designed to work everywhere but SMP seem never worked >>> as well as any host os except of linux or other arch except x86. >> >> Currently UML runs only on x86_32/64. >> Adding/fixing SMP support should be doable. > > This might be quite difficult on top of current ptrace-based design. > I thought about running userspace in kvm context, this might be much > faster than ptrace but requires indirect uaccess like for 4gb-split. > But it's very unlikely that I'll find time for that. Erm, UML is a systemcall emulator based on ptrace(). If you make it use any KVM backend there is 0 usecase for UML because we can just use qemu/kvmtool. Thanks, //richard ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [uml-devel] [PATCH] checkstack: use $UTS_MACHINE as target architecture 2014-07-08 8:33 ` Richard Weinberger @ 2014-07-08 8:47 ` Konstantin Khlebnikov 2014-07-08 8:50 ` Richard Weinberger 0 siblings, 1 reply; 18+ messages in thread From: Konstantin Khlebnikov @ 2014-07-08 8:47 UTC (permalink / raw) To: Richard Weinberger Cc: Andrew Morton, x86@kernel.org, Linux Kernel Mailing List, UML devel, linux-kbuild On Tue, Jul 8, 2014 at 12:33 PM, Richard Weinberger <richard@nod.at> wrote: > Am 08.07.2014 10:30, schrieb Konstantin Khlebnikov: >> On Tue, Jul 8, 2014 at 12:20 PM, Richard Weinberger <richard@nod.at> wrote: >>> Am 08.07.2014 10:16, schrieb Konstantin Khlebnikov: >>>> On Tue, Jul 8, 2014 at 12:01 PM, Richard Weinberger >>>> <richard.weinberger@gmail.com> wrote: >>>>> On Tue, Jul 8, 2014 at 7:48 AM, Konstantin Khlebnikov <koct9i@gmail.com> wrote: >>>>>> On Tue, Jul 8, 2014 at 2:05 AM, Andrew Morton <akpm@linux-foundation.org> wrote: >>>>>>> On Sat, 05 Jul 2014 15:22:38 +0400 Konstantin Khlebnikov <koct9i@gmail.com> wrote: >>>>>>> >>>>>>>> This fixes command # make checkstack for i386/x86_64. >>>>>>>> Looks like $UTS_MACHINE is exactly what scripts/checkstack.pl needs. >>>>>>>> >>>>>>>> By default $UTS_MACHINE is equal to $ARCH, but some arch/${ARCH}/Makefile >>>>>>>> overrides it. This patch updates it also in arch/x86/Makefile.um >>>>>>>> >>>>>>>> broken in ffee0de ("x86: Default to ARCH=x86 to avoid overriding CONFIG_64BIT") >>>>>>> >>>>>>> The changelog doesn't describe the bug which is being fixed. It should >>>>>>> do so please. If there are any compiler/make error messages then those >>>>>>> should be included. >>>>>>> >>>>>> >>>>>> Oh, ok. checkstalk.pl needs either i386 or x86_64, x86 isn't enough. >>>>>> >>>>>> $ make checkstack >>>>>> objdump -d vmlinux $(find . -name '*.ko') | \ >>>>>> perl /home/blind/src/linux-stable/scripts/checkstack.pl x86 >>>>>> wrong or unknown architecture "x86" >>>>> >>>>> And now we need ARCH, SUBARCH and UTS_MACHINE on UML? :-( >>>> >>>> Nope UTS_MACHINE is autodetected, see hunk Makefile.x86 in my patch. >>>> >>>> I thought about cleaning this part of UML. >>>> For example we could move arch/x86/um into arch/um/x86 and use # make >>>> ARCH=um/x86 >>> >>> No way. We moved the x86 stuff to arch/x86/ a few Years ago by design. >> >> Ok, fine. We could leave it in arch/x86/um and use make ARCH=x86/um > > I don't like this. Please keep ARCH=um as is. > >>> >>>> after collecting this stuff together it woud be easier to get rid of >>>> forever-broken parts. >>>> As I see UML has been designed to work everywhere but SMP seem never worked >>>> as well as any host os except of linux or other arch except x86. >>> >>> Currently UML runs only on x86_32/64. >>> Adding/fixing SMP support should be doable. >> >> This might be quite difficult on top of current ptrace-based design. >> I thought about running userspace in kvm context, this might be much >> faster than ptrace but requires indirect uaccess like for 4gb-split. >> But it's very unlikely that I'll find time for that. > > Erm, UML is a systemcall emulator based on ptrace(). > If you make it use any KVM backend there is 0 usecase for UML because we can just use qemu/kvmtool. But kernel stays in userspace, so it could be easily debugged. It's like merge kvmtool+linux into one application. > > Thanks, > //richard ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [uml-devel] [PATCH] checkstack: use $UTS_MACHINE as target architecture 2014-07-08 8:47 ` Konstantin Khlebnikov @ 2014-07-08 8:50 ` Richard Weinberger 2014-07-08 9:03 ` Konstantin Khlebnikov 0 siblings, 1 reply; 18+ messages in thread From: Richard Weinberger @ 2014-07-08 8:50 UTC (permalink / raw) To: Konstantin Khlebnikov Cc: Andrew Morton, x86@kernel.org, Linux Kernel Mailing List, UML devel, linux-kbuild Am 08.07.2014 10:47, schrieb Konstantin Khlebnikov: > On Tue, Jul 8, 2014 at 12:33 PM, Richard Weinberger <richard@nod.at> wrote: >> Am 08.07.2014 10:30, schrieb Konstantin Khlebnikov: >>> On Tue, Jul 8, 2014 at 12:20 PM, Richard Weinberger <richard@nod.at> wrote: >>>> Am 08.07.2014 10:16, schrieb Konstantin Khlebnikov: >>>>> On Tue, Jul 8, 2014 at 12:01 PM, Richard Weinberger >>>>> <richard.weinberger@gmail.com> wrote: >>>>>> On Tue, Jul 8, 2014 at 7:48 AM, Konstantin Khlebnikov <koct9i@gmail.com> wrote: >>>>>>> On Tue, Jul 8, 2014 at 2:05 AM, Andrew Morton <akpm@linux-foundation.org> wrote: >>>>>>>> On Sat, 05 Jul 2014 15:22:38 +0400 Konstantin Khlebnikov <koct9i@gmail.com> wrote: >>>>>>>> >>>>>>>>> This fixes command # make checkstack for i386/x86_64. >>>>>>>>> Looks like $UTS_MACHINE is exactly what scripts/checkstack.pl needs. >>>>>>>>> >>>>>>>>> By default $UTS_MACHINE is equal to $ARCH, but some arch/${ARCH}/Makefile >>>>>>>>> overrides it. This patch updates it also in arch/x86/Makefile.um >>>>>>>>> >>>>>>>>> broken in ffee0de ("x86: Default to ARCH=x86 to avoid overriding CONFIG_64BIT") >>>>>>>> >>>>>>>> The changelog doesn't describe the bug which is being fixed. It should >>>>>>>> do so please. If there are any compiler/make error messages then those >>>>>>>> should be included. >>>>>>>> >>>>>>> >>>>>>> Oh, ok. checkstalk.pl needs either i386 or x86_64, x86 isn't enough. >>>>>>> >>>>>>> $ make checkstack >>>>>>> objdump -d vmlinux $(find . -name '*.ko') | \ >>>>>>> perl /home/blind/src/linux-stable/scripts/checkstack.pl x86 >>>>>>> wrong or unknown architecture "x86" >>>>>> >>>>>> And now we need ARCH, SUBARCH and UTS_MACHINE on UML? :-( >>>>> >>>>> Nope UTS_MACHINE is autodetected, see hunk Makefile.x86 in my patch. >>>>> >>>>> I thought about cleaning this part of UML. >>>>> For example we could move arch/x86/um into arch/um/x86 and use # make >>>>> ARCH=um/x86 >>>> >>>> No way. We moved the x86 stuff to arch/x86/ a few Years ago by design. >>> >>> Ok, fine. We could leave it in arch/x86/um and use make ARCH=x86/um >> >> I don't like this. Please keep ARCH=um as is. >> >>>> >>>>> after collecting this stuff together it woud be easier to get rid of >>>>> forever-broken parts. >>>>> As I see UML has been designed to work everywhere but SMP seem never worked >>>>> as well as any host os except of linux or other arch except x86. >>>> >>>> Currently UML runs only on x86_32/64. >>>> Adding/fixing SMP support should be doable. >>> >>> This might be quite difficult on top of current ptrace-based design. >>> I thought about running userspace in kvm context, this might be much >>> faster than ptrace but requires indirect uaccess like for 4gb-split. >>> But it's very unlikely that I'll find time for that. >> >> Erm, UML is a systemcall emulator based on ptrace(). >> If you make it use any KVM backend there is 0 usecase for UML because we can just use qemu/kvmtool. > > But kernel stays in userspace, so it could be easily debugged. > It's like merge kvmtool+linux into one application. You can already do this with qemu. It has a -gdb switch. Thanks, //richard ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [uml-devel] [PATCH] checkstack: use $UTS_MACHINE as target architecture 2014-07-08 8:50 ` Richard Weinberger @ 2014-07-08 9:03 ` Konstantin Khlebnikov 2014-07-08 9:06 ` Richard Weinberger 0 siblings, 1 reply; 18+ messages in thread From: Konstantin Khlebnikov @ 2014-07-08 9:03 UTC (permalink / raw) To: Richard Weinberger Cc: Andrew Morton, x86@kernel.org, Linux Kernel Mailing List, UML devel, linux-kbuild On Tue, Jul 8, 2014 at 12:50 PM, Richard Weinberger <richard@nod.at> wrote: > Am 08.07.2014 10:47, schrieb Konstantin Khlebnikov: >> On Tue, Jul 8, 2014 at 12:33 PM, Richard Weinberger <richard@nod.at> wrote: >>> Am 08.07.2014 10:30, schrieb Konstantin Khlebnikov: >>>> On Tue, Jul 8, 2014 at 12:20 PM, Richard Weinberger <richard@nod.at> wrote: >>>>> Am 08.07.2014 10:16, schrieb Konstantin Khlebnikov: >>>>>> On Tue, Jul 8, 2014 at 12:01 PM, Richard Weinberger >>>>>> <richard.weinberger@gmail.com> wrote: >>>>>>> On Tue, Jul 8, 2014 at 7:48 AM, Konstantin Khlebnikov <koct9i@gmail.com> wrote: >>>>>>>> On Tue, Jul 8, 2014 at 2:05 AM, Andrew Morton <akpm@linux-foundation.org> wrote: >>>>>>>>> On Sat, 05 Jul 2014 15:22:38 +0400 Konstantin Khlebnikov <koct9i@gmail.com> wrote: >>>>>>>>> >>>>>>>>>> This fixes command # make checkstack for i386/x86_64. >>>>>>>>>> Looks like $UTS_MACHINE is exactly what scripts/checkstack.pl needs. >>>>>>>>>> >>>>>>>>>> By default $UTS_MACHINE is equal to $ARCH, but some arch/${ARCH}/Makefile >>>>>>>>>> overrides it. This patch updates it also in arch/x86/Makefile.um >>>>>>>>>> >>>>>>>>>> broken in ffee0de ("x86: Default to ARCH=x86 to avoid overriding CONFIG_64BIT") >>>>>>>>> >>>>>>>>> The changelog doesn't describe the bug which is being fixed. It should >>>>>>>>> do so please. If there are any compiler/make error messages then those >>>>>>>>> should be included. >>>>>>>>> >>>>>>>> >>>>>>>> Oh, ok. checkstalk.pl needs either i386 or x86_64, x86 isn't enough. >>>>>>>> >>>>>>>> $ make checkstack >>>>>>>> objdump -d vmlinux $(find . -name '*.ko') | \ >>>>>>>> perl /home/blind/src/linux-stable/scripts/checkstack.pl x86 >>>>>>>> wrong or unknown architecture "x86" >>>>>>> >>>>>>> And now we need ARCH, SUBARCH and UTS_MACHINE on UML? :-( >>>>>> >>>>>> Nope UTS_MACHINE is autodetected, see hunk Makefile.x86 in my patch. >>>>>> >>>>>> I thought about cleaning this part of UML. >>>>>> For example we could move arch/x86/um into arch/um/x86 and use # make >>>>>> ARCH=um/x86 >>>>> >>>>> No way. We moved the x86 stuff to arch/x86/ a few Years ago by design. >>>> >>>> Ok, fine. We could leave it in arch/x86/um and use make ARCH=x86/um >>> >>> I don't like this. Please keep ARCH=um as is. >>> >>>>> >>>>>> after collecting this stuff together it woud be easier to get rid of >>>>>> forever-broken parts. >>>>>> As I see UML has been designed to work everywhere but SMP seem never worked >>>>>> as well as any host os except of linux or other arch except x86. >>>>> >>>>> Currently UML runs only on x86_32/64. >>>>> Adding/fixing SMP support should be doable. >>>> >>>> This might be quite difficult on top of current ptrace-based design. >>>> I thought about running userspace in kvm context, this might be much >>>> faster than ptrace but requires indirect uaccess like for 4gb-split. >>>> But it's very unlikely that I'll find time for that. >>> >>> Erm, UML is a systemcall emulator based on ptrace(). >>> If you make it use any KVM backend there is 0 usecase for UML because we can just use qemu/kvmtool. >> >> But kernel stays in userspace, so it could be easily debugged. >> It's like merge kvmtool+linux into one application. > > You can already do this with qemu. It has a -gdb switch. I know. But debugging/profiling of kernel code is much easier when it runs in userspace. I think this is the last use case where uml might beat normal hardware accelerated qemu/kvm. But without SMP and with that high overhead on each syscall and context/mm switch it's mostly useless. > > Thanks, > //richard ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [uml-devel] [PATCH] checkstack: use $UTS_MACHINE as target architecture 2014-07-08 9:03 ` Konstantin Khlebnikov @ 2014-07-08 9:06 ` Richard Weinberger 2014-07-08 9:09 ` Geert Uytterhoeven 0 siblings, 1 reply; 18+ messages in thread From: Richard Weinberger @ 2014-07-08 9:06 UTC (permalink / raw) To: Konstantin Khlebnikov Cc: Andrew Morton, x86@kernel.org, Linux Kernel Mailing List, UML devel, linux-kbuild Am 08.07.2014 11:03, schrieb Konstantin Khlebnikov: > I know. But debugging/profiling of kernel code is much easier when it > runs in userspace. > I think this is the last use case where uml might beat normal hardware > accelerated qemu/kvm. > But without SMP and with that high overhead on each syscall and > context/mm switch it's mostly useless. The major use case of UML is that you can run it on hardware without KVM support. Everyone else is using KVM. Thanks, //richard ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [uml-devel] [PATCH] checkstack: use $UTS_MACHINE as target architecture 2014-07-08 9:06 ` Richard Weinberger @ 2014-07-08 9:09 ` Geert Uytterhoeven 2014-07-08 9:14 ` Richard Weinberger 0 siblings, 1 reply; 18+ messages in thread From: Geert Uytterhoeven @ 2014-07-08 9:09 UTC (permalink / raw) To: Richard Weinberger Cc: Konstantin Khlebnikov, Andrew Morton, x86@kernel.org, Linux Kernel Mailing List, UML devel, linux-kbuild On Tue, Jul 8, 2014 at 11:06 AM, Richard Weinberger <richard@nod.at> wrote: > Am 08.07.2014 11:03, schrieb Konstantin Khlebnikov: >> I know. But debugging/profiling of kernel code is much easier when it >> runs in userspace. >> I think this is the last use case where uml might beat normal hardware >> accelerated qemu/kvm. >> But without SMP and with that high overhead on each syscall and >> context/mm switch it's mostly useless. > > The major use case of UML is that you can run it on hardware without > KVM support. > Everyone else is using KVM. And that you don't need root permissions to run it. Which is why I'm still interested in an ARM port. Need... More... Spare... Time... Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [uml-devel] [PATCH] checkstack: use $UTS_MACHINE as target architecture 2014-07-08 9:09 ` Geert Uytterhoeven @ 2014-07-08 9:14 ` Richard Weinberger 2014-07-08 9:22 ` Geert Uytterhoeven 0 siblings, 1 reply; 18+ messages in thread From: Richard Weinberger @ 2014-07-08 9:14 UTC (permalink / raw) To: Geert Uytterhoeven Cc: Konstantin Khlebnikov, Andrew Morton, x86@kernel.org, Linux Kernel Mailing List, UML devel, linux-kbuild Am 08.07.2014 11:09, schrieb Geert Uytterhoeven: > On Tue, Jul 8, 2014 at 11:06 AM, Richard Weinberger <richard@nod.at> wrote: >> Am 08.07.2014 11:03, schrieb Konstantin Khlebnikov: >>> I know. But debugging/profiling of kernel code is much easier when it >>> runs in userspace. >>> I think this is the last use case where uml might beat normal hardware >>> accelerated qemu/kvm. >>> But without SMP and with that high overhead on each syscall and >>> context/mm switch it's mostly useless. >> >> The major use case of UML is that you can run it on hardware without >> KVM support. >> Everyone else is using KVM. > > And that you don't need root permissions to run it. > Which is why I'm still interested in an ARM port. > Need... More... Spare... Time... You can use KVM also without being root. It depends on the rights of /dev/kvm. But yes, an ARM ports would be nice to have. :) Thanks, //richard ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [uml-devel] [PATCH] checkstack: use $UTS_MACHINE as target architecture 2014-07-08 9:14 ` Richard Weinberger @ 2014-07-08 9:22 ` Geert Uytterhoeven 2014-07-08 9:23 ` Richard Weinberger 0 siblings, 1 reply; 18+ messages in thread From: Geert Uytterhoeven @ 2014-07-08 9:22 UTC (permalink / raw) To: Richard Weinberger Cc: Konstantin Khlebnikov, Andrew Morton, x86@kernel.org, Linux Kernel Mailing List, UML devel, linux-kbuild On Tue, Jul 8, 2014 at 11:14 AM, Richard Weinberger <richard@nod.at> wrote: >> And that you don't need root permissions to run it. > > You can use KVM also without being root. > It depends on the rights of /dev/kvm. Which are controlled by... root. Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [uml-devel] [PATCH] checkstack: use $UTS_MACHINE as target architecture 2014-07-08 9:22 ` Geert Uytterhoeven @ 2014-07-08 9:23 ` Richard Weinberger 0 siblings, 0 replies; 18+ messages in thread From: Richard Weinberger @ 2014-07-08 9:23 UTC (permalink / raw) To: Geert Uytterhoeven Cc: Konstantin Khlebnikov, Andrew Morton, x86@kernel.org, Linux Kernel Mailing List, UML devel, linux-kbuild Am 08.07.2014 11:22, schrieb Geert Uytterhoeven: > On Tue, Jul 8, 2014 at 11:14 AM, Richard Weinberger <richard@nod.at> wrote: >>> And that you don't need root permissions to run it. >> >> You can use KVM also without being root. >> It depends on the rights of /dev/kvm. > > Which are controlled by... root. Okay, you need to run KVM on machines where root does not like you? ;-) Thanks, //richard ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH] checkstack: use $UTS_MACHINE as target architecture 2014-07-08 5:48 ` Konstantin Khlebnikov 2014-07-08 8:01 ` [uml-devel] " Richard Weinberger @ 2014-07-08 10:31 ` Konstantin Khlebnikov 2014-07-08 10:35 ` [PATCH] scripts/checkstack.pl: automatically handle 32-bit and 64-bit mode for ARCH=x86 Konstantin Khlebnikov 1 sibling, 1 reply; 18+ messages in thread From: Konstantin Khlebnikov @ 2014-07-08 10:31 UTC (permalink / raw) To: Andrew Morton Cc: Linux Kernel Mailing List, x86@kernel.org, UML devel, linux-kbuild On Tue, Jul 8, 2014 at 9:48 AM, Konstantin Khlebnikov <koct9i@gmail.com> wrote: > On Tue, Jul 8, 2014 at 2:05 AM, Andrew Morton <akpm@linux-foundation.org> wrote: >> On Sat, 05 Jul 2014 15:22:38 +0400 Konstantin Khlebnikov <koct9i@gmail.com> wrote: >> >>> This fixes command # make checkstack for i386/x86_64. >>> Looks like $UTS_MACHINE is exactly what scripts/checkstack.pl needs. >>> >>> By default $UTS_MACHINE is equal to $ARCH, but some arch/${ARCH}/Makefile >>> overrides it. This patch updates it also in arch/x86/Makefile.um >>> >>> broken in ffee0de ("x86: Default to ARCH=x86 to avoid overriding CONFIG_64BIT") >> >> The changelog doesn't describe the bug which is being fixed. It should >> do so please. If there are any compiler/make error messages then those >> should be included. >> > > Oh, ok. checkstalk.pl needs either i386 or x86_64, x86 isn't enough. > > $ make checkstack > objdump -d vmlinux $(find . -name '*.ko') | \ > perl /home/blind/src/linux-stable/scripts/checkstack.pl x86 > wrong or unknown architecture "x86" I guess it still not descriptive enough. checkstack.pl searches patterns of machine instructions which are usually used for allocating stack frames. commit ffee0de ("x86: Default to ARCH=x86 to avoid overriding CONFIG_64BIT") had merged ARCH=i386 and ARCH=x86_64 into one ARCH=x86. checkstalk.pl needs either i386 or x86_64, x86 isn't enough. $ make checkstack objdump -d vmlinux $(find . -name '*.ko') | \ perl linux/scripts/checkstack.pl x86 wrong or unknown architecture "x86" This also might be fixed in checkstack.pl: i386 and x86_64 differs only in name of sp register: %esp/%rsp. ^ permalink raw reply [flat|nested] 18+ messages in thread
* [PATCH] scripts/checkstack.pl: automatically handle 32-bit and 64-bit mode for ARCH=x86 2014-07-08 10:31 ` Konstantin Khlebnikov @ 2014-07-08 10:35 ` Konstantin Khlebnikov 0 siblings, 0 replies; 18+ messages in thread From: Konstantin Khlebnikov @ 2014-07-08 10:35 UTC (permalink / raw) To: Andrew Morton Cc: x86@kernel.org, Linux Kernel Mailing List, user-mode-linux-devel, linux-kbuild This patch adds support for ARCH=x86 into checkstack. commit ffee0de ("x86: Default to ARCH=x86 to avoid overriding CONFIG_64BIT") had merged ARCH=i386 and ARCH=x86_64 into one ARCH=x86. checkstack.pl searches patterns of machine instructions which are usually used for allocating stack frames. checkstalk.pl needs either i386 or x86_64, x86 isn't enough: $ make checkstack objdump -d vmlinux $(find . -name '*.ko') | \ perl linux/scripts/checkstack.pl x86 wrong or unknown architecture "x86" Signed-off-by: Konstantin Khlebnikov <koct9i@gmail.com> --- scripts/checkstack.pl | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/scripts/checkstack.pl b/scripts/checkstack.pl index c05d586..899b423 100755 --- a/scripts/checkstack.pl +++ b/scripts/checkstack.pl @@ -52,14 +52,12 @@ my (@stack, $re, $dre, $x, $xs, $funcre); #8000008a: 20 1d sub sp,4 #80000ca8: fa cd 05 b0 sub sp,sp,1456 $re = qr/^.*sub.*sp.*,([0-9]{1,8})/o; - } elsif ($arch =~ /^i[3456]86$/) { + } elsif ($arch =~ /^x86(_64)?$/ || $arch =~ /^i[3456]86$/) { #c0105234: 81 ec ac 05 00 00 sub $0x5ac,%esp - $re = qr/^.*[as][du][db] \$(0x$x{1,8}),\%esp$/o; - $dre = qr/^.*[as][du][db] (%.*),\%esp$/o; - } elsif ($arch eq 'x86_64') { - # 2f60: 48 81 ec e8 05 00 00 sub $0x5e8,%rsp - $re = qr/^.*[as][du][db] \$(0x$x{1,8}),\%rsp$/o; - $dre = qr/^.*[as][du][db] (\%.*),\%rsp$/o; + # or + # 2f60: 48 81 ec e8 05 00 00 sub $0x5e8,%rsp + $re = qr/^.*[as][du][db] \$(0x$x{1,8}),\%(e|r)sp$/o; + $dre = qr/^.*[as][du][db] (%.*),\%(e|r)sp$/o; } elsif ($arch eq 'ia64') { #e0000000044011fc: 01 0f fc 8c adds r12=-384,r12 $re = qr/.*adds.*r12=-(([0-9]{2}|[3-9])[0-9]{2}),r12/o; ^ permalink raw reply related [flat|nested] 18+ messages in thread
end of thread, other threads:[~2014-07-08 10:36 UTC | newest] Thread overview: 18+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2014-07-05 11:22 [PATCH] checkstack: use $UTS_MACHINE as target architecture Konstantin Khlebnikov 2014-07-07 22:05 ` Andrew Morton 2014-07-08 5:48 ` Konstantin Khlebnikov 2014-07-08 8:01 ` [uml-devel] " Richard Weinberger 2014-07-08 8:16 ` Konstantin Khlebnikov 2014-07-08 8:20 ` Richard Weinberger 2014-07-08 8:30 ` Konstantin Khlebnikov 2014-07-08 8:33 ` Richard Weinberger 2014-07-08 8:47 ` Konstantin Khlebnikov 2014-07-08 8:50 ` Richard Weinberger 2014-07-08 9:03 ` Konstantin Khlebnikov 2014-07-08 9:06 ` Richard Weinberger 2014-07-08 9:09 ` Geert Uytterhoeven 2014-07-08 9:14 ` Richard Weinberger 2014-07-08 9:22 ` Geert Uytterhoeven 2014-07-08 9:23 ` Richard Weinberger 2014-07-08 10:31 ` Konstantin Khlebnikov 2014-07-08 10:35 ` [PATCH] scripts/checkstack.pl: automatically handle 32-bit and 64-bit mode for ARCH=x86 Konstantin Khlebnikov
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox