diff mbox

checkstack: use $UTS_MACHINE as target architecture

Message ID 20140705112238.16142.42735.stgit@zurg (mailing list archive)
State New, archived
Headers show

Commit Message

Konstantin Khlebnikov July 5, 2014, 11:22 a.m. UTC
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(-)


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

Comments

Andrew Morton July 7, 2014, 10:05 p.m. UTC | #1
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.

--
To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Konstantin Khlebnikov July 8, 2014, 5:48 a.m. UTC | #2
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"
--
To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Richard Weinberger July 8, 2014, 8:01 a.m. UTC | #3
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? :-(
Konstantin Khlebnikov July 8, 2014, 8:16 a.m. UTC | #4
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
--
To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Richard Weinberger July 8, 2014, 8:20 a.m. UTC | #5
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
--
To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Konstantin Khlebnikov July 8, 2014, 8:30 a.m. UTC | #6
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
--
To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Richard Weinberger July 8, 2014, 8:33 a.m. UTC | #7
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
--
To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Konstantin Khlebnikov July 8, 2014, 8:47 a.m. UTC | #8
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
--
To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Richard Weinberger July 8, 2014, 8:50 a.m. UTC | #9
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
--
To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Konstantin Khlebnikov July 8, 2014, 9:03 a.m. UTC | #10
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
--
To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Richard Weinberger July 8, 2014, 9:06 a.m. UTC | #11
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
--
To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Geert Uytterhoeven July 8, 2014, 9:09 a.m. UTC | #12
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
--
To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Richard Weinberger July 8, 2014, 9:14 a.m. UTC | #13
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
--
To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Geert Uytterhoeven July 8, 2014, 9:22 a.m. UTC | #14
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
--
To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Richard Weinberger July 8, 2014, 9:23 a.m. UTC | #15
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
--
To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Konstantin Khlebnikov July 8, 2014, 10:31 a.m. UTC | #16
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.
--
To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

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