Re: [patch V4 part 1 29/36] x86/mce: Send #MC singal from task work

From: Mathieu Desnoyers
Date: Thu May 14 2020 - 13:42:05 EST


----- On May 14, 2020, at 1:38 PM, Thomas Gleixner tglx@xxxxxxxxxxxxx wrote:

> Mathieu Desnoyers <mathieu.desnoyers@xxxxxxxxxxxx> writes:
>> ----- On May 5, 2020, at 9:16 AM, Thomas Gleixner tglx@xxxxxxxxxxxxx wrote:
>>
>>> From: Peter Zijlstra <peterz@xxxxxxxxxxxxx>
>>>
>>
>> Patch title: singal -> signal.
>>
>>> Convert #MC over to using task_work_add(); it will run the same code
>>> slightly later, on the return to user path of the same exception.
>>
>> So I suspect that switching the order between tracehook_notify_resume()
>> (which ends up calling task_work_run()) and do_signal() done by an
>> earlier patch in this series intends to ensure the information about the
>> instruction pointer causing the #MC is not overwritten by do_signal()
>> (but I'm just guessing).
>
> No, it does not. See the ordering discussion.
>
> Aside of that signal never transported any address information. It uses
> force_sig(SIGBUS).
>
> Even if a different signal would be sent first then the register frame
> of the #MC is still there when the fatal signal is sent later.
>
> But even w/o changing the ordering the taskwork check in do_signal()
> runs the pending work before delivering anything.

Yep, that was the key thing I missed,

Thanks,

Mathieu


--
Mathieu Desnoyers
EfficiOS Inc.
http://www.efficios.com