Files
android_kernel_xiaomi_sm8450/include/linux
Ming Lei e920d5971d percpu: use raw_local_irq_* in _this_cpu op
It doesn't make sense to trace irq off or do irq flags
lock proving inside 'this_cpu' operations, so replace local_irq_*
with raw_local_irq_* in 'this_cpu' op.

Also the patch fixes onelockdep warning[1] by the replacement, see
below:

In commit: 933393f58fef9963eac61db8093689544e29a600(percpu:
Remove irqsafe_cpu_xxx variants), local_irq_save/restore(flags) are
added inside this_cpu_inc operation, so that trace_hardirqs_off_caller
will be called by trace_hardirqs_on_caller directly because
__debug_atomic_inc is implemented as this_cpu_inc, which may trigger
the lockdep warning[1], for example in the below ARM scenary:

	kernel_thread_helper	/*irq disabled*/
		->trace_hardirqs_on_caller	/*hardirqs_enabled was set*/
			->trace_hardirqs_off_caller	/*hardirqs_enabled cleared*/
				__this_cpu_add(redundant_hardirqs_on)
			->trace_hardirqs_off_caller	/*irq disabled, so call here*/

The 'unannotated irqs-on' warning will be triggered somewhere because
irq is just enabled after the irq trace in kernel_thread_helper.

[1],
[    0.162841] ------------[ cut here ]------------
[    0.167694] WARNING: at kernel/lockdep.c:3493 check_flags+0xc0/0x1d0()
[    0.174468] Modules linked in:
[    0.177703] Backtrace:
[    0.180328] [<c00171f0>] (dump_backtrace+0x0/0x110) from [<c0412320>] (dump_stack+0x18/0x1c)
[    0.189086]  r6:c051f778 r5:00000da5 r4:00000000 r3:60000093
[    0.195007] [<c0412308>] (dump_stack+0x0/0x1c) from [<c00410e8>] (warn_slowpath_common+0x54/0x6c)
[    0.204223] [<c0041094>] (warn_slowpath_common+0x0/0x6c) from [<c0041124>] (warn_slowpath_null+0x24/0x2c)
[    0.214111]  r8:00000000 r7:00000000 r6:ee069598 r5:60000013 r4:ee082000
[    0.220825] r3:00000009
[    0.223693] [<c0041100>] (warn_slowpath_null+0x0/0x2c) from [<c0088f38>] (check_flags+0xc0/0x1d0)
[    0.232910] [<c0088e78>] (check_flags+0x0/0x1d0) from [<c008d348>] (lock_acquire+0x4c/0x11c)
[    0.241668] [<c008d2fc>] (lock_acquire+0x0/0x11c) from [<c0415aa4>] (_raw_spin_lock+0x3c/0x74)
[    0.250610] [<c0415a68>] (_raw_spin_lock+0x0/0x74) from [<c010a844>] (set_task_comm+0x20/0xc0)
[    0.259521]  r6:ee069588 r5:ee0691c0 r4:ee082000
[    0.264404] [<c010a824>] (set_task_comm+0x0/0xc0) from [<c0060780>] (kthreadd+0x28/0x108)
[    0.272857]  r8:00000000 r7:00000013 r6:c0044a08 r5:ee0691c0 r4:ee082000
[    0.279571] r3:ee083fe0
[    0.282470] [<c0060758>] (kthreadd+0x0/0x108) from [<c0044a08>] (do_exit+0x0/0x6dc)
[    0.290405]  r5:c0060758 r4:00000000
[    0.294189] ---[ end trace 1b75b31a2719ed1c ]---
[    0.299041] possible reason: unannotated irqs-on.
[    0.303955] irq event stamp: 5
[    0.307159] hardirqs last  enabled at (4): [<c001331c>] no_work_pending+0x8/0x2c
[    0.314880] hardirqs last disabled at (5): [<c0089b08>] trace_hardirqs_on_caller+0x60/0x26c
[    0.323547] softirqs last  enabled at (0): [<c003f754>] copy_process+0x33c/0xef4
[    0.331207] softirqs last disabled at (0): [<  (null)>]   (null)
[    0.337585] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000

