On Tue, Jul 02, 2013 at 07:30:37AM +0200, Thomas Petazzoni wrote: > Dear Michael Ellerman, > > On Tue, 02 Jul 2013 10:53:16 +1000, Michael Ellerman wrote: > > On Mon, 2013-07-01 at 15:42 +0200, Thomas Petazzoni wrote: > > > Until now, the MSI architecture-specific functions could be overloaded > > > using a fairly complex set of #define and compile-time > > > conditionals. In order to prepare for the introduction of the msi_chip > > > infrastructure, it is desirable to switch all those functions to use > > > the 'weak' mechanism. This commit converts all the architectures that > > > were overidding those MSI functions to use the new strategy. > > > > The MSI code used to use weak functions, until we discovered they were > > being miscompiled on some toolchains (11df1f0). I assume these days > > we're confident they work correctly. > > Hum, interesting. I see from your commit that gcc 4.3.2 was apparently > affected, and gcc 4.3.x is not /that/ old. Bjorn, what's your point of > view on this? Stop press. I went back and found the old threads on this, it's been a while. It looks like it was only gcc 4.1.[01] that miscompiled. The reference to gcc 4.3.2 was WRT ellision of the unused code, which is a separate issue. The kernel blacklists gcc 4.1.[01] (see f9d1425), so weak should be safe to use. We merged the change to the PCI code anyway because we thought it was nicer and it also avoided any problems with weak. So pretend I never said anything :) cheers