On Wed, 2020-04-08 at 22:21 +1000, Michael Ellerman wrote: [...] > > According with LoPAR, for both of these rtas-calls, we have: > > > > For the PowerPC External Interrupt option: The call must be reentrant > > to the number of processors on the platform. > > For the PowerPC External Interrupt option: The argument call buffer for > > each simultaneous call must be physically unique. > > Oh well spotted. Where is that in the doc? > > > Which I think means this rtas-calls can be done simultaneously. > > I think so too. I'll read PAPR in the morning and make sure. > > > Would it mean that busting the rtas.lock for these calls would be safe? > > What would be better is to make those specific calls not take the global > RTAS lock to begin with. > > We should be able to just allocate the rtas_args on the stack, it's only > ~80 odd bytes. And then we can use rtas_call_unlocked() which doesn't > take the global lock.
Hello Michael, I did the simplest possible version of this change: http://patchwork.ozlabs.org/patch/1268371/ Where I create a rtas_call_reentrant(), and replace rtas_call() for that in all the possible calls of "ibm,int-on", "ibm,int-off",ibm,get- xive" and "ibm,set-xive". At first, I was planning on creating a function that tells if the requested token is one of above, before automatically choosing between the common and reentrant versions. But it seemed like unnecessary overhead, since the current calls are very few and very straight. What do you think on this? Best regards, Leonardo Bras
signature.asc
Description: This is a digitally signed message part