public inbox for linux-ia64@vger.kernel.org
 help / color / mirror / Atom feed
From: Shaohua Li <shaohua.li@intel.com>
To: linux-ia64@vger.kernel.org
Subject: Re: [PATCH 5/5] IA64 dynamic ftrace support
Date: Thu, 25 Dec 2008 04:01:11 +0000	[thread overview]
Message-ID: <20081225040111.GA14101@sli10-desk.sh.intel.com> (raw)
In-Reply-To: <1230012500.10933.102.camel@sli10-desk.sh.intel.com>

On Thu, Dec 25, 2008 at 11:54:33AM +0800, Steven Rostedt wrote:
> 
> On Thu, 2008-12-25 at 09:08 +0800, Shaohua Li wrote:
> > On Thu, Dec 25, 2008 at 05:50:50AM +0800, Keith Owens wrote:
> > > On Wed, 24 Dec 2008 08:29:05 -0500, 
> > > Steven Rostedt <srostedt@redhat.com> wrote:
> > > >Yes I understand that the module and kernel code is set up differently,
> > > >PPC is pretty much the same in this aspect. I'm asking if it is easy to
> > > >change a call from the module to kernel core to another function in
> > > >kernel core?
> > > >
> > > >Question: if I have a call from the module to _mcount, how much has to
> > > >change in the set up of the registers to make it call ftrace_call
> > > >instead?  Perhaps we could link in a call to ftrace_call via the tricks
> > > >in recordmcount.pl to get the info needed to make that change?
> > > 
> > > The IA64 kernel uses the same gp register throughout, it is compiled
> > > with -mconstant-gp.  So changing the target address from one kernel
> > > function to another only requires changing the destination address in
> > > the PLT stub, no other registers are affected.
> > yes, for kernel, this is simple. Just changing the target address is ok,
> > and the change is atomic, as it's a 64-bit write. For module, it's not
> > simple. Module has different gp register against kernel. In a module,
> > _mcount must save its gp first and then jump to kernel. That's why we
> > can't directly use a jump.
> > 
> > I'm considering link some code to ftrace_call in recordmcount.pl, but
> > recordmocunt.pl is called for each file. If a module has multiple files,
> > there will be some duplicate code. Another issue how can we find the
> > code's address when ftrace to convert code to nop.
> 
> Since this still sounds like PPC actions, I'll try to show a pseudo code
> style example.
> 
> I'm assuming that a call to mcount from a module looks something like
> this:
> 
> 	save module gp
> 	load kernel gp
> 	jump to mcount (or to a mcount trampoline)
> 
> Since mcount and ftrace_caller share the same gp, could we not just
> change that jmp to ftrace_caller instead? (or to a trampoline to
> ftrace_caller as we do in PPC).
As the 25bit limit, we must use a mcount trampoline. In IA64, PLT stub
will do:
load kernel gp
jump to mcount
the PLT stub doesn't save gp, so it's not ok for the trampoline. This is
what I said We need add another trampoline code to module. Loading
module in IA64 only can add PLT stub, we need other approach for the
trampoline code.

Thanks,
Shaohua

  parent reply	other threads:[~2008-12-25  4:01 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-12-23  6:08 [PATCH 5/5] IA64 dynamic ftrace support Shaohua Li
2008-12-23 14:35 ` Steven Rostedt
2008-12-24  0:54 ` Shaohua Li
2008-12-24  1:00 ` Steven Rostedt
2008-12-24  8:08 ` Shaohua Li
2008-12-24 13:29 ` Steven Rostedt
2008-12-24 21:50 ` Keith Owens
2008-12-25  1:08 ` Shaohua Li
2008-12-25  3:54 ` Steven Rostedt
2008-12-25  4:01 ` Shaohua Li [this message]
2008-12-26  2:42 ` Shaohua Li
2008-12-31  9:11 ` Shaohua Li
2009-01-06  0:42 ` Luck, Tony
2009-01-08  8:05 ` Shaohua Li
2009-01-08 17:08 ` Steven Rostedt
2009-01-08 20:25 ` Luck, Tony
2009-01-08 22:24 ` Luck, Tony
2009-01-09  2:42 ` Shaohua Li

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=20081225040111.GA14101@sli10-desk.sh.intel.com \
    --to=shaohua.li@intel.com \
    --cc=linux-ia64@vger.kernel.org \
    /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