All of lore.kernel.org
 help / color / mirror / Atom feed
From: Don Slutz <dslutz@verizon.com>
To: Ian Campbell <Ian.Campbell@citrix.com>
Cc: Stefano Stabellini <stefano.stabellini@eu.citrix.com>,
	George Dunlap <george.dunlap@eu.citrix.com>,
	Don Slutz <Don@CloudSwitch.com>,
	Ian Jackson <ian.jackson@eu.citrix.com>,
	Don Slutz <dslutz@verizon.com>,
	xen-devel@lists.xen.org, Jan Beulich <jbeulich@suse.com>
Subject: Re: [PATCH v5 03/17] xenctx: Add -n (--display-stack-pages) option to output larger stack
Date: Sat, 22 Mar 2014 16:49:55 -0400	[thread overview]
Message-ID: <532DF773.4050103@terremark.com> (raw)
In-Reply-To: <1395412141.19839.105.camel@kazak.uk.xensource.com>

On 03/21/14 10:29, Ian Campbell wrote:
> On Thu, 2014-03-20 at 15:06 -0400, Don Slutz wrote:
>> From: Don Slutz <Don@CloudSwitch.com>
>>
>> Important: This is the stack size to display not the configured
>> stack size.
>>
>> Note: use with caution (easy to get garbage).
>>
>> Below is various pictures of a configured 3 page stack, and where
>> the SP currently is.  Each box is a page.
>>
>>         +------------------+
>>         |                  |
>>         |                  |
>>         |                  |
>>         |                  |
>>         |                  |
>>         +------------------+
>>         |                  |
>>         |                  |
>>         |                  |
>>         |                  |
>>         |                  |
>>         +------------------+
>>         |                  |
>>         |                  |
>>         |                  |
>> SP --> |                  |
>>         |                  |
>>         +------------------+
>>
>> Display using "-n 1" since the used stack pages is 1.
> Like George I am also confused by what these diagrams are trying to show
> me, and even having read your response to him I'm confused.

Let me try again.

Here is real output for a kernel with 4 page stacks:

tools/xentrace/xenctx -s ~/zzm 4 -n 1
rip: ffffffff81346876 io_serial_in+0x16
flags: 00000002 nz
rsp: ffff8800385a5ab8
rax: 000000000000006f   rcx: 0000000000000000   rdx: 00000000000003fd
rbx: ffffffff81ff8f00   rsi: 0000000000000005   rdi: ffffffff81ff8f00
rbp: ffff8800385a5ab8    r8: ffffffff81c03a10    r9: 0000000000000080
r10: 0000000000000005   r11: 0000000000000046   r12: 000000000000270f
r13: 0000000000000020   r14: 0000000000000025   r15: ffffffff81346f20
  cs: 0010        ss: 0018        ds: 0000        es: 0000
  fs: 0000 @ 00007f07972f3700
  gs: 0000 @ ffff88000b400000/0000000000000000/
Code (instr addr ffffffff81346876)
48 89 e5 0f 1f 44 00 00 0f b6 4f 41 0f b7 57 08 d3 e6 01 f2 ec <0f> b6 
c0 c9 c3 0f 1f 44 00 00 55


Stack:
  ffff8800385a5ae8 ffffffff81346e64 ffffffff81ff8f00 0000000000000072
  0000000000000064 0000000000000025 ffff8800385a5b08 ffffffff81346f46
  ffffffff81e3e430 ffffffff81ff8f00 ffff8800385a5b48 ffffffff813428de
  ffffffff8100bc0e 0000000000000000 ffffffff81ff8f00 0000000000000001
  0000000000000064 ffffffff81e3e40c ffff8800385a5b98 ffffffff813472ad

Call Trace:
   [<ffffffff81346876>] io_serial_in+0x16 <--
   [<ffffffff81346e64>] wait_for_xmitr+0x24
   [<ffffffff81346f46>] serial8250_console_putchar+0x26
   [<ffffffff813428de>] uart_console_write+0x3e
   [<ffffffff8100bc0e>] apic_timer_interrupt+0xe
   [<ffffffff813472ad>] serial8250_console_write+0xbd
   [<ffffffff8106b8f5>] __call_console_drivers+0x75
   [<ffffffff8106b95a>] _call_console_drivers+0x4a
   [<ffffffff8106be6e>] release_console_sem+0x4e
   [<ffffffff8106c628>] vprintk+0x248
   [<ffffffff814fd363>] printk+0x41


