On 11/22/2013 08:46 AM, Peter Zijlstra wrote:
How about the below version? --- --- a/kernel/events/ring_buffer.c +++ b/kernel/events/ring_buffer.c @@ -61,19 +61,20 @@ static void perf_output_put_handle(struc * * kernel user * - * READ ->data_tail READ ->data_head - * smp_mb() (A) smp_rmb() (C) - * WRITE $data READ $data - * smp_wmb() (B) smp_mb() (D) - * STORE ->data_head WRITE ->data_tail + * if (LOAD ->data_tail) { LOAD ->data_head + * (A) smp_rmb() (C) + * STORE $data LOAD $data + * smp_wmb() (B) smp_mb() (D) + * STORE ->data_head STORE ->data_tail
I wasn't subscribed to linux-arch so missed the smp_store_release() outcome, if there was one. Are (B) and (D) still slated for changing to STORE.rel semantics, aka smp_store_release()? I realize that, for the perf ring buffer, (D) is in userspace but I'm also interested in non-perf situations where (D) would be in the kernel. Regards, Peter Hurley -- To unsubscribe from this list: send the line "unsubscribe linux-arch" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html