linux_dsm_epyc7002/arch/arm
Chris Metcalf 9a01c3ed5c nmi_backtrace: add more trigger_*_cpu_backtrace() methods
Patch series "improvements to the nmi_backtrace code" v9.

This patch series modifies the trigger_xxx_backtrace() NMI-based remote
backtracing code to make it more flexible, and makes a few small
improvements along the way.

The motivation comes from the task isolation code, where there are
scenarios where we want to be able to diagnose a case where some cpu is
about to interrupt a task-isolated cpu.  It can be helpful to see both
where the interrupting cpu is, and also an approximation of where the
cpu that is being interrupted is.  The nmi_backtrace framework allows us
to discover the stack of the interrupted cpu.

I've tested that the change works as desired on tile, and build-tested
x86, arm, mips, and sparc64.  For x86 I confirmed that the generic
cpuidle stuff as well as the architecture-specific routines are in the
new cpuidle section.  For arm, mips, and sparc I just build-tested it
and made sure the generic cpuidle routines were in the new cpuidle
section, but I didn't attempt to figure out which the platform-specific
idle routines might be.  That might be more usefully done by someone
with platform experience in follow-up patches.

This patch (of 4):

Currently you can only request a backtrace of either all cpus, or all
cpus but yourself.  It can also be helpful to request a remote backtrace
of a single cpu, and since we want that, the logical extension is to
support a cpumask as the underlying primitive.

This change modifies the existing lib/nmi_backtrace.c code to take a
cpumask as its basic primitive, and modifies the linux/nmi.h code to use
the new "cpumask" method instead.

The existing clients of nmi_backtrace (arm and x86) are converted to
using the new cpumask approach in this change.

The other users of the backtracing API (sparc64 and mips) are converted
to use the cpumask approach rather than the all/allbutself approach.
The mips code ignored the "include_self" boolean but with this change it
will now also dump a local backtrace if requested.