Acked-by: Christoph Lameter <cl@linux.com>
Signed-off-by: Ming Lei <tom.leiming@gmail.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
2012-02-21 09:23:46 -08:00
..
2011-12-13 15:30:49 -05:00
2012-01-04 15:52:42 -08:00
2011-07-22 08:25:37 -07:00
2011-11-02 16:07:03 -07:00
2011-07-20 20:47:43 -04:00
2011-10-26 15:43:25 -04:00
2011-07-26 16:49:47 -07:00
2011-07-26 16:49:47 -07:00
2011-08-03 11:30:42 -04:00
2011-07-31 22:05:09 +02:00
2011-07-26 16:49:47 -07:00
2012-01-10 16:30:42 -08:00
2012-01-03 22:54:57 -05:00
2011-08-25 16:25:33 -07:00
2011-10-29 21:20:22 +02:00
2011-07-06 14:44:42 -07:00
2011-07-25 20:57:16 -07:00
2011-12-13 09:26:45 +00:00
2011-07-05 23:42:17 -07:00
2011-07-26 16:49:47 -07:00
2011-11-07 23:54:53 +01:00
2011-05-23 10:47:06 -05:00
2012-01-04 08:56:31 -06:00
2011-05-29 13:03:09 +01:00
2011-10-31 20:19:04 +00:00
2011-05-24 10:21:29 +02:00
2011-11-26 14:59:39 -05:00
2011-12-09 17:35:51 -08:00
2011-12-11 18:25:16 -05:00
2012-01-12 20:13:04 -08:00
2011-09-14 15:24:51 -04:00
2012-01-03 22:54:58 -05:00
2011-07-26 16:49:47 -07:00
2011-07-26 16:49:47 -07:00
2011-12-13 11:58:49 +01:00
2011-07-01 15:34:45 -07:00
2011-06-28 10:48:34 +02:00
2012-01-12 20:13:08 -08:00
2011-07-01 10:37:15 +02:00
2012-01-03 22:54:56 -05:00
2011-11-16 18:16:38 -05:00
2011-11-13 16:10:10 -05:00
2011-07-21 13:47:54 -07:00
2012-01-03 22:55:17 -05:00
2011-12-11 18:25:16 -05:00
2011-09-27 18:08:04 +02:00
2012-01-09 13:52:09 +01:00
2011-07-26 16:49:47 -07:00
2012-01-12 20:13:11 -08:00
2012-01-17 15:40:51 -08:00
2011-12-27 11:26:41 +02:00
2011-09-16 19:20:20 -04:00
2011-07-26 16:49:47 -07:00
2012-01-12 20:13:10 -08:00
2011-07-26 16:49:47 -07:00
2011-11-14 00:47:54 -05:00
2011-07-31 12:18:16 -04:00
2011-10-31 14:03:22 +01:00
2012-01-06 12:10:26 -08:00
2012-01-12 15:23:04 -08:00
2011-05-26 17:12:37 -07:00
2011-12-13 09:26:45 +00:00
2011-11-02 16:07:02 -07:00
2011-07-26 16:49:47 -07:00
2012-01-03 22:55:07 -05:00
2012-01-03 22:54:56 -05:00
2011-07-26 14:50:01 -07:00
2011-06-07 10:02:35 +02:00
2012-01-03 22:52:40 -05:00
2012-01-09 09:33:57 +09:00
2011-07-30 08:44:19 -10:00
2011-07-26 16:49:47 -07:00
2011-12-13 09:26:45 +00:00
2011-07-26 16:49:47 -07:00
2011-07-25 20:57:11 -07:00
2011-10-31 17:30:47 -07:00
2011-08-16 00:16:49 -07:00
2011-08-03 14:25:22 -10:00
2012-01-03 22:54:56 -05:00
2011-06-27 20:30:08 +02:00
2011-06-07 09:05:42 -07:00
2011-11-02 16:07:02 -07:00
2011-07-26 16:49:47 -07:00
2011-09-14 15:24:51 -04:00