On Mon, 2018-12-10 at 14:15 -0800, John Baldwin wrote: > On 12/8/18 7:43 PM, Warner Losh wrote: > > > > > > > > On Sat, Dec 8, 2018, 8:36 PM Kevin Bowling <kevin.bowl...@kev009.co > > m <mailto:kevin.bowl...@kev009.com> wrote: > > > > On Sat, Dec 8, 2018 at 12:09 AM Mateusz Guzik <mjgu...@gmail.co > > m <mailto:mjgu...@gmail.com>> wrote: > > > > > > > > Fully satisfying solution would be that all architectures get > > 64-bit > > > ops, even if in the worst case they end up taking a lock. > > Then > > > subsystems would not have to ifdef on anything. However, > > there > > > was some opposition to this proposal and I don't think this > > is > > > important enough to push. > > > > Mateusz, > > > > Who is opposing this particular polyfill solution? Scott Long > > brought > > up a situation in driver development where this would be useful > > as > > well. The polyfills lower the cognitive load and #ifdef soup > > which > > are the right call here regardless of performance on toy ports. > > > > > > I don't recall seeing the opposition either. It would have to be a > > global lock for all 64bit atomics.... but I think it would only be > > 2 atomics on those architectures. > It would have to be a spin lock, so in the case of unrl you would be > trading > an operation on one of N regular mutexes for a single spin lock that > was > also contested by other things. This would be pretty crappy. For > drivers > that aren't actually used on platforms without 32-bit atomics we can > simply > not build them in sys/modules/Makefile or not put them in > GENERIC. For > something in the core kernel like unrl I think we will have to do > what > Mateusz has done here. >
On a single-core system all you need to implement 64-bit atomics in the kernel is to disable interrupts around using normal load/store operations on the values. Do we have any platforms that are SMP but don't have hardware primitives for 64-bit atomics? -- Ian _______________________________________________ svn-src-all@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"