2003-03-28 21:35:17

by Ronald S. Bultje

[permalink] [raw]
Subject: some 2.5.66 issues

Hey,

people are asking for comments on 2.5.x, so here goes. gcc-2.96, RH-7.3,
kernel 2.5.66 with module-init-tools-0.9.10.

* the smc-ultra networking module doesn't work. On any operation, it
returns "Device or Resource Busy".
* module_request() is still broken - it returns 0 but the specified
module isn't loaded

Now, something more problematic. I'm being told to use try_module_get()
instead of MOD_INC_USE_COUNT. Cool. Somehow, it returns 1. I had a look
at the code in linux/module.h and am a bit confused:

--
static inline int try_module_get(struct module *module)
{
int ret = 1;

if (module) {
unsigned int cpu = get_cpu();
if (likely(module_is_live(module)))
local_inc(&module->ref[cpu].count);
else
ret = 0;
put_cpu();
}
return ret;
}
--

Why does it only return 0 if the module is not alive? This sounds...
er... weird? Can someone please enlighten me?

Looking further:

--
/* Not Yet Implemented */
#define MODULE_AUTHOR(name)
#define MODULE_DESCRIPTION(desc)
#define MODULE_SUPPORTED_DEVICE(name)
#define MODULE_PARM_DESC(var,desc)
--

No wonder modinfo doesn't show any info... Even worse, the only module
parameter thing that *does* work is MODULE_PARM...

--
/* DEPRECATED: Do not use. */
#define MODULE_PARM(var,type) \
struct obsolete_modparm __parm_##var \
__attribute__((section("__obsparm"))) \
{ __stringify(var), type };
--

Interesting. What's going on here?

Ronald

(please CC me any replies, I'm not subscribed)

--
Ronald Bultje <[email protected]>


2003-03-28 22:24:48

by Chris Friesen

[permalink] [raw]
Subject: Re: some 2.5.66 issues

Ronald Bultje wrote:

> Now, something more problematic. I'm being told to use try_module_get()
> instead of MOD_INC_USE_COUNT. Cool. Somehow, it returns 1. I had a look
> at the code in linux/module.h and am a bit confused:

> Why does it only return 0 if the module is not alive? This sounds...
> er... weird? Can someone please enlighten me?

Presumably so you can treat the result as a boolean true/false value.

Chris



--
Chris Friesen | MailStop: 043/33/F10
Nortel Networks | work: (613) 765-0557
3500 Carling Avenue | fax: (613) 765-2986
Nepean, ON K2H 8E9 Canada | email: [email protected]

2003-03-28 22:39:15

by Mikael Pettersson

[permalink] [raw]
Subject: Re: some 2.5.66 issues

On 29 Mar 2003 00:24:14 +0100, Ronald Bultje wrote:
>people are asking for comments on 2.5.x, so here goes. gcc-2.96, RH-7.3,
>kernel 2.5.66 with module-init-tools-0.9.10.
...
>* module_request() is still broken - it returns 0 but the specified
>module isn't loaded

To summarise: RH user-space, 2.5 kernel, modules don't autoload.

This is a well-known user-space (*) bug. Fix below.

(*) Well, unless "dropping /proc/ksyms for no good reason" counts
as a 2.5 kernel bug.

--- /etc/rc.d/rc.sysinit.~1~ 2002-08-22 23:10:52.000000000 +0200
+++ /etc/rc.d/rc.sysinit 2003-01-14 03:04:57.000000000 +0100
@@ -334,7 +334,7 @@
IN_INITLOG=
fi

-if ! grep -iq nomodules /proc/cmdline 2>/dev/null && [ -f /proc/ksyms ]; then
+if ! grep -iq nomodules /proc/cmdline 2>/dev/null && [ -f /proc/modules ]; then
USEMODULES=y
fi