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 = ¤t_thread_info()->flags; > > + if (hibernation_in_resume()) > > + mwait_ptr = empty_zero_page; > > + else > > + mwait_ptr = ¤t_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.