On Sat, Nov 17, 2018 at 6:36 PM Pintu Agarwal <pintu.ping@xxxxxxxxx> wrote: > > On Sat, Nov 17, 2018 at 12:02 AM <valdis.kletnieks@xxxxxx> wrote: > > > > > But my concern is that if I dump it from irq handler, I will get > > > information only for the current cpu. > > > How do I store and get the information for all the cpu from the boot time ? > > > > Make the high-water mark a per-cpu variable. > > > > > From where do I call my dump_irq_stack_info() [some where during the > > > entry/exit part of the irq handler], so that I could dump information > > > for all the handler at boot time itself ? > > > > No, you don't do a dump-stack during entry/exit. You just maintain a high-water > > value in the exit, > > Which is the right place to keep track of this > high-water-irq-stack-usage (per_cpu) > in arch/arm64/* ? > I tried to create a per-cpu irq_stack_usage variable like this in : arch/arm64/include/asm/hardirq.h +DECLARE_PER_CPU(unsigned int, irq_stack_usage); But, I could not figure out, from where to fill these variable for irq stack usage. + sp = current_stack_pointer; + if (on_irq_stack(sp, cpu)) { + stack_start = (unsigned long)per_cpu(irq_stack, cpu); + last_usage = per_cpu(irq_stack_usage, cpu); + curr_usage = sp - stack_start; + pr_info("cpu:%d : sp: %lu, stack_start: %lu, usage: %lu\n", cpu, sp, stack_start, (sp - stack_start)); + if (curr_usage > last_usage) + per_cpu(irq_stack_usage, cpu) = curr_usage; + } Which is the best place to invoke this ? I have the following option: 1. kernel/softirq.c => __do_softirq() 2. arch/arm64/kernel/smp.c => handle_IPI() 3. kernel/softirq.c => irq_exit() 4. ??? Please let me know. Thank You! Pintu _______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies