2010-08-04 11:13:27

by Felipe Balbi

[permalink] [raw]
Subject: Section Mismatches

Hi Uwe,

I see that your commit 0db252452378aa7a9e001a13226e1cd1dc61453d removed
the *_driver from the symbol whitelist when referencing init section
(heh, it took a while), but could you explain what's the rationale
behind that ?

Thanks a lot

--
balbi

DefectiveByDesign.org


2010-08-04 12:27:04

by Uwe Kleine-König

[permalink] [raw]
Subject: Re: Section Mismatches

Hi Felipe,

On Wed, Aug 04, 2010 at 02:11:56PM +0300, Felipe Balbi wrote:
> I see that your commit 0db252452378aa7a9e001a13226e1cd1dc61453d removed
> the *_driver from the symbol whitelist when referencing init section
> (heh, it took a while), but could you explain what's the rationale
> behind that ?
The rational is that it's AFAIK wrong if a driver references a function
that lives in .init.text.

Do you think that's wrong?

Best regards
Uwe

--
Pengutronix e.K. | Uwe Kleine-K?nig |
Industrial Linux Solutions | http://www.pengutronix.de/ |

2010-08-09 06:08:55

by Felipe Balbi

[permalink] [raw]
Subject: Re: Section Mismatches

On Wed, Aug 04, 2010 at 02:26:59PM +0200, ext Uwe Kleine-K?nig wrote:
>Hi Felipe,
>
>On Wed, Aug 04, 2010 at 02:11:56PM +0300, Felipe Balbi wrote:
>> I see that your commit 0db252452378aa7a9e001a13226e1cd1dc61453d removed
>> the *_driver from the symbol whitelist when referencing init section
>> (heh, it took a while), but could you explain what's the rationale
>> behind that ?
>The rational is that it's AFAIK wrong if a driver references a function
>that lives in .init.text.

how about all the driver structures ? should they remove __init from
probe() or stop saving the probe() function's pointer ?

That can be done for e.g. platform drivers, but for cpufreq_driver
structures, I can't see a way to avoid a section mismatch (not without
changing the cpufreq code a bit, at least). And, to me, that init has to
live in the .init.text section as it's pretty much only called to
initialize the frequency table for the cpu.

>Do you think that's wrong?

no, no. Not saying that. Just wondering what will happen with several
drivers, will they change from _driver to _ops or try to stop saving
probe() pointers into the driver structure.

--
balbi

DefectiveByDesign.org

2010-08-09 06:49:40

by Uwe Kleine-König

[permalink] [raw]
Subject: Re: Section Mismatches

Hello Felipe,

On Mon, Aug 09, 2010 at 09:08:31AM +0300, Felipe Balbi wrote:
> On Wed, Aug 04, 2010 at 02:26:59PM +0200, ext Uwe Kleine-K?nig wrote:
>> Hi Felipe,
>>
>> On Wed, Aug 04, 2010 at 02:11:56PM +0300, Felipe Balbi wrote:
>>> I see that your commit 0db252452378aa7a9e001a13226e1cd1dc61453d removed
>>> the *_driver from the symbol whitelist when referencing init section
>>> (heh, it took a while), but could you explain what's the rationale
>>> behind that ?
>> The rational is that it's AFAIK wrong if a driver references a function
>> that lives in .init.text.
>
> how about all the driver structures ? should they remove __init from
> probe() or stop saving the probe() function's pointer ?
>
> That can be done for e.g. platform drivers, but for cpufreq_driver
> structures, I can't see a way to avoid a section mismatch (not without
> changing the cpufreq code a bit, at least). And, to me, that init has to
> live in the .init.text section as it's pretty much only called to
> initialize the frequency table for the cpu.
I think they need handling similar handling like the usb gadget drivers.

See

http://thread.gmane.org/gmane.linux.ports.ppc.embedded/37291/focus=34468

for the changes I suggested there.

Best regards
Uwe

--
Pengutronix e.K. | Uwe Kleine-K?nig |
Industrial Linux Solutions | http://www.pengutronix.de/ |

2010-08-09 10:32:09

by Felipe Balbi

[permalink] [raw]
Subject: Re: Section Mismatches

Hi,

On Mon, Aug 09, 2010 at 08:49:36AM +0200, ext Uwe Kleine-K?nig wrote:
> http://thread.gmane.org/gmane.linux.ports.ppc.embedded/37291/focus=34468
>
>for the changes I suggested there.

I see, will look into it. Thanks

--
balbi

DefectiveByDesign.org