Messages in this thread | | | From | "Luck, Tony" <> | Date | Tue, 24 May 2011 09:57:46 -0700 | Subject | RE: [RFC 0/9] mce recovery for Sandy Bridge server |
| |
Other points noted - I'll go look at the previous discussion threads you gave me links to.
I do want to comment on this point: > Creating a callback there would be a good place to do the TIF_MCE work and also > to extract any events that got queued by other NMIs. Note that more events > might be queued by further NMIs while we are processing the MCE path - while > with the task->mce_error_pfn hack we are limited to a single pending event only > and subsequent NMIs will overwrite this value!
I wasn't very happy with task->mce_error_pfn either - but being overwritten is not one of its flaws. The task that stumbled on the error must not be run until the error is dealt with - any other NMIs for other errors must be happening to other tasks (who have their own task->mce_error_pfn).
> A happy side effect is that the TIF_MCE_NOTIFY hack could go away as well.
We need some way to stop the task that found the error dead in its tracks - if it tripped over a data error, then running it will just trip over the same error again. If it had a memory error during an instruction fetch we have no place to return to.
So can we talk about this part for a while before returning to the "how to report this" discussion?
So here's the situation - we are in the NMI handler when we find from looking at the machine check bank registers that we have a recoverable error. We know the physical address, and we know the task (which might have been in user or kernel context). I can package that information into a perf/event ... but then how can I mark the current task as not-fit-for-execution?
-Tony
| |