Messages in this thread | | | Date | Sat, 7 Jan 2012 08:52:01 -0800 | From | "Paul E. McKenney" <> | Subject | Re: [PATCH v5 7/8] mm: Only IPI CPUs to drain local pages if they exist |
| |
On Thu, Jan 05, 2012 at 04:17:39PM +0000, Mel Gorman wrote: > On Thu, Jan 05, 2012 at 02:40:11PM +0000, Russell King - ARM Linux wrote: > > On Thu, Jan 05, 2012 at 02:20:17PM +0000, Mel Gorman wrote:
[ . . . ]
> > I've been chasing that patch and getting no replies what so > > ever from folk like Peter, Thomas and Ingo. > > > > The problem affects all IPI-raising functions, which mask with > > cpu_online_mask directly. > > Actually, in one sense I'm glad to hear it because from my brief > poking around, I was having trouble understanding why we were always > safe from sending IPIs to CPUs in the process of being offlined.
The trick is to disable preemption (not interrupts!) across the IPI, which prevents CPU-hotplug's stop_machine() from running. You also have to have checked that the CPU is online within this same preemption-disabled section of code. This means that the outgoing CPU has to accept IPIs even after its CPU_DOWN_PREPARE notifier has been called -- right up to the stop_machine() call to take_cpu_down().
Thanx, Paul
| |