Re: [PATCH] perf/x86/intel/cqm: Make sure the head event of cache_groups always has valid RMID

From: Shivappa Vikas
Date: Mon May 22 2017 - 13:05:12 EST




Besides there's another bug that we retry rotating without resetting
nr_needed and start in __intel_cqm_rmid_rotate().

Those bugs combined together led to the following oops.

WARNING: at arch/x86/kernel/cpu/perf_event_intel_cqm.c:186 __put_rmid+0x28/0x80()
...
[<ffffffff8103a578>] __put_rmid+0x28/0x80
[<ffffffff8103a74a>] intel_cqm_rmid_rotate+0xba/0x440
[<ffffffff8109d8cb>] process_one_work+0x17b/0x470
[<ffffffff8109e69b>] worker_thread+0x11b/0x400
...
BUG: unable to handle kernel NULL pointer dereference at (null)

Yes, I saw these issues in the RMID rotation and also that it even rotated the rmids which were in use before the limbo ones which did not crash but it just made it output wierd data. Like David mentioned thats why we started writing the new patches.

...
[<ffffffff8103a74a>] intel_cqm_rmid_rotate+0xba/0x440
[<ffffffff8109d8cb>] process_one_work+0x17b/0x470
[<ffffffff8109e69b>] worker_thread+0x11b/0x400

I've managed to forgot most if not all of that horror show. Vikas and
David seem to be working on a replacement, but until such a time it
would be good if this thing would not crash the kernel.

Guys, could you have a look? To me it appears to mostly have the right
shape, but like I said, I forgot most details...

The new patch is on the way after Thomas agreed for the requirements we sent a few weeks back. Expect to send it in a week or so.. This fix seems fine.

Thanks,
Vikas