On Thu, Oct 19, 2017 at 03:36:20AM +0200, Jason A. Donenfeld wrote: > On Thu, Oct 19, 2017 at 3:31 AM, Sergey Senozhatsky > <[email protected]> wrote: > > On (10/19/17 03:03), Jason A. Donenfeld wrote: > > [..] > >> 1) Go back to the spinlock yourself. > > > > so we ruled out NMI deadlocks? > > Oh, right. No, I haven't thought through this enough to rule it out. > Indeed if that's an issue, the locks in the _once code will also be an > issue. > > So if locking is totally impossible, then a race-free way of doing > this is with a tri-state compare and exchange. Things are either: in > state 1: no key, state 2: getting key, state 3: have key. If state 1 > or 2, print the placeholder token. If state 3, do the hashing.
Cool! That's the solution I've been looking for since day 1. You the man. thanks, Tobin.

