On 06/06/16 09:40, Peter Zijlstra wrote:
> On Mon, Jun 06, 2016 at 03:59:06PM +0000, Chen, Yu C wrote:
> 
>>>> +  if (hibernation_in_resume())
>>>> +          mwait_ptr = empty_zero_page;
>>>> +  else
>>>> +          mwait_ptr = &current_thread_info()->flags;
>>>
>>> Why is this conditional? Is there any case in which the zero page is not 
>>> also
>>> correct?
>> I'm thinking of avoid unnecessary wakeup for normal CPU offline,  for 
>> example, 
>> if one  driver uses  the zero page and access it.
> 
> Writing to the zero page would be a major fail.
> 

One implementation of MWAIT is for the waiting processor to claim the
line in an exclusive state, which would be highly undesirable for the
zero page.  I don't actually know if this is done by any real
implementation, however.

Either way, the problem at hand seems limited to post-hibernation, as
for regular CPU offline the page tables will be fully populated, so it
seems like it should not be an issue.

        -hpa

Reply via email to