2007-11-11 17:02:09

by Jochen Friedrich

[permalink] [raw]
Subject: [PATCH] powerpc: Add EXPORT_SYMBOL for symbols required by fs_enet and cpm_uart

fs_enet and cpm_uart need symbols from commproc.c (for CPM1) or
cpm2_common.c. Add EXPORT_SYMBOL for cpmp, cpm_setbrg and cpm2_immr, so
the drivers can be compiled as modules.

Building modules, stage 2.
MODPOST 5 modules
ERROR: "cpm2_immr" [drivers/net/fs_enet/fs_enet.ko] undefined!
ERROR: "cpmp" [drivers/net/fs_enet/fs_enet.ko] undefined!
make[1]: *** [__modpost] Error 1
make: *** [modules] Error 2

Signed-off-by: Jochen Friedrich <[email protected]>
---
arch/powerpc/sysdev/commproc.c | 3 +++
arch/powerpc/sysdev/cpm2_common.c | 3 +++
2 files changed, 6 insertions(+), 0 deletions(-)

diff --git a/arch/powerpc/sysdev/commproc.c b/arch/powerpc/sysdev/commproc.c
index f6a6378..d5a0dcf 100644
--- a/arch/powerpc/sysdev/commproc.c
+++ b/arch/powerpc/sysdev/commproc.c
@@ -51,6 +51,8 @@ static void m8xx_cpm_dpinit(void);
static uint host_buffer; /* One page of host buffer */
static uint host_end; /* end + 1 */
cpm8xx_t __iomem *cpmp; /* Pointer to comm processor space */
+EXPORT_SYMBOL(cpmp);
+
immap_t __iomem *mpc8xx_immr;
static cpic8xx_t __iomem *cpic_reg;

@@ -302,6 +304,7 @@ cpm_setbrg(uint brg, uint rate)
out_be32(bp, (((BRG_UART_CLK_DIV16 / rate) - 1) << 1) |
CPM_BRG_EN | CPM_BRG_DIV16);
}
+EXPORT_SYMBOL(cpm_setbrg);

#ifndef CONFIG_PPC_CPM_NEW_BINDING
/*
diff --git a/arch/powerpc/sysdev/cpm2_common.c b/arch/powerpc/sysdev/cpm2_common.c
index 859362f..4ed5df6 100644
--- a/arch/powerpc/sysdev/cpm2_common.c
+++ b/arch/powerpc/sysdev/cpm2_common.c
@@ -51,11 +51,13 @@ static void cpm2_dpinit(void);
#endif

cpm_cpm2_t __iomem *cpmp; /* Pointer to comm processor space */
+EXPORT_SYMBOL(cpmp);

/* We allocate this here because it is used almost exclusively for
* the communication processor devices.
*/
cpm2_map_t __iomem *cpm2_immr;
+EXPORT_SYMBOL(cpm2_immr);

#define CPM_MAP_SIZE (0x40000) /* 256k - the PQ3 reserve this amount
of space for CPM as it is larger
@@ -117,6 +119,7 @@ cpm_setbrg(uint brg, uint rate)

cpm2_unmap(bp);
}
+EXPORT_SYMBOL(cpm_setbrg);

/* This function is used to set high speed synchronous baud rate
* clocks.
--
1.5.3.5



2007-11-11 20:15:27

by Christoph Hellwig

[permalink] [raw]
Subject: Re: [PATCH] powerpc: Add EXPORT_SYMBOL for symbols required by fs_enet and cpm_uart

On Sun, Nov 11, 2007 at 06:01:37PM +0100, Jochen Friedrich wrote:
> --- a/arch/powerpc/sysdev/commproc.c
> +++ b/arch/powerpc/sysdev/commproc.c
> @@ -51,6 +51,8 @@ static void m8xx_cpm_dpinit(void);
> static uint host_buffer; /* One page of host buffer */
> static uint host_end; /* end + 1 */
> cpm8xx_t __iomem *cpmp; /* Pointer to comm processor space */
> +EXPORT_SYMBOL(cpmp);

Sorry, but this is a nightmare waiting to happen. Please define
proper accessors instead. (And get rid of the typedef while you're
at it)


2007-11-12 16:50:32

by Scott Wood

[permalink] [raw]
Subject: Re: [PATCH] powerpc: Add EXPORT_SYMBOL for symbols required by fs_enet and cpm_uart

Christoph Hellwig wrote:
> On Sun, Nov 11, 2007 at 06:01:37PM +0100, Jochen Friedrich wrote:
>> --- a/arch/powerpc/sysdev/commproc.c
>> +++ b/arch/powerpc/sysdev/commproc.c
>> @@ -51,6 +51,8 @@ static void m8xx_cpm_dpinit(void);
>> static uint host_buffer; /* One page of host buffer */
>> static uint host_end; /* end + 1 */
>> cpm8xx_t __iomem *cpmp; /* Pointer to comm processor space */
>> +EXPORT_SYMBOL(cpmp);
>
> Sorry, but this is a nightmare waiting to happen. Please define
> proper accessors instead.

We have proper accessors: in_be32, out_be16, etc.

Now, is the huge struct encompassing all of immr space a bad idea?
Sure. Are we working towards getting rid of it? Yes. Is that a reason
to keep modules from working in the meantime? No.

> (And get rid of the typedef while you're at it)

Again, changing all the users is a bit beyond the scope of this patch.

-Scott

2007-11-12 17:29:58

by Scott Wood

[permalink] [raw]
Subject: Re: [PATCH] powerpc: Add EXPORT_SYMBOL for symbols required by fs_enet and cpm_uart

Jochen Friedrich wrote:
> fs_enet and cpm_uart need symbols from commproc.c (for CPM1) or
> cpm2_common.c. Add EXPORT_SYMBOL for cpmp, cpm_setbrg and cpm2_immr, so
> the drivers can be compiled as modules.
>
> Building modules, stage 2.
> MODPOST 5 modules
> ERROR: "cpm2_immr" [drivers/net/fs_enet/fs_enet.ko] undefined!
> ERROR: "cpmp" [drivers/net/fs_enet/fs_enet.ko] undefined!
> make[1]: *** [__modpost] Error 1
> make: *** [modules] Error 2
>
> Signed-off-by: Jochen Friedrich <[email protected]>

Acked-by: Scott Wood <[email protected]>