tools/xentrace/xenctx -s ~/zzm 4 -n 2
rip: ffffffff81346876 io_serial_in+0x16
flags: 00000002 nz
rsp: ffff8800385a5ab8
rax: 000000000000006f   rcx: 0000000000000000   rdx: 00000000000003fd
rbx: ffffffff81ff8f00   rsi: 0000000000000005   rdi: ffffffff81ff8f00
rbp: ffff8800385a5ab8    r8: ffffffff81c03a10    r9: 0000000000000080
r10: 0000000000000005   r11: 0000000000000046   r12: 000000000000270f
r13: 0000000000000020   r14: 0000000000000025   r15: ffffffff81346f20
  cs: 0010        ss: 0018        ds: 0000        es: 0000
  fs: 0000 @ 00007f07972f3700
  gs: 0000 @ ffff88000b400000/0000000000000000/
Code (instr addr ffffffff81346876)
48 89 e5 0f 1f 44 00 00 0f b6 4f 41 0f b7 57 08 d3 e6 01 f2 ec <0f> b6 
c0 c9 c3 0f 1f 44 00 00 55


Stack:
  ffff8800385a5ae8 ffffffff81346e64 ffffffff81ff8f00 0000000000000072
  0000000000000064 0000000000000025 ffff8800385a5b08 ffffffff81346f46
  ffffffff81e3e430 ffffffff81ff8f00 ffff8800385a5b48 ffffffff813428de
  ffffffff8100bc0e 0000000000000000 ffffffff81ff8f00 0000000000000001
  0000000000000064 ffffffff81e3e40c ffff8800385a5b98 ffffffff813472ad

Call Trace:
   [<ffffffff81346876>] io_serial_in+0x16 <--
   [<ffffffff81346e64>] wait_for_xmitr+0x24
   [<ffffffff81346f46>] serial8250_console_putchar+0x26
   [<ffffffff813428de>] uart_console_write+0x3e
   [<ffffffff8100bc0e>] apic_timer_interrupt+0xe
   [<ffffffff813472ad>] serial8250_console_write+0xbd
   [<ffffffff8106b8f5>] __call_console_drivers+0x75
   [<ffffffff8106b95a>] _call_console_drivers+0x4a
   [<ffffffff8106be6e>] release_console_sem+0x4e
   [<ffffffff8106c628>] vprintk+0x248
   [<ffffffff814fd363>] printk+0x41


tools/xentrace/xenctx -s ~/zzm 4 -n 3
rip: ffffffff81346876 io_serial_in+0x16
flags: 00000002 nz
rsp: ffff8800385a5ab8
rax: 000000000000006f   rcx: 0000000000000000   rdx: 00000000000003fd
rbx: ffffffff81ff8f00   rsi: 0000000000000005   rdi: ffffffff81ff8f00
rbp: ffff8800385a5ab8    r8: ffffffff81c03a10    r9: 0000000000000080
r10: 0000000000000005   r11: 0000000000000046   r12: 000000000000270f
r13: 0000000000000020   r14: 0000000000000025   r15: ffffffff81346f20
  cs: 0010        ss: 0018        ds: 0000        es: 0000
  fs: 0000 @ 00007f07972f3700
  gs: 0000 @ ffff88000b400000/0000000000000000/
Code (instr addr ffffffff81346876)
48 89 e5 0f 1f 44 00 00 0f b6 4f 41 0f b7 57 08 d3 e6 01 f2 ec <0f> b6 
c0 c9 c3 0f 1f 44 00 00 55


Stack:
  ffff8800385a5ae8 ffffffff81346e64 ffffffff81ff8f00 0000000000000072
  0000000000000064 0000000000000025 ffff8800385a5b08 ffffffff81346f46
  ffffffff81e3e430 ffffffff81ff8f00 ffff8800385a5b48 ffffffff813428de
  ffffffff8100bc0e 0000000000000000 ffffffff81ff8f00 0000000000000001
  0000000000000064 ffffffff81e3e40c ffff8800385a5b98 ffffffff813472ad

Call Trace:
   [<ffffffff81346876>] io_serial_in+0x16 <--
   [<ffffffff81346e64>] wait_for_xmitr+0x24
   [<ffffffff81346f46>] serial8250_console_putchar+0x26
   [<ffffffff813428de>] uart_console_write+0x3e
   [<ffffffff8100bc0e>] apic_timer_interrupt+0xe
   [<ffffffff813472ad>] serial8250_console_write+0xbd
   [<ffffffff8106b8f5>] __call_console_drivers+0x75
   [<ffffffff8106b95a>] _call_console_drivers+0x4a
   [<ffffffff8106be6e>] release_console_sem+0x4e
   [<ffffffff8106c628>] vprintk+0x248
   [<ffffffff814fd363>] printk+0x41
   [<ffffffff8100204c>] do_one_initcall+0x3c
   [<ffffffff810b0eb1>] sys_init_module+0xe1
   [<ffffffff8100b0f2>] system_call_fastpath+0x16



