Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1457909

Re: [PATCH v7 4/4] nmi_backtrace: generate one-line reports for idle cpus

From Mark Rutland <mark.rutland@arm.com>
Newsgroups linux.kernel
Subject Re: [PATCH v7 4/4] nmi_backtrace: generate one-line reports for idle cpus
Date 2016-08-08 18:50 +0200
Message-ID <s3VUt-3N7-5@gated-at.bofh.it> (permalink)
References <s3VhL-3zC-3@gated-at.bofh.it> <s3VhM-3zC-35@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


Hi,

[adding Lorenzo]

On Mon, Aug 08, 2016 at 12:03:38PM -0400, Chris Metcalf wrote:
> When doing an nmi backtrace of many cores, most of which are idle,
> the output is a little overwhelming and very uninformative.  Suppress
> messages for cpus that are idling when they are interrupted and just
> emit one line, "NMI backtrace for N skipped: idling at pc 0xNNN".
> 
> We do this by grouping all the cpuidle code together into a new
> .cpuidle.text section, and then checking the address of the
> interrupted PC to see if it lies within that section.
> 
> This commit suitably tags x86, arm64, and tile idle routines,
> and only adds in the minimal framework for other architectures.

> diff --git a/arch/arm64/kernel/vmlinux.lds.S b/arch/arm64/kernel/vmlinux.lds.S
> index 659963d40bb4..fe7f93b7b11b 100644
> --- a/arch/arm64/kernel/vmlinux.lds.S
> +++ b/arch/arm64/kernel/vmlinux.lds.S
> @@ -122,6 +122,7 @@ SECTIONS
>  			ENTRY_TEXT
>  			TEXT_TEXT
>  			SCHED_TEXT
> +			CPUIDLE_TEXT
>  			LOCK_TEXT
>  			KPROBES_TEXT
>  			HYPERVISOR_TEXT
> diff --git a/arch/arm64/mm/proc.S b/arch/arm64/mm/proc.S
> index 5bb61de23201..64f088ca3192 100644
> --- a/arch/arm64/mm/proc.S
> +++ b/arch/arm64/mm/proc.S
> @@ -48,11 +48,13 @@
>   *
>   *	Idle the processor (wait for interrupt).
>   */
> +	.pushsection ".cpuidle.text","ax"
>  ENTRY(cpu_do_idle)
>  	dsb	sy				// WFI may enter a low-power mode
>  	wfi
>  	ret
>  ENDPROC(cpu_do_idle)
> +	.popsection

From a quick scan it looks like we only call this with interrupts
disabled, and we have no NMI. So shouldn't we be annotating
arch_cpu_idle(), which calls this and subsequently enables interrupts?

I'm also not sure what you need to do for PSCI, which is the preferred
(FW-backed) idle mechanism for arm64. The infrastrucure for that is
spread over a few files:

  arch/arm64/kernel/sleep.S
  arch/arm64/kernel/smccc-call.S
  arch/arm64/kernel/suspend.c
  drivers/cpuidle/cpuidle-arm.c
  drivers/firmware/psci.c

I'm not sure where we'd be an an interruptible state, and therefore I'm
not immediately sure what we should annotate.

Thanks,
Mark.

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

[PATCH v7 0/4] improvements to the nmi_backtrace code Chris Metcalf <cmetcalf@mellanox.com> - 2016-08-08 18:10 +0200
  [PATCH v7 4/4] nmi_backtrace: generate one-line reports for idle cpus Chris Metcalf <cmetcalf@mellanox.com> - 2016-08-08 18:10 +0200
    Re: [PATCH v7 4/4] nmi_backtrace: generate one-line reports for idle  cpus Mark Rutland <mark.rutland@arm.com> - 2016-08-08 18:50 +0200
      Re: [PATCH v7 4/4] nmi_backtrace: generate one-line reports for idle  cpus Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> - 2016-08-09 12:40 +0200
    Re: [PATCH v7 4/4] nmi_backtrace: generate one-line reports for idle  cpus Petr Mladek <pmladek@suse.com> - 2016-08-09 14:50 +0200

csiph-web