Re: [RFC PATCH v2 05/18] sched: add task flag for preempt IRQ tracking
From: Andy Lutomirski <luto@amacapital.net>
Date: 2016-04-30 00:10:20
Also in:
linux-s390, lkml
From: Andy Lutomirski <luto@amacapital.net>
Date: 2016-04-30 00:10:20
Also in:
linux-s390, lkml
On Apr 29, 2016 3:11 PM, "Jiri Kosina" [off-list ref] wrote:
On Fri, 29 Apr 2016, Andy Lutomirski wrote:quoted
quoted
NMI, MCE and interrupts aren't a problem because they have dedicated stacks, which are easy to detect. If the tasks' stack is on an exception stack or an irq stack, we consider it unreliable.Only on x86_64.Well, MCEs are more or less x86-specific as well. But otherwise good point, thanks Andy. So, how does stack layout generally look like in case when NMI is actually running on proper kernel stack? I thought it's guaranteed to contain pt_regs anyway in all cases. Is that not guaranteed to be the case?
On x86, at least, there will still be pt_regs for the NMI. For the interrupted state, though, there might not be pt_regs, as the NMI might have happened while still populating pt_regs. In fact, the NMI stack could overlap task_pt_regs. For x86_32, there's no guarantee that pt_regs contains sp due to hardware silliness. You need to parse it more carefully, as, !user_mode(regs), then the old sp is just above pt_regs. --Andy