From: "Srivatsa S. Bhat" <srivatsa.bhat@linux.vnet.ibm.com>
To: Frederic Weisbecker <fweisbec@gmail.com>
Cc: peterz@infradead.org, tglx@linutronix.de, mingo@kernel.org,
tj@kernel.org, rusty@rustcorp.com.au, akpm@linux-foundation.org,
hch@infradead.org, mgorman@suse.de, riel@redhat.com, bp@suse.de,
rostedt@goodmis.org, mgalbraith@suse.de, ego@linux.vnet.ibm.com,
paulmck@linux.vnet.ibm.com, oleg@redhat.com, rjw@rjwysocki.net,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v6 3/3] CPU hotplug, smp: Flush any pending IPI callbacks before CPU offline
Date: Fri, 23 May 2014 20:17:41 +0530 [thread overview]
Message-ID: <537F5F8D.3030405@linux.vnet.ibm.com> (raw)
In-Reply-To: <20140523132747.GB1768@localhost.localdomain>
On 05/23/2014 06:57 PM, Frederic Weisbecker wrote:
> On Fri, May 23, 2014 at 03:42:35PM +0530, Srivatsa S. Bhat wrote:
>> During CPU offline, in the stop-machine loop, we use 2 separate stages to
>> disable interrupts, to ensure that the CPU going offline doesn't get any new
>> IPIs from the other CPUs after it has gone offline.
>>
[...]
>> +/**
>> + * generic_smp_call_function_single_interrupt - Execute SMP IPI callbacks
>> + *
>> + * Invoked by arch to handle an IPI for call function single.
>> + * Must be called with interrupts disabled.
>> + */
>> +void generic_smp_call_function_single_interrupt(void)
>> +{
>> + static bool warned;
>> +
>> + WARN_ON(!irqs_disabled());
>> +
>> /*
>> * Shouldn't receive this interrupt on a cpu that is not yet online.
>> */
>> if (unlikely(!cpu_online(smp_processor_id()) && !warned)) {
>> + struct llist_node *entry;
>> + struct call_single_data *csd;
>> +
>> warned = true;
>> WARN(1, "IPI on offline CPU %d\n", smp_processor_id());
>>
>> + entry = llist_del_all(&__get_cpu_var(call_single_queue));
>
> This is deleting all the entries, the call to flush_smp_call_function_queue()
> will then miss these.
>
Argh! And I thought I had finally nailed it this time. :-(
Regards,
Srivatsa S. Bhat
>> + entry = llist_reverse_order(entry);
>
>
>
>> +
>> /*
>> * We don't have to use the _safe() variant here
>> * because we are not invoking the IPI handlers yet.
>> @@ -206,10 +250,7 @@ void generic_smp_call_function_single_interrupt(void)
>> csd->func);
>> }
>>
>> - llist_for_each_entry_safe(csd, csd_next, entry, llist) {
>> - csd->func(csd->info);
>> - csd_unlock(csd);
>> - }
>> + flush_smp_call_function_queue();
>> }
>>
>> /*
>>
>
prev parent reply other threads:[~2014-05-23 14:48 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-05-23 10:11 [PATCH v6 0/3] CPU hotplug: Fix the long-standing "IPI to offline CPU" issue Srivatsa S. Bhat
2014-05-23 10:12 ` [PATCH v6 1/3] smp: Print more useful debug info upon receiving IPI on an offline CPU Srivatsa S. Bhat
2014-05-23 10:12 ` [PATCH v6 2/3] CPU hotplug, stop-machine: Plug race-window that leads to "IPI-to-offline-CPU" Srivatsa S. Bhat
2014-05-23 13:22 ` Frederic Weisbecker
2014-05-23 14:45 ` Srivatsa S. Bhat
2014-05-23 15:04 ` Frederic Weisbecker
2014-05-23 15:24 ` Srivatsa S. Bhat
2014-05-23 15:12 ` Peter Zijlstra
2014-05-23 15:18 ` Srivatsa S. Bhat
2014-05-23 15:31 ` Peter Zijlstra
2014-05-23 15:33 ` Srivatsa S. Bhat
2014-05-23 15:37 ` Srivatsa S. Bhat
2014-05-23 15:48 ` Peter Zijlstra
2014-05-23 15:53 ` Srivatsa S. Bhat
2014-05-23 17:05 ` Srivatsa S. Bhat
2014-05-23 15:21 ` Peter Zijlstra
2014-05-23 15:31 ` Srivatsa S. Bhat
2014-05-23 10:12 ` [PATCH v6 3/3] CPU hotplug, smp: Flush any pending IPI callbacks before CPU offline Srivatsa S. Bhat
2014-05-23 13:27 ` Frederic Weisbecker
2014-05-23 14:47 ` Srivatsa S. Bhat [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=537F5F8D.3030405@linux.vnet.ibm.com \
--to=srivatsa.bhat@linux.vnet.ibm.com \
--cc=akpm@linux-foundation.org \
--cc=bp@suse.de \
--cc=ego@linux.vnet.ibm.com \
--cc=fweisbec@gmail.com \
--cc=hch@infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mgalbraith@suse.de \
--cc=mgorman@suse.de \
--cc=mingo@kernel.org \
--cc=oleg@redhat.com \
--cc=paulmck@linux.vnet.ibm.com \
--cc=peterz@infradead.org \
--cc=riel@redhat.com \
--cc=rjw@rjwysocki.net \
--cc=rostedt@goodmis.org \
--cc=rusty@rustcorp.com.au \
--cc=tglx@linutronix.de \
--cc=tj@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.