[...]

> > > +  */
> > > + smp_wmb();
> > > + WRITE_ONCE(cpu_buffer->mapped, 1);
> > > +
> > > + /* Init meta_page values unless the writer did it already */
> > > + cmpxchg(&cpu_buffer->meta_page->entries, 0,
> > > +         local_read(&cpu_buffer->entries));
> > > + cmpxchg(&cpu_buffer->meta_page->overrun, 0,
> > > +         local_read(&cpu_buffer->overrun));
> > > + cmpxchg(&cpu_buffer->meta_page->subbufs_touched, 0,
> > > +         local_read(&cpu_buffer->pages_touched));
> > > + cmpxchg(&cpu_buffer->meta_page->subbufs_lost, 0,
> > > +         local_read(&cpu_buffer->pages_lost));
> > 
> > Instead of using these cmpxchg, can we move this initialization before
> > smp_wmb()? Thus we can avoid conflict with rb_update_meta_page()
> 
> Good point, Not sure why I made this more complicated than it should be.

Ha, I know, that was before v6, where the writer was updating all of that. From
v6 the update has been moved to the irq_rb_work.

> 
> > 
> > Thank you,
> >
> 
> [...]

Reply via email to