After this change asynchronous IPIs are unusable, as 'data' is localvariable for __smp_call_function, but __smp_call_function does notwait anymore for other processor(s) to fetch this data.

Due to this smp_call_function_interrupt in better case just modifiesrandom memory in atomic_inc(&call_data->started), in worse case (ashappened to me) 'data' on stack is overwritten with other data andbogus function is called, triggering some fault in IPI interrupt andkilling whole system.

If you cannot guarantee that other processor will accept IPI,I'm afraid that you'll have to create much more complicated changethan simple change you did in the change above.

Due to this change you cannot run VMware on these kernels, as sooneror later kernel will die as vmmon is big source of async IPIs.

It would be nice if you could insmod attached 'rhtest' module to checkyour eventual fix (it was originally written to prove that RHAS2.1 kernels are broken when it comes to async IPI, but it works nice for this case too). It should print:

Test done. ASYNC was ASYNC, SYNC was SYNC, nesting did not happen.Test passed.