[RFC 2/3] arm64: refactor save_stack_trace()

Jungseok Lee jungseoklee85 at gmail.com
Fri Jul 17 07:59:12 PDT 2015


On Jul 17, 2015, at 11:41 PM, Steven Rostedt wrote:
> On Fri, 17 Jul 2015 23:28:13 +0900
> Jungseok Lee <jungseoklee85 at gmail.com> wrote:
> 
> 
>> 
>> I have reviewed and tested the kernel including this patch and only [RFC 1/3].
> 
> Thanks! Can you repost patch 1 with the changes I recommended, so that
> I can get an Acked-by from the arm64 maintainers and pull all the
> changes in together. This is fine for a 4.3 release, right? That is, it
> doesn't need to go into 4.2-rcs.
> 

Welcome!

It's not hard to repost a patch, but I feel like we have to wait for Akashi's response.
Also, it might be needed to consider Mark's comment on arch part.

If they are okay, I will proceed.

>> 
>> Now, the number of entries and max_stack_size are always okay, but unexpected functions,
>> such as ftrace_ops_no_ops and ftrace_call, are *sometimes* listed as follows.
>> 
>> $ cat /sys/kernel/debug/tracing/stack_trace 
>> 
>>        Depth    Size   Location    (49 entries)
>>        -----    ----   --------
>>  0)     4456      16   arch_counter_read+0xc/0x24
>>  1)     4440      16   ktime_get+0x44/0xb4
>>  2)     4424      48   get_drm_timestamp+0x30/0x40
>>  3)     4376      16   drm_get_last_vbltimestamp+0x94/0xb4
>>  4)     4360      80   drm_handle_vblank+0x84/0x3c0
>>  5)     4280     144   mdp5_irq+0x118/0x130
>>  6)     4136      80   msm_irq+0x2c/0x68
>>  7)     4056      32   handle_irq_event_percpu+0x60/0x210
>>  8)     4024      96   handle_irq_event+0x50/0x80
>>  9)     3928      64   handle_fasteoi_irq+0xb0/0x178
>> 10)     3864      48   generic_handle_irq+0x38/0x54
>> 11)     3816      32   __handle_domain_irq+0x68/0xbc
>> 12)     3784      64   gic_handle_irq+0x38/0x88
>> 13)     3720     280   el1_irq+0x64/0xd8
>> 14)     3440     168   ftrace_ops_no_ops+0xb4/0x16c
>> 15)     3272      64   ftrace_call+0x0/0x4
>> 16)     3208      16   _raw_spin_lock_irqsave+0x14/0x70
>> 17)     3192      32   msm_gpio_set+0x44/0xb4
>> 18)     3160      48   _gpiod_set_raw_value+0x68/0x148
>> 19)     3112      64   gpiod_set_value+0x40/0x70
>> 20)     3048      32   gpio_led_set+0x3c/0x94
>> 21)     3016      48   led_set_brightness+0x50/0xa4
>> 22)     2968      32   led_trigger_event+0x4c/0x78
>> 23)     2936      48   mmc_request_done+0x38/0x84
>> 24)     2888      32   sdhci_tasklet_finish+0xcc/0x12c
>> 25)     2856      48   tasklet_action+0x64/0x120
>> 26)     2808      48   __do_softirq+0x114/0x2f0
>> 27)     2760     128   irq_exit+0x98/0xd8
>> 28)     2632      32   __handle_domain_irq+0x6c/0xbc
>> 29)     2600      64   gic_handle_irq+0x38/0x88
>> 30)     2536     280   el1_irq+0x64/0xd8
>> 31)     2256     168   ftrace_ops_no_ops+0xb4/0x16c
>> 32)     2088      64   ftrace_call+0x0/0x4
> 
> Like I stated before, the above looks to be an interrupt coming in
> while the tracing was happening. This looks legitimate to me. I'm
> guessing that arm64 uses one stack for normal context and interrupt
> context, where as x86 uses a separate stack for interrupt context.

Okay. Thanks for a kind explanation.

Best Regards
Jungseok Lee


More information about the linux-arm-kernel mailing list