Hi Peter,

> -----Original Message-----
> From: Peter Zijlstra [mailto:pet...@infradead.org]
> Sent: Monday, June 06, 2016 10:25 PM
> To: Chen, Yu C
> Cc: x...@kernel.org; linux-kernel@vger.kernel.org; Thomas Gleixner; Ingo
> Molnar; H . Peter Anvin; linux...@vger.kernel.org; Rafael J . Wysocki; Pavel
> Machek; Brown, Len; Borislav Petkov; Zhu Guihua; Juergen Gross
> Subject: Re: [PATCH][RFC] x86, hotplug: Use zero page for monitor when
> resuming from hibernation
> 
> On Mon, Jun 06, 2016 at 10:19:09PM +0800, Chen Yu wrote:
> > @@ -1595,8 +1596,21 @@ static inline void mwait_play_dead(void)
> >      * This should be a memory location in a cache line which is
> >      * unlikely to be touched by other processors.  The actual
> >      * content is immaterial as it is not actually modified in any way.
> > +    *
> > +    * However in hibernation resume process, this address could be
> > +    * touched by BSP when restoring page frames, if the page table
> > +    * for this address is not coherent across hibernation(due to
> > +    * inconsistence of e820 memory map), access from APs might
> > +    * cause exception. So change the mwait address to zero page,
> > +    * which is located in .bss, in this way we can avoid illegal
> > +    * access from APs because page table for kernel mapping
> > +    * of text/data/bss should keeps unchanged according to
> > +    * hibernation semantic.
> >      */
> > -   mwait_ptr = &current_thread_info()->flags;
> > +   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.

Reply via email to