Re: Virtually Mapped Stacks: Do not disable interrupts
From: Christoph Lameter
Date: Fri May 19 2017 - 10:04:40 EST
On Thu, 18 May 2017, Andy Lutomirski wrote:
> On Wed, May 17, 2017 at 8:58 AM, Christoph Lameter <cl@xxxxxxxxx> wrote:
> > The reason to disable interrupts seems to be to avoid switching
> > to a different processor while handling per cpu data using
> > individual loads and stores. If we use per cpu RMV primitives
> > we will not have to disable interrupts.
>
> I like this, except that those primitives can be quite expensive, I
> think, and they're being called in a loop. What if you first did a
> this_cpu_read() to see if the value in the cache slot might be useful
> before doing the heavyweight exchange?
These operations are not expensive because they are unlocked operations
(in constrast to the usuual "lock cmpxchg") and do not
require coherency to be guaranteed between processors. That is why they
were made available because they are so much cheaper.