Link: http://lkml.kernel.org/r/1472487169-14923-2-git-send-email-cmetcalf@mellanox.com
Signed-off-by: Chris Metcalf <cmetcalf@mellanox.com>
Tested-by: Daniel Thompson <daniel.thompson@linaro.org> [arm]
Reviewed-by: Aaron Tomlin <atomlin@redhat.com>
Reviewed-by: Petr Mladek <pmladek@suse.com>
Cc: "Rafael J. Wysocki" <rjw@rjwysocki.net>
Cc: Russell King <linux@arm.linux.org.uk>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Ralf Baechle <ralf@linux-mips.org>
Cc: David Miller <davem@davemloft.net>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2016-10-07 18:46:30 -07:00
..
boot Merge branch 'for-linus' of git://git.armlinux.org.uk/~rmk/linux-arm 2016-10-06 07:59:37 -07:00
common Merge branch 'for-linus' of git://git.armlinux.org.uk/~rmk/linux-arm 2016-10-06 07:59:37 -07:00
configs Merge branch 'pm-cpufreq' 2016-10-02 01:42:45 +02:00
crypto crypto: arm/aes-ctr - fix NULL dereference in tail processing 2016-09-13 18:44:59 +08:00
firmware
include nmi_backtrace: add more trigger_*_cpu_backtrace() methods 2016-10-07 18:46:30 -07:00
kernel nmi_backtrace: add more trigger_*_cpu_backtrace() methods 2016-10-07 18:46:30 -07:00
kvm KVM updates for v4.9-rc1 2016-10-06 10:49:01 -07:00
lib ARM: 8595/2: apply more __ro_after_init 2016-08-12 16:47:06 +01:00
mach-alpine
mach-artpec arm: Remove unnecessary of_platform_populate with default match table 2016-06-23 14:58:37 -05:00
mach-asm9260
mach-aspeed
mach-at91 ARM: SoC platform updates for v4.8 2016-08-01 18:27:08 -04:00
mach-axxia
mach-bcm clk: iproc: Make clocks visible options 2016-09-14 17:21:47 -07:00
mach-berlin
mach-clps711x ARM: do away with final ARCH_REQUIRE_GPIOLIB 2016-08-02 12:31:58 -07:00
mach-cns3xxx arm: use of_platform_default_populate() to populate 2016-06-23 15:00:39 -05:00
mach-davinci ARM: SoC platform updates for v4.8 2016-08-01 18:27:08 -04:00
mach-digicolor
mach-dove
mach-ebsa110
mach-efm32
mach-ep93xx rtc: m48t86: move m48t86.h to platform_data 2016-06-27 18:15:25 +02:00
mach-exynos ARM: EXYNOS: Clear OF_POPULATED flag from PMU node in IRQ init callback 2016-08-30 10:49:18 +02:00
mach-footbridge ARM: document and update UNCACHEABLE_ADDR definitions 2016-08-26 15:10:19 +01:00
mach-gemini
mach-highbank arm: Remove unnecessary of_platform_populate with default match table 2016-06-23 14:58:37 -05:00
mach-hisi ARM: hisi: consolidate the hisilicon machine entries 2016-07-07 09:37:59 +01:00
mach-imx i.MX fixes for 4.8, 2nd round: 2016-09-07 21:24:22 -07:00
mach-integrator treewide: replace obsolete _refok by __ref 2016-08-02 17:31:41 -04:00
mach-iop13xx
mach-iop32x
mach-iop33x
mach-ixp4xx
mach-keystone ARM: SoC defconfig updates for v4.8 2016-08-01 18:30:44 -04:00
mach-ks8695
mach-lpc18xx
mach-lpc32xx arm: use of_platform_default_populate() to populate 2016-06-23 15:00:39 -05:00
mach-mediatek
mach-meson arm: meson: explicitly select clk drivers 2016-07-07 17:54:25 +02:00
mach-mmp
mach-moxart ARM: SoC cleanups for v4.8 2016-08-01 18:21:13 -04:00
mach-mv78xx0 treewide: replace obsolete _refok by __ref 2016-08-02 17:31:41 -04:00
mach-mvebu ARM: don't include removed directories 2016-08-10 22:42:18 +02:00
mach-mxs ARM: SoC cleanups for v4.8 2016-08-01 18:21:13 -04:00
mach-netx
mach-nomadik
mach-nspire DeviceTree update for 4.8: 2016-07-30 11:32:01 -07:00
mach-omap1 ARM: SoC platform updates for v4.8 2016-08-01 18:27:08 -04:00
mach-omap2 This is the bulk of GPIO changes for the v4.9 series: 2016-10-05 11:49:09 -07:00
mach-orion5x RTC for 4.8 2016-08-05 09:48:22 -04:00
mach-oxnas ARM: oxnas: select reset controller framework 2016-08-10 22:42:32 +02:00
mach-picoxcell ARM: SoC cleanups for v4.8 2016-08-01 18:21:13 -04:00
mach-prima2 ARM: SoC cleanups for v4.8 2016-08-01 18:21:13 -04:00
mach-pxa This is the bulk of GPIO changes for the v4.9 series: 2016-10-05 11:49:09 -07:00
mach-qcom ARM: qcom: Add support for MDM9615 2016-06-24 22:57:23 -05:00
mach-realview net: smc91x: fix SMC accesses 2016-08-28 23:44:55 -04:00
mach-rockchip ARM: SoC cleanups for v4.8 2016-08-01 18:21:13 -04:00
mach-rpc ARM: document and update UNCACHEABLE_ADDR definitions 2016-08-26 15:10:19 +01:00
mach-s3c24xx dmaengine updates for 4.8-rc1 2016-10-06 17:13:54 -07:00
mach-s3c64xx ARM: SoC platform updates for v4.8 2016-08-01 18:27:08 -04:00
mach-s5pv210 ARM: don't include removed directories 2016-08-10 22:42:18 +02:00
mach-sa1100 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 2016-10-07 09:12:19 -07:00
mach-shmobile Merge branch 'smp-hotplug-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2016-10-03 19:43:08 -07:00
mach-socfpga
mach-spear ARM: SoC cleanups for v4.8 2016-08-01 18:21:13 -04:00
mach-sti Highlights: 2016-07-14 15:08:15 +02:00
mach-stm32
mach-sunxi
mach-tango ARM: tango: add Suspend-to-RAM support 2016-07-07 16:09:30 +02:00
mach-tegra ARM: SoC cleanups for v4.8 2016-08-01 18:21:13 -04:00
mach-u300 ARM: SoC cleanups for v4.8 2016-08-01 18:21:13 -04:00
mach-uniphier Merge ARCH_[WANT_OPTIONAL|REQUIRE]_GPIOLIB changes into next/soc 2016-07-06 18:00:32 +02:00
mach-ux500 ARM: SoC driver updates for v4.8 2016-08-01 18:36:01 -04:00
mach-versatile arm: use of_platform_default_populate() to populate 2016-06-23 15:00:39 -05:00
mach-vexpress ARM: SoC cleanups for v4.8 2016-08-01 18:21:13 -04:00
mach-vt8500 ARM: SoC cleanups for v4.8 2016-08-01 18:21:13 -04:00
mach-w90x900
mach-zx
mach-zynq arm: use of_platform_default_populate() to populate 2016-06-23 15:00:39 -05:00
mm dmaengine updates for 4.8-rc1 2016-10-06 17:13:54 -07:00
net
nwfpe
oprofile
plat-iop ARM: iop: Fix indentation 2016-07-07 18:06:40 +02:00
plat-omap
plat-orion
plat-pxa
plat-samsung ARM: SoC platform updates for v4.8 2016-08-01 18:27:08 -04:00
plat-versatile ARM: versatile: fix missing <plat/platsmp.h> include 2016-06-13 09:55:51 +01:00
probes
tools
vdso
vfp arm: Convert VFP hotplug notifiers to state machine 2016-07-15 10:40:22 +02:00
xen arm/xen: fix SMP guests boot 2016-09-14 14:39:13 +01:00
Kconfig atomic64: no need for CONFIG_ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE 2016-10-07 18:46:30 -07:00
Kconfig-nommu
Kconfig.debug Merge tag 'arm-soc/for-4.8/soc-part2' of http://github.com/Broadcom/stblinux into next/soc 2016-07-07 16:09:25 +02:00
Makefile Merge branches 'misc' and 'sa1111-base' into for-linus 2016-10-06 08:56:43 +01:00