Messages in this thread | | | Date | Fri, 11 Apr 2008 13:50:22 +0900 | From | KOSAKI Motohiro <> | Subject | Re: [patch 11/17] Implement immediate update via stop_machine_run |
| |
Hi Mathieu, >> it seems this patch is must, Why do you separate patch [10/17] and [11/17]? >> this patch remove almost portion of [10/17]. >> IMHO these patch merge into 1 patch is better. >> >> > > Hi Kosaki, > > You are right, I will merge them and resend them in the following post. > Thanks
>>> +static int stop_machine_imv_update(void *imv_ptr) >>> +{ >>> + struct __imv *imv = imv_ptr; >>> + >>> + if (!wrote_text) { >>> >> it seems racy. >> Why don't need test_and_set? >> >> I think your stop_machine_run(ALL_CPUS) call fn concurrency... >> > The answer to this mistery is in include/linux/stop_machine.h modified > by add-all-cpus-option-to-stop-machine-run.patch : > > > /** > * stop_machine_run: freeze the machine on all CPUs and run this function > * @fn: the function to run > * @data: the data ptr for the @fn() > - * @cpu: the cpu to run @fn() on (or any, if @cpu == NR_CPUS. > + * @cpu: if @cpu == n, run @fn() on cpu n > + * if @cpu == NR_CPUS, run @fn() on any cpu > + * if @cpu == ALL_CPUS, run @fn() first on the calling cpu, and then > + * concurrently on all the other cpus > * > * Description: This causes a thread to be scheduled on every other cpu, > * each of which disables interrupts, and finally interrupts are disabled > > Therefore, the first execution of the function is done before all other > executions. > > Ah, OK. I understand. Thanks.
| |