All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Shi, Yang" <yang.shi@linaro.org>
To: Steven Rostedt <rostedt@goodmis.org>,
	Dave Hansen <dave.hansen@intel.com>
Cc: akpm@linux-foundation.org, mingo@redhat.com,
	linux-kernel@vger.kernel.org, linux-mm@kvack.org,
	linaro-kernel@lists.linaro.org
Subject: Re: [PATCH V2 2/7] mm/gup: add gup trace points
Date: Thu, 03 Dec 2015 10:36:18 -0800	[thread overview]
Message-ID: <56608BA2.2050300@linaro.org> (raw)
In-Reply-To: <20151202231348.7058d6e2@grimm.local.home>

On 12/2/2015 8:13 PM, Steven Rostedt wrote:
> On Wed, 2 Dec 2015 15:36:50 -0800
> Dave Hansen <dave.hansen@intel.com> wrote:
>
>> On 12/02/2015 02:53 PM, Yang Shi wrote:
>>> diff --git a/mm/gup.c b/mm/gup.c
>>> index deafa2c..10245a4 100644
>>> --- a/mm/gup.c
>>> +++ b/mm/gup.c
>>> @@ -13,6 +13,9 @@
>>>   #include <linux/rwsem.h>
>>>   #include <linux/hugetlb.h>
>>>
>>> +#define CREATE_TRACE_POINTS
>>> +#include <trace/events/gup.h>
>>> +
>>>   #include <asm/pgtable.h>
>>>   #include <asm/tlbflush.h>
>>
>> This needs to be _the_ last thing that gets #included.  Otherwise, you
>> risk colliding with any other trace header that gets implicitly included
>> below.
>
> Agreed.
>
>>
>>> @@ -1340,6 +1346,8 @@ int __get_user_pages_fast(unsigned long start, int nr_pages, int write,
>>>   					start, len)))
>>>   		return 0;
>>>
>>> +	trace_gup_get_user_pages_fast(start, nr_pages, write, pages);
>>> +
>>>   	/*
>>>   	 * Disable interrupts.  We use the nested form as we can already have
>>>   	 * interrupts disabled by get_futex_key.
>>
>> It would be _really_ nice to be able to see return values from the
>> various gup calls as well.  Is that feasible?
>
> Only if you rewrite the functions to have a single return code path
> that we can add a tracepoint too. Or have a wrapper function that gets

Yes. My preliminary test just could cover the success case. gup could 
return errno from different a few code path.

> called directly that calls these functions internally and the tracepoint
> can trap the return value.

This will incur more changes in other subsystems (futex, kvm, etc), I'm 
not sure if it is worth making such changes to get return value.

> I can probably make function_graph tracer give return values, although
> it will give a return value for void functions as well. And it may give
> long long returns for int returns that may have bogus data in the
> higher bits.

If the return value requirement is not limited to gup, the approach 
sounds more reasonable.

Thanks,
Yang

>
> -- Steve
>

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

WARNING: multiple messages have this Message-ID (diff)
From: "Shi, Yang" <yang.shi@linaro.org>
To: Steven Rostedt <rostedt@goodmis.org>,
	Dave Hansen <dave.hansen@intel.com>
Cc: akpm@linux-foundation.org, mingo@redhat.com,
	linux-kernel@vger.kernel.org, linux-mm@kvack.org,
	linaro-kernel@lists.linaro.org
Subject: Re: [PATCH V2 2/7] mm/gup: add gup trace points
Date: Thu, 03 Dec 2015 10:36:18 -0800	[thread overview]
Message-ID: <56608BA2.2050300@linaro.org> (raw)
In-Reply-To: <20151202231348.7058d6e2@grimm.local.home>

On 12/2/2015 8:13 PM, Steven Rostedt wrote:
> On Wed, 2 Dec 2015 15:36:50 -0800
> Dave Hansen <dave.hansen@intel.com> wrote:
>
>> On 12/02/2015 02:53 PM, Yang Shi wrote:
>>> diff --git a/mm/gup.c b/mm/gup.c
>>> index deafa2c..10245a4 100644
>>> --- a/mm/gup.c
>>> +++ b/mm/gup.c
>>> @@ -13,6 +13,9 @@
>>>   #include <linux/rwsem.h>
>>>   #include <linux/hugetlb.h>
>>>
>>> +#define CREATE_TRACE_POINTS
>>> +#include <trace/events/gup.h>
>>> +
>>>   #include <asm/pgtable.h>
>>>   #include <asm/tlbflush.h>
>>
>> This needs to be _the_ last thing that gets #included.  Otherwise, you
>> risk colliding with any other trace header that gets implicitly included
>> below.
>
> Agreed.
>
>>
>>> @@ -1340,6 +1346,8 @@ int __get_user_pages_fast(unsigned long start, int nr_pages, int write,
>>>   					start, len)))
>>>   		return 0;
>>>
>>> +	trace_gup_get_user_pages_fast(start, nr_pages, write, pages);
>>> +
>>>   	/*
>>>   	 * Disable interrupts.  We use the nested form as we can already have
>>>   	 * interrupts disabled by get_futex_key.
>>
>> It would be _really_ nice to be able to see return values from the
>> various gup calls as well.  Is that feasible?
>
> Only if you rewrite the functions to have a single return code path
> that we can add a tracepoint too. Or have a wrapper function that gets

Yes. My preliminary test just could cover the success case. gup could 
return errno from different a few code path.

> called directly that calls these functions internally and the tracepoint
> can trap the return value.

This will incur more changes in other subsystems (futex, kvm, etc), I'm 
not sure if it is worth making such changes to get return value.

> I can probably make function_graph tracer give return values, although
> it will give a return value for void functions as well. And it may give
> long long returns for int returns that may have bogus data in the
> higher bits.

If the return value requirement is not limited to gup, the approach 
sounds more reasonable.

Thanks,
Yang

>
> -- Steve
>


  reply	other threads:[~2015-12-03 18:36 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-12-02 22:53 [RFC V2] Add gup trace points support Yang Shi
2015-12-02 22:53 ` Yang Shi
2015-12-02 22:53 ` [PATCH V2 1/7] trace/events: Add gup trace events Yang Shi
2015-12-02 22:53   ` Yang Shi
2015-12-03  4:07   ` Steven Rostedt
2015-12-03  4:07     ` Steven Rostedt
2015-12-03 18:36     ` Shi, Yang
2015-12-03 18:36       ` Shi, Yang
2015-12-02 22:53 ` [PATCH V2 2/7] mm/gup: add gup trace points Yang Shi
2015-12-02 22:53   ` Yang Shi
2015-12-02 23:36   ` Dave Hansen
2015-12-02 23:36     ` Dave Hansen
2015-12-03  0:11     ` Shi, Yang
2015-12-03  0:11       ` Shi, Yang
2015-12-03  0:52       ` Shi, Yang
2015-12-03  0:52         ` Shi, Yang
2015-12-03  4:13     ` Steven Rostedt
2015-12-03  4:13       ` Steven Rostedt
2015-12-03 18:36       ` Shi, Yang [this message]
2015-12-03 18:36         ` Shi, Yang
2015-12-03 19:06         ` Steven Rostedt
2015-12-03 19:06           ` Steven Rostedt
2015-12-03 22:10           ` Shi, Yang
2015-12-03 22:10             ` Shi, Yang
2015-12-02 22:53 ` [PATCH V2 3/7] x86: " Yang Shi
2015-12-02 22:53   ` Yang Shi
2015-12-02 22:53 ` [PATCH V2 4/7] mips: " Yang Shi
2015-12-02 22:53   ` Yang Shi
2015-12-02 22:53 ` [PATCH V2 5/7] s390: " Yang Shi
2015-12-02 22:53   ` Yang Shi
2015-12-02 22:53 ` [PATCH V2 6/7] sh: " Yang Shi
2015-12-02 22:53   ` Yang Shi
2015-12-02 22:53   ` Yang Shi
2015-12-02 22:53 ` [PATCH V2 7/7] sparc64: " Yang Shi
2015-12-02 22:53   ` Yang Shi
2015-12-02 22:53   ` Yang Shi

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=56608BA2.2050300@linaro.org \
    --to=yang.shi@linaro.org \
    --cc=akpm@linux-foundation.org \
    --cc=dave.hansen@intel.com \
    --cc=linaro-kernel@lists.linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mingo@redhat.com \
    --cc=rostedt@goodmis.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 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.