On Tue, 2019-06-11 at 13:56 +0200, Borislav Petkov wrote: > On Tue, Jun 11, 2019 at 05:21:39PM +1000, Benjamin Herrenschmidt wrote: > > So looking again ... all the registration/removal of edac devices seem > > to already be protected by mutexes, so that's not a problem. > > > > Tell me more about what specific races you think we might have here, > > I'm not sure I follow... > > Well, as I said "it might work or it might set your cat on fire." For > example, one of the error logging paths is edac_mc_handle_error() and > that thing mostly operates using the *mci pointer which should be ok > but then it calls the "trace_mc_event" tracepoint and I'd suppose that > tracepoints can do lockless but I'm not sure. Yes, we would be in a world of pain already if tracepoints couldn't handle concurrency :-) > So what needs to happen is for paths which weren't called by multiple > EDAC agents in parallel but need to get called in parallel now due to > ARM drivers wanting to do that, to get audited that they're safe. That's the thing, I don't think we have such path. We are talking about having separate L1/L2 vs. MC drivers, they don't overlap. > Situation is easy if you have one platform driver where you can > synchronize things in the driver but since you guys need to do separate > drivers for whatever reason, then that would need to be done prior. > > Makes more sense? Sort-of... I still don't see a race in what we propose but I might be missing something subtle. We are talking about two drivers for two different IP blocks updating different counters etc... Cheers, Ben.