platform_clear_ipi(cpu, IRQ_SUPPLE_1);
 
        bfin_ipi_data = &__get_cpu_var(bfin_ipi);
-       while ((pending = xchg(&bfin_ipi_data->bits, 0)) != 0) {
+       while ((pending = atomic_xchg(&bfin_ipi_data->bits, 0)) != 0) {
                msg = 0;
                do {
                        msg = find_next_bit(&pending, BITS_PER_LONG, msg + 1);
        struct ipi_data *bfin_ipi_data;
        for_each_possible_cpu(cpu) {
                bfin_ipi_data = &per_cpu(bfin_ipi, cpu);
-               bfin_ipi_data->bits = 0;
-               bfin_ipi_data->count = 0;
+               atomic_set(&bfin_ipi_data->bits, 0);
+               atomic_set(&bfin_ipi_data->count, 0);
        }
 }