2.5.74 synclink_cs.c

2.5.74 synclink_cs.c

Post by Paul Fulghu » Fri, 04 Jul 2003 15:10:19



Fix arbitration between net open and tty open.

Cleanup missed bits of CUA device removal changes.

Please apply.

--

Microgate Corporation, http://www.microgate.com

--- linux-2.5.72/drivers/char/pcmcia/synclink_cs.c      2003-06-16 08:42:24.000000000 -0500

 /*
  * linux/drivers/char/pcmcia/synclink_cs.c
  *
- * $Id: synclink_cs.c,v 4.10 2003/05/13 16:06:03 paulkf Exp $
+ * $Id: synclink_cs.c,v 4.13 2003/06/18 15:29:32 paulkf Exp $
  *
  * Device driver for Microgate SyncLink PC Card

  * assigned major number. May be forced as module parameter.
  */
 static int ttymajor=0;
-static int cuamajor=0;

 static int debug_level = 0;

 MODULE_PARM(break_on_load,"i");
 MODULE_PARM(ttymajor,"i");
-MODULE_PARM(cuamajor,"i");
 MODULE_PARM(debug_level,"i");
 MODULE_PARM(maxframe,"1-" __MODULE_STRING(MAX_DEVICE_COUNT) "i");

 MODULE_LICENSE("GPL");

 static char *driver_name = "SyncLink PC Card driver";
-static char *driver_version = "$Revision: 4.10 $";
+static char *driver_version = "$Revision: 4.13 $";

 static struct tty_driver *serial_driver;

                               (info->serial_signals & SerialSignal_DCD) ? "on" : "off");
                if (info->serial_signals & SerialSignal_DCD)
                        wake_up_interruptible(&info->open_wait);
-               else if (!(info->flags & ASYNC_CALLOUT_NOHUP)) {
+               else {
                        if (debug_level >= DEBUG_LEVEL_ISR)
                                printk("doing serial hangup...");

 {
        MGSLPC_INFO * info = (MGSLPC_INFO *)tty->driver_data;

-       if (!info || mgslpc_paranoia_check(info, tty->name, "mgslpc_close"))
+       if (mgslpc_paranoia_check(info, tty->name, "mgslpc_close"))
                return;

        if (debug_level >= DEBUG_LEVEL_INFO)
                printk("%s(%d):mgslpc_close(%s) entry, count=%d\n",
                         __FILE__,__LINE__, info->device_name, info->count);

-       if (!info->count || tty_hung_up_p(filp))
+       if (!info->count)
+               return;
+
+       if (tty_hung_up_p(filp))
                goto cleanup;


        info = mgslpc_device_list;
        while(info && info->line != line)
                info = info->next_device;
-       if ( !info ){
-               printk("%s(%d):Can't find specified device on open (line=%d)\n",
-                       __FILE__,__LINE__,line);
+       if (mgslpc_paranoia_check(info, tty->name, "mgslpc_open"))
                return -ENODEV;
-       }

        tty->driver_data = info;
        info->tty = tty;
-       if (mgslpc_paranoia_check(info, tty->name, "mgslpc_open"))
-               return -ENODEV;

        if (debug_level >= DEBUG_LEVEL_INFO)

 cleanup:                      
        if (retval) {
+               if (tty->count == 1)
+                       info->tty = 0; /* tty layer will release tty struct */
                if(info->count)
                        info->count--;
        }

--

Microgate Corporation, http://www.microgate.com
--

Microgate Corporation, http://www.microgate.com

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in

More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

 
 
 

1. 2.5.74 does not boot with TCQ: Unable to handle NULL pointer dereference

2.5.72 + bk : kernel boots fine with TCQ, TASKFILE, and TASKFILE_IO enabled
It froze a bunch of times, but at least it booted.

2.5.74: kernel refuses to boot (kernel panic).
Disabling TASKFILE_IO does not help
Disabling TASKFILE does not help
Disabling TCQ allows the kernel to boot.

Here's the oops data (copied by hand)...
Please CC, I'm not subscribed.

Unable to handle kernel NULL pointer dereference in virtual address 00000000
....
kernel is not tainted...
...
EIP at 0x0
Process swapper

__elv_add_request + 0x36/0x50
ide_do_drive_cmd+0xc2/0x140
ide_diag_taskfile+0xac/0xe0
ide_raw_taskfile+0x27/0x30
ide_tcq_configure+0x7c/0x110
ide_enable_queued+0x5e/0x100
__ide_dma_queued_on+0x94/0xc0
__ide_dma_on+0x53/0x60
via82cxxx_ide_dma_check+0xbf/0xe0
probe_hwif+0x24a/0x480
probe_hwif_init+0x25/0x80
ide_setup_pci_device+0x57/0x90
via_init_one+0x3c/0x50
ide_scan_pcidev+0x5c/0x70
ide_scan_pcibus+0x3e/0xe0
probe_for_hwifs+0x10/0x20
ide_init_builtin_drivers+0x5/0x10
ide_init+0x45/0x60
do_initcalls+0x2c/0xa0
init_workqueues+0xf/0x60
init+0x34/0x1d0
init+0x0/0x1d0
kernel_thread_helper+0x5/0x10

Code: Bad EIP value

<0> Kernel panic: Attempted to kill init.

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in

More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

2. Imagine 128 Series II 8MB and XFree86?

3. 2.5.74 synclink.c

4. waiting for lock on <printername>

5. 2.5.74: ALSA lockups, and ACPI, IRQ routing

6. Third party Multiple boot program.

7. 2.5.74 xattr fixes

8. IP Aliasing - Windows 98 and FreeBSD 3.0

9. cdrom problems in 2.5.74

10. (trivial 2.5.74) compilation fix drivers/mtd/mtd_blkdevs.c

11. [ANNOUNCE] kexec for 2.5.74 available

12. 2.5.74 with contest

13. - 2.5.74 - (frame buffer & radeonfb) - no setfont, loadkeys on all tty