linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Roland McGrath <roland@redhat.com>
To: Russell King <rmk+lkml@arm.linux.org.uk>
Cc: Andrew Morton <akpm@linux-foundation.org>, linux-kernel@vger.kernel.org
Subject: arm utrace
Date: Mon,  5 Mar 2007 02:41:13 -0800 (PST)	[thread overview]
Message-ID: <20070305104114.1BFC1180055@magilla.sf.frob.com> (raw)
In-Reply-To: Russell King's message of  Saturday, 3 March 2007 18:03:00 +0000 <20070303180300.GA10382@flint.arm.linux.org.uk>

Thanks for the feedback, and sorry for the typo in my email address in the
porting howto (I've fixed that).

> 1. support for changing the syscall number.  From the changes which
>    Roland has done in arch/arm/kernel/ptrace.c, it seems that we are
>    no longer allowed to change the syscall number.  Why is this?

Any changes I made in arch code were part of mass query-replace changes and
other things I did while grepping for symbols I was removing.  I didn't
intend to remove any useful code and anything changing something wrongly
was an error on my part probably due to misunderstanding the arch code.  
I was just trying to leave arch's I wasn't porting myself slightly closer
to a compilable state.  I'd be glad to amend anything in the patch that is
not right.

>    We need to support a special "SET_SYSCALL" call which is passed the
>    new syscall number.  This needs to be passed to the child, and
>    when the child returns from syscall_trace(), it needs to return this
>    new data as the system call number.

I see.  I don't understand why you don't use regs->ARM_ORIG_r0 for this,
but I am not the expert.  If in fact there is no slot in struct pt_regs
that is right to use, the utrace way to do this is to add another regset
containing just the one word of "syscall about to be made".  It only needs
to be meaningfully settable and gettable when at the syscall entry stop.
Your PTRACE_SET_SYSCALL support would use this.

> 2. tracehook_abort_syscall can not be supported on ARM - syscall numbers
>    aren't (always) passed through the register set.

We can change the signature to (struct task_struct *, struct pt_regs *).
Then following the above plan it can do tsk->thread.syscall = -1.

> 3. single step support.  no idea how to do this with utrace; the
>    documentation seems to imply that utrace will not support software-
>    based single stepping when it involves modifying the text, and that
>    it can continue to be supported via the ptrace compatibility.
> 
>    Since this is the only way to do single stepping on ARM, this means
>    that we need to support ptrace indefinitely.

What those remarks mean is that UTRACE_ACTION_SINGLESTEP will only ever be
for something with semantics like hardware single-step support has, i.e. no
side effects on memory or anything else outside the thread's CPU state.
That is not to say that software single-step will never be implemented in
the utrace world.  

What you need is temporary breakpoint insertion, ideally a breakpoint that
would be per-thread.  Eventually we will have a general facility based on
utrace that provides breakpoints, and later per-thread breakpoints, and it
will get improved over time.  New things using utrace can see
ARCH_HAS_SINGLE_STEP not set and fall back to using breakpoint insertion,
and they will know the different ramifications it might have on the
semantics or performance compared to a machine where UTRACE_ACTION_SINGLESTEP
is available.  ptrace can be like this when that infrastructure is available.
In the meantime, ptrace alone can use the old code and nothing is lost.

> Finally, there's quite a bit of cleanup work which needs to be done for
> utrace - namely removing all the pesky linux/ptrace.h includes scattered
> throughout the tree.  This is by far the biggest problem I've faced in
> trying to tackle utrace soo far.

If that's the worst problem you have, we're in fat city!  I think it's good
to reduce linux/ptrace.h includes so the dependency goes away from every
place not actually dealing with ptrace.  The trap frame struct pt_regs is
traditionally defined in asm/ptrace.h, so that needs to be included in a
lot of places, but linux/ptrace.h is just ptrace hooey nothing much inside
the kernel needs to see.


Thanks,
Roland

  reply	other threads:[~2007-03-05 11:00 UTC|newest]

Thread overview: 129+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-03-02 11:00 2.6.21-rc2-mm1 Andrew Morton
2007-03-02 11:04 ` 2.6.21-rc2-mm1 Andrew Morton
2007-03-02 17:30   ` 2.6.21-rc2-mm1 Randy Dunlap
2007-03-04 11:58   ` [Re: 2.6.21-rc2-mm1] #error no ROMFS backing store interface configured Maciej Rutecki
2007-03-04 12:11     ` Andrew Morton
2007-03-04 15:11       ` Maciej Rutecki
2007-03-04 15:11     ` David Howells
2007-03-04 15:25       ` Adrian Bunk
2007-03-04 15:35       ` David Howells
2007-03-05  1:49         ` [-mm patch] fix the ROMFS_* dependencies Adrian Bunk
2007-03-05 13:36         ` David Howells
2007-03-06 23:43           ` Adrian Bunk
2007-03-02 11:04 ` 2.6.21-rc2-mm1 Russell King
2007-03-02 11:08   ` 2.6.21-rc2-mm1 Andrew Morton
2007-03-02 11:10     ` 2.6.21-rc2-mm1 Russell King
2007-03-02 11:15       ` 2.6.21-rc2-mm1 Andrew Morton
2007-03-03 18:03         ` 2.6.21-rc2-mm1 Russell King
2007-03-05 10:41           ` Roland McGrath [this message]
2007-03-02 14:05 ` 2.6.21-rc2-mm1: EIP is at ext2_discard_reservation+0x1c/0x52 Alexey Dobriyan
2007-03-02 14:24 ` 2.6.21-rc2-mm1 Bryan Wu
2007-03-02 14:40 ` [-mm patch] cpu_idle: fix build break Frederik Deweerdt
2007-03-02 15:24   ` Venkatesh Pallipadi
2007-03-02 16:24     ` Frederik Deweerdt
2007-03-02 15:42 ` 2.6.21-rc2-mm1 - build error with HOTPLUG_CPU=N, CPU_IDLE=Y Valdis.Kletnieks
2007-03-02 15:56 ` 2.6.21-rc2-mm1 Michal Piotrowski
2007-03-05 10:14   ` 2.6.21-rc2-mm1 Andrew Morton
2007-03-05 10:30     ` 2.6.21-rc2-mm1 Antonino A. Daplas
2007-03-02 16:03 ` 2.6.21-rc2-mm1 - fb_ddc_read() not defined Valdis.Kletnieks
2007-03-02 16:31   ` James Simmons
2007-03-02 16:51     ` Valdis.Kletnieks
2007-03-02 16:19 ` [PATCH] longhaul pci_find_device -> pci_get_device conversion (was: Re: 2.6.21-rc2-mm1) Michal Piotrowski
     [not found]   ` <3888a5cd0703020945r4ca51f3dxe981050b817e7594@mail.gmail.com>
2007-03-02 18:10     ` Michal Piotrowski
2007-03-02 16:32 ` 2.6.21-rc2-mm1 Badari Pulavarty
2007-03-02 17:03   ` [patch -mm] x86_64: fake numa cmdline flag fix David Rientjes
2007-03-02 17:21     ` Badari Pulavarty
2007-03-02 17:10   ` 2.6.21-rc2-mm1 Andrew Morton
2007-03-02 17:15     ` 2.6.21-rc2-mm1 Badari Pulavarty
2007-03-02 21:12 ` 2.6.21-rc2-mm1: what about CONFIG_NO_HZ and !CONFIG_SMP ? Laurent Riffard
2007-03-02 20:57   ` Siddha, Suresh B
2007-03-02 22:09     ` Laurent Riffard
2007-03-02 22:52 ` 2.6.21-rc2-mm1: pata_via: wrong cable detection Laurent Riffard
2007-03-02 23:05 ` [PATCH -mm] char/epca.c remove unused function (was: Re: 2.6.21-rc2-mm1) Michal Piotrowski
2007-03-03  0:48   ` Alan Cox
2007-03-02 23:42 ` 2.6.21-rc2-mm1 Michal Piotrowski
2007-03-03  0:40   ` 2.6.21-rc2-mm1 Andrew Morton
2007-03-03  1:22     ` 2.6.21-rc2-mm1 Michal Piotrowski
2007-03-03  1:41       ` 2.6.21-rc2-mm1 Andrew Morton
2007-03-03 10:08         ` 2.6.21-rc2-mm1 Michal Piotrowski
2007-03-03 12:06           ` 2.6.21-rc2-mm1 Andrew Morton
2007-03-03  7:45 ` 2.6.21-rc2-mm1 - build error with CONFIG_NO_HZ=y and CONFIG_SMP=n Antonino A. Daplas
2007-03-03  7:59   ` Andrew Morton
2007-03-03 15:39 ` Keyboard stops working after *lock [Was: 2.6.21-rc2-mm1] Jiri Slaby
2007-03-03 15:54   ` Jiri Slaby
2007-03-03 17:41     ` Andrew Morton
2007-03-09 10:31       ` Jiri Slaby
2007-03-09 14:13         ` Dmitry Torokhov
2007-03-09 14:40           ` Jiri Kosina
2007-03-09 16:01             ` Jiri Kosina
2007-03-09 16:48               ` Jiri Slaby
2007-03-09 17:10                 ` Jiri Slaby
2007-03-11 21:39               ` Jiri Slaby
2007-03-11 21:47                 ` Jiri Kosina
2007-03-11 21:53                   ` Jiri Slaby
2007-03-11 22:11                     ` Jiri Slaby
2007-03-12  9:08                   ` Jiri Slaby
2007-03-12 15:09                     ` Alan Stern
2007-03-12 16:28                       ` Jiri Slaby
2007-03-12 19:56                         ` Alan Stern
2007-03-12 21:00                         ` Jiri Kosina
2007-03-12 22:32                           ` Jiri Slaby
2007-03-13 16:01                             ` Alan Stern
2007-03-13 16:13                               ` Jiri Slaby
2007-03-13 16:30                                 ` Alan Stern
2007-03-15 20:00                                 ` Alan Stern
2007-03-16 10:52                                   ` Jiri Slaby
2007-03-17 22:50                                   ` Jiri Slaby
2007-03-18  2:39                                     ` Alan Stern
2007-03-18  8:46                                       ` Jiri Slaby
2007-03-18 14:26                                         ` Alan Stern
2007-03-18 14:36                                           ` Jiri Slaby
2007-03-18 15:39                                             ` Alan Stern
2007-03-18 15:45                                               ` Jiri Slaby
2007-03-18 16:11                                                 ` Alan Stern
2007-03-04  9:07 ` 2.6.21-rc2-mm1 Mariusz Kozlowski
2007-03-04  9:48   ` 2.6.21-rc2-mm1 Mariusz Kozlowski
2007-03-04 11:34   ` 2.6.21-rc2-mm1 Andrew Morton
2007-03-04 12:01     ` 2.6.21-rc2-mm1 Mariusz Kozlowski
2007-03-04 17:06       ` 2.6.21-rc2-mm1 Mariusz Kozlowski
2007-03-04 17:13         ` 2.6.21-rc2-mm1 Michal Piotrowski
2007-03-04 17:20           ` 2.6.21-rc2-mm1 Michal Piotrowski
2007-03-05 16:34   ` 2.6.21-rc2-mm1 Zan Lynx
2007-03-05  0:11 ` 2.6.21-rc2-mm1 J.A. Magallón
2007-03-05  0:29   ` 2.6.21-rc2-mm1 Andrew Morton
2007-03-05  1:17   ` 2.6.21-rc2-mm1 Andrew Morton
2007-03-05  2:25     ` 2.6.21-rc2-mm1 Neil Brown
2007-03-05 15:42       ` 2.6.21-rc2-mm1 Bill Davidsen
2007-03-05  1:47 ` [-mm patch] saa7134: fix MODULES=n compilation Adrian Bunk
2007-03-05  1:47 ` 2.6.21-rc2-mm1: drivers/net/wireless/ compile error Adrian Bunk
2007-03-05 10:41   ` Michael Buesch
2007-03-05  1:47 ` 2.6.21-rc2-mm1: drivers/usb/host/ohci-ssb.c doesn't compile Adrian Bunk
2007-03-05 10:49   ` Michael Buesch
2007-03-05 10:57     ` Michael Buesch
2007-03-05 11:26       ` Michael Buesch
2007-03-05 18:26         ` Greg KH
2007-03-05 18:37           ` Adrian Bunk
2007-03-05 18:42         ` David Brownell
2007-03-05 19:09           ` Michael Buesch
2007-03-05  1:47 ` [-mm patch] arch/i386/kernel/vmi.c must #include <asm/kmap_types.h> Adrian Bunk
2007-03-05  2:57   ` Zachary Amsden
2007-03-05  1:47 ` [-mm patch] remove arch/i386/kernel/tsc.c:custom_sched_clock Adrian Bunk
2007-03-05  2:57   ` Zachary Amsden
2007-03-05  1:47 ` [-mm patch] make drivers/char/drm/drm_vm.c:drm_io_prot() static Adrian Bunk
2007-03-05  1:47 ` [-mm patch] drivers/cpuidle/: make code static Adrian Bunk
2007-03-05  1:49 ` [-mm patch] drivers/media/video/ivtv/: possible cleanups Adrian Bunk
2007-03-05  6:53   ` [v4l-dvb-maintainer] " Hans Verkuil
2007-03-05  1:49 ` [-mm patch] drivers/net/bonding/bond_main.c:make 3 functions static Adrian Bunk
2007-03-05  1:49 ` [-mm patch] make drivers/video/display/display-sysfs.c:display_class static Adrian Bunk
2007-03-05  1:49 ` [-mm patch] make fb_deferred_io_mkwrite() static Adrian Bunk
2007-03-05  1:49 ` [-mm patch] drivers/video/hecubafb.c: make 4 functions static Adrian Bunk
2007-03-05 22:20 ` 2.6.21-rc2-mm1 J.A. Magallón
2007-03-05 23:11   ` 2.6.21-rc2-mm1 Andrew Morton
2007-03-06  6:25     ` [PATCH] sched: fix idle at tick Con Kolivas
     [not found]       ` <20070305230240.9c2741d1.akpm@linux-foundation.org>
2007-03-06  7:41         ` Con Kolivas
2007-03-06  8:38           ` J.A. Magallón
2007-03-06  0:16 ` i2c vs nVidia [Re: 2.6.21-rc2-mm1] J.A. Magallón
2007-03-06  0:33   ` Andrew Morton
2007-03-06  0:44     ` Greg KH
2007-03-06  8:45       ` Jean Delvare
2007-03-06 10:56         ` Jean Delvare

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20070305104114.1BFC1180055@magilla.sf.frob.com \
    --to=roland@redhat.com \
    --cc=akpm@linux-foundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rmk+lkml@arm.linux.org.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).