Subject: Re: [PATCH] phylib: Don't allow core of phylib to build as a module

From: Jeff Garzik <[email-masked]>
Date: Mon, 02 Jun 2008 12:39:21 -0400

Kumar Gala wrote:
> 
> On Jun 2, 2008, at 11:03 AM, Jeff Garzik wrote:
> 
>> Kumar Gala wrote:
>>> The core portions of the phylib aren't capable of being used as
>>> a module.  This isn't really any different than something like i2c
>>> in that the bus driver and core need to be built into the kernel.
>>> Signed-off-by: Kumar Gala <[email-masked]>
>>> ---
>>> Jeff, please consider this for 2.6.26 as w/o it we get build issues
>>> if phylib is config'd as a module on ppc.
>>> drivers/net/phy/Kconfig |    2 +-
>>> 1 files changed, 1 insertions(+), 1 deletions(-)
>>> diff --git a/drivers/net/phy/Kconfig b/drivers/net/phy/Kconfig
>>> index 6eb2d31..ab04cc7 100644
>>> --- a/drivers/net/phy/Kconfig
>>> +++ b/drivers/net/phy/Kconfig
>>> @@ -3,7 +3,7 @@
>>> #
>>> menuconfig PHYLIB
>>> -    tristate "PHY Device support and infrastructure"
>>> +    bool "PHY Device support and infrastructure"
>>>     depends on !S390
>>>     depends on NET_ETHERNET
>>
>> What are the issues?
>>
>> The core _should_ be able to be built as a module.
> 
> The core provides functions like phy_read/phy_write.  Andy has recently 
> introduced board level workaround/fixups.  The problem is these 
> workarounds tend to use phy_read/phy_write and the board/platform code 
> is not built as modules.
> 
> So we get errors like:
> 
> arch/powerpc/platforms/built-in.o: In function `mpc8568_mds_phy_fixups':
> /home/galak/git/master/powerpc/arch/powerpc/platforms/85xx/mpc85xx_mds.c:99: 
> undefined reference to `phy_write'
> /home/galak/git/master/powerpc/arch/powerpc/platforms/85xx/mpc85xx_mds.c:104: 
> undefined reference to `phy_read'

The whole world isn't embedded ppc, we use this stuff elsewhere too.

You guys need to figure out something that doesn't require phylib be 
built-in on ALL platforms, but only the platforms that require it.

Or, update the platform to not require built-in -- convert the board 
code to function pointers, and execute them later on somehow, for example.

	Jeff