Sending this to the list instead of just to Corey (forgot to reply-all).

Corey,

Here is the mutex-lock patch for serial_core.c

--- linux-2.6.18-ipmi/drivers/serial/serial_core.c     2007-04-05 17:28:
15.000000000 -0500
+++ linux-2.6.18/drivers/serial/serial_core.c    2007-04-04 17:06:
00.000000000 -0500
@@ -2307,8 +2307,8 @@ uart_register_ldrv(struct uart_driver *d

    snprintf(l->name, sizeof(l->name), "%s%d", drv->dev_name, port->line);
    printk(KERN_INFO
-           "Registering UART %s with the serial layered driver\n",
-           l->name);
+            "Registering UART %s with the serial layered driver\n",
+            l->name);
    l->ldrv = NULL;
    l->drv = drv;
    l->port = port;
@@ -2318,14 +2318,10 @@ uart_register_ldrv(struct uart_driver *d
        if (strcmp(w->name, l->name) == 0) {
            struct uart_state *state = ldrv_info_to_state(l);
            int count;
-            mutex_lock(&state->mutex);
            l->ldrv = w->ldrv;
            l->port->ldrv = w->ldrv;
            count = uart_users(state);
-            mutex_unlock(&state->mutex);
            w->info = l;
-            if (count == 0)
-                uart_ldrv_open(drv, l->port);
        }
    }
}
@@ -2651,6 +2647,21 @@ int uart_add_one_port(struct uart_driver
    mutex_unlock(&state->mutex);
    mutex_unlock(&port_mutex);

+#ifdef CONFIG_UART_LDRVS
+    {
+        struct uart_ldrv_wait *w;
+
+        list_for_each_entry(w, &ldrv_wait_list, link) {
+            if (w->info != NULL) {
+                  struct uart_state *state = ldrv_info_to_state(w->info);
+                if (uart_users(state) == 0) {
+                    uart_ldrv_open(drv, w->info->port);
+                }
+            }
+        }
+    }
+#endif
+
    return ret;
}
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Openipmi-developer mailing list
Openipmi-developer@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openipmi-developer

Reply via email to