> The ibm-acpi module included in 2.6.10 doesn't appear to parse
> parameters correctly.  This seems to be due to a patch from Rusty
> Russell [1] which attempted to fix up the parameter parsing.

> What's the right way of fixing this?

I'm not sure about the "right" way, but this is what I came up with.
I sent a copy of this patch to Borislav Deianov a few weeks ago with
no resposne.  Maybe someone else will pick it up.

With this fix "insmod ibm_acpi light=on" works for me again.

-Jim

Module params don't work for me with 2.6.10 because the callbacks get
called before ibm_acpi_init so that the acpi_handle's are still NULL.

Here's a patch to force the param callbacks to be called after the
module is inited so that cmos_handle et al will be defined.

Signed-Off-By: Jim Radford <[EMAIL PROTECTED]>

--- linux-2.6.10/drivers/acpi/ibm_acpi.c.orig   2004-12-25 09:33:48.000000000 
-0800
+++ linux-2.6.10/drivers/acpi/ibm_acpi.c        2004-12-26 14:17:16.000000000 
-0800
@@ -153,6 +153,8 @@
        } state;
 
        int experimental;
+
+       const char *param;
 };
 
 struct proc_dir_entry *proc_dir = NULL;
@@ -1150,17 +1152,11 @@
 static int set_ibm_param(const char *val, struct kernel_param *kp)
 {
        unsigned int i;
-       char arg_with_comma[32];
-
-       if (strlen(val) > 30)
-               return -ENOSPC;
-
-       strcpy(arg_with_comma, val);
-       strcat(arg_with_comma, ",");
-
        for (i=0; i<NUM_IBMS; i++)
-               if (strcmp(ibms[i].name, kp->name) == 0)
-                       return ibms[i].write(&ibms[i], arg_with_comma);
+               if (strcmp(ibms[i].name, kp->name) == 0) {
+                       ibms[i].param = val;
+                       return 0;
+               }
        BUG();
        return -EINVAL;
 }
@@ -1215,6 +1211,14 @@
        
        for (i=0; i<NUM_IBMS; i++) {
                ret = ibm_init(&ibms[i]);
+               if (ret >= 0 && ibms[i].param) {
+                       char arg_with_comma[32];
+                       if (strlen(ibms[i].param) > sizeof(arg_with_comma)-2)
+                               return -ENOSPC;
+                       strcpy(arg_with_comma, ibms[i].param);
+                       strcat(arg_with_comma, ",");
+                       ret = ibms[i].write(&ibms[i], arg_with_comma);
+               }
                if (ret < 0) {
                        acpi_ibm_exit();
                        return ret;




-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to