summaryrefslogtreecommitdiff
path: root/include/dt-bindings/power/r8a7795-sysc.h
blob: ee2e26ba605ef9a37801d1b2858506f8d17864cb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
/*
 * Copyright (C) 2016 Glider bvba
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; version 2 of the License.
 */
#ifndef __DT_BINDINGS_POWER_R8A7795_SYSC_H__
#define __DT_BINDINGS_POWER_R8A7795_SYSC_H__

/*
 * These power domain indices match the numbers of the interrupt bits
 * representing the power areas in the various Interrupt Registers
 * (e.g. SYSCISR, Interrupt Status Register)
 */

#define R8A7795_PD_CA57_CPU0		 0
#define R8A7795_PD_CA57_CPU1		 1
#define R8A7795_PD_CA57_CPU2		 2
#define R8A7795_PD_CA57_CPU3		 3
#define R8A7795_PD_CA53_CPU0		 5
#define R8A7795_PD_CA53_CPU1		 6
#define R8A7795_PD_CA53_CPU2		 7
#define R8A7795_PD_CA53_CPU3		 8
#define R8A7795_PD_A3VP			 9
#define R8A7795_PD_CA57_SCU		12
#define R8A7795_PD_CR7			13
#define R8A7795_PD_A3VC			14
#define R8A7795_PD_3DG_A		17
#define R8A7795_PD_3DG_B		18
#define R8A7795_PD_3DG_C		19
#define R8A7795_PD_3DG_D		20
#define R8A7795_PD_CA53_SCU		21
#define R8A7795_PD_3DG_E		22
#define R8A7795_PD_A3IR			24
#define R8A7795_PD_A2VC0		25
#define R8A7795_PD_A2VC1		26

/* Always-on power area */
#define R8A7795_PD_ALWAYS_ON		32

#endif /* __DT_BINDINGS_POWER_R8A7795_SYSC_H__ */
reason is that the per CPU MCE timer is started by the CMCI logic before the MCE CPU hotplug callback starts the timer with add_timer_on(). So the timer is already queued which triggers the BUG. Using add_timer_on() is pretty pointless in this code because the timer is strictlty per CPU, initialized as pinned and all operations which arm the timer happen on the CPU to which the timer belongs. Simplify the whole machinery by using mod_timer() instead of add_timer_on() which avoids the problem because mod_timer() can handle already queued timers. Use __start_timer() everywhere so the earliest armed expiry time is preserved. Reported-by: Erik Veijola <erik.veijola@intel.com> Tested-by: Borislav Petkov <bp@alien8.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Reviewed-by: Borislav Petkov <bp@alien8.de> Cc: Tony Luck <tony.luck@intel.com> Link: http://lkml.kernel.org/r/alpine.DEB.2.20.1701310936080.3457@nanos Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'tools/virtio/virtio-trace/trace-agent.c')