As you can see from above, only the last 3 lines show up for "-n 3"


>
> Why is the SP moving around in these pictures? I understood that this
> option was changing what was considered to be the limit of the stack,
> not the stack pointer itself, so shouldn't it be the base of the stack
> which is moving around?

These are pictures of the same stack at 3 different times.  And as you 
can see
from above, this option does change the stack limit.


>
> Perhaps if you had the diagram once and along side it had columns
> showing what is printed for each -n value as a range
>
> e.g.
>                                None     -n 1
>         +------------------+              +
>         |                  |              |
>         |                  |              |
>         |                  |              |
>         |                  |              |
>         |                  |              |
>         +------------------+     +        |
>         |                  |     |        |
> SP --> |                  |     +        +
>         |                  |
>         |                  |
>         |                  |
>         +------------------+
>
> (or whatever the reality is)
>
> [...]

I will add this.  And some statement about each picture is for a 
different time.

>> Signed-off-by: Don Slutz <Don@CloudSwitch.com>
> Out of date?

Yes, and no.  Both email continue to work.  I will update it.

>> ---
>> v5: Adjust option to -n, --display-stack-pages.  Adjust usage message.
>>
>>   tools/xentrace/xenctx.c | 12 +++++++++++-
>>   1 file changed, 11 insertions(+), 1 deletion(-)
>>
>> diff --git a/tools/xentrace/xenctx.c b/tools/xentrace/xenctx.c
>> index 42a47f3..caa8899 100644
>> --- a/tools/xentrace/xenctx.c
>> +++ b/tools/xentrace/xenctx.c
>> @@ -35,6 +35,7 @@ static struct xenctx {
>>       int frame_ptrs;
>>       int stack_trace;
>>       int disp_all;
>> +    int multiple_pages;
>>       int all_vcpus;
>>       int self_paused;
>>       xc_dominfo_t dominfo;
>> @@ -664,6 +665,8 @@ static int print_stack(vcpu_guest_context_any_t *ctx, int vcpu, int width)
>>   
>>       stack_limit = ((stack_pointer(ctx) + XC_PAGE_SIZE)
>>                      & ~((guest_word_t) XC_PAGE_SIZE - 1));
>> +    if ( xenctx.multiple_pages > 1 )
>> +        stack_limit += (xenctx.multiple_pages - 1) * XC_PAGE_SIZE;
> "multiple_pages" sounds like a boolean to me, you seem to use it as
> "extra_pages", but why not just call it nr_stack_pages, initialise it to
> 1 and override it with --display-stack-pages.

I will adjust the internal name also.  No idea why I did not do so when 
to option name was changed.

    -Don Slutz

> Ian.
>

  reply	other threads:[~2014-03-22 20:49 UTC|newest]

Thread overview: 77+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-03-20 19:06 [PATCH v5 00/17] xenctx: Many changes Don Slutz
2014-03-20 19:06 ` [PATCH v5 01/17] xenctx: clean up usage output Don Slutz
2014-03-21 14:21   ` Ian Campbell
2014-03-20 19:06 ` [PATCH v5 02/17] xenctx: Clean up stack trace when hypercall_page not in symbol table Don Slutz
2014-03-20 19:06 ` [PATCH v5 03/17] xenctx: Add -n (--display-stack-pages) option to output larger stack Don Slutz
2014-03-21 14:29   ` Ian Campbell
2014-03-22 20:49     ` Don Slutz [this message]
2014-03-24 10:39       ` Ian Campbell
2014-03-24 13:26         ` Don Slutz
2014-03-20 19:06 ` [PATCH v5 04/17] xenctx: Add command line options -b (--bytes-per-line) and -l (--lines) Don Slutz
2014-03-21 14:32   ` Ian Campbell
2014-03-22 20:08     ` Don Slutz
2014-03-22 20:10       ` Don Slutz
2014-03-24 10:44       ` Ian Campbell
2014-03-24 16:58         ` Don Slutz
2014-03-27 15:55           ` Ian Campbell
2014-03-27 19:36             ` Don Slutz
2014-03-20 19:06 ` [PATCH v5 05/17] xenctx: Add command line option -D (--decode-as-ascii) Don Slutz
2014-03-21 14:38   ` Ian Campbell
2014-03-21 18:42     ` Don Slutz
2014-03-24 10:46       ` Ian Campbell
2014-03-24 17:00         ` Don Slutz
2014-03-20 19:06 ` [PATCH v5 06/17] xenctx: Add command line option -t (--tag-stack-dump) Don Slutz
2014-03-21 14:40   ` Ian Campbell
2014-03-20 19:06 ` [PATCH v5 07/17] xenctx: Change print_symbol to do the space before Don Slutz
2014-03-20 19:06 ` [PATCH v5 08/17] xenctx: More info on failed to map page Don Slutz
2014-03-20 19:06 ` [PATCH v5 09/17] xenctx: Add command line option -T (--tag-trace) Don Slutz
2014-03-21 14:44   ` Ian Campbell
2014-03-24 19:54     ` Don Slutz
2014-03-27 15:56       ` Ian Campbell
2014-03-20 19:06 ` [PATCH v5 10/17] xenctx: Add -m (--memory) <maddr> option to dump memory at maddr Don Slutz
2014-03-21 14:53   ` Ian Campbell
2014-03-25 19:16     ` Don Slutz
2014-03-20 19:06 ` [PATCH v5 11/17] xenctx: Add -d (--dump-as-stack) <daddr> option to dump memory at daddr as a stack Don Slutz
2014-03-21 14:57   ` Ian Campbell
2014-03-24 15:22     ` Don Slutz
2014-03-27 15:58       ` Ian Campbell
2014-03-27 17:05         ` Don Slutz
2014-03-27 17:20           ` Ian Campbell
2014-03-27 17:49             ` Don Slutz
2014-03-20 19:07 ` [PATCH v5 12/17] xenctx: change is_kernel_text() into kernel_addr() Don Slutz
2014-03-21 15:02   ` Ian Campbell
2014-03-21 17:45     ` Don Slutz
2014-03-24 22:23       ` Don Slutz
2014-03-25  9:13         ` Jan Beulich
2014-03-27 15:59         ` Ian Campbell
2014-03-20 19:07 ` [PATCH v5 13/17] xenctx: Add convert of more registers to symbols Don Slutz
2014-03-21 10:24   ` Jan Beulich
2014-03-21 12:34     ` Don Slutz
2014-03-21 14:11       ` [PATCH v6 " Don Slutz
2014-03-21 14:45         ` Jan Beulich
2014-03-21 17:43           ` [PATCH v7 " Don Slutz
2014-03-24 10:51             ` Ian Campbell
2014-03-21 15:03         ` [PATCH v6 " Ian Campbell
2014-03-21 17:38           ` Don Slutz
2014-03-21 15:07   ` [PATCH v5 " Ian Campbell
2014-03-21 15:11     ` Jan Beulich
2014-03-21 16:06       ` Ian Campbell
2014-03-21 18:16         ` Don Slutz
2014-03-24 10:49           ` Ian Campbell
2014-03-24 14:09             ` Don Slutz
2014-03-27 16:06               ` Ian Campbell
2014-03-27 16:52                 ` Don Slutz
2014-03-20 19:07 ` [PATCH v5 14/17] xenctx: Add output of vcpu value and state for --all-vcpus Don Slutz
2014-03-27 16:07   ` Ian Campbell
2014-03-20 19:07 ` [PATCH v5 15/17] xenctx: Fix handling of !guest_protected_mode Don Slutz
2014-03-21 15:09   ` Ian Campbell
2014-03-24 22:35     ` Don Slutz
2014-03-20 19:07 ` [PATCH v5 16/17] xenctx: Allow output for offline vcpu when specified Don Slutz
2014-03-21 15:11   ` Ian Campbell
2014-03-24 13:20     ` Don Slutz
2014-03-20 19:07 ` [PATCH v5 17/17] xenctx: Fixup options checking Don Slutz
2014-03-21 15:13   ` Ian Campbell
2014-03-24 14:26     ` Don Slutz
2014-03-27 16:10       ` Ian Campbell
2014-03-21 15:14 ` [PATCH v5 00/17] xenctx: Many changes Ian Campbell
2014-03-21 17:37   ` Don Slutz

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=532DF773.4050103@terremark.com \
    --to=dslutz@verizon.com \
    --cc=Don@CloudSwitch.com \
    --cc=Ian.Campbell@citrix.com \
    --cc=george.dunlap@eu.citrix.com \
    --cc=ian.jackson@eu.citrix.com \
    --cc=jbeulich@suse.com \
    --cc=stefano.stabellini@eu.citrix.com \
    --cc=xen-devel@lists.xen.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.