Messages in this thread | | | Date | Wed, 21 Jul 1999 22:24:57 -0500 | From | "Donald Harter" <> | Subject | 2.2.5 parallel port driver locks up the kernel |
| |
The kernel locked up at boot. I could not even use the alt-sysrq key. I used printks to debug it further, and isolate the problem. Kernel 2.2.5 crashed right after the "printk ("5 " message in probe_one_ port in parport_pc.c in the drivers/misc directory. It had been called from par port_pc_init using 0x378, irq[0], dma[0]. My printer port hardware uses 0x378. It is an older card, perhaps even of the XT era. This card works fine when printing from Linux and windows. I am suing a pentium60 processor. Any suggestions on how to fix this would be appreciated.
printk ("1 probe_one_port in parport_pc.c \n"); if (check_region(base, 3)) return 0; if (!(p = parport_register_port(base, irq, dma, &parport_pc_ops))) return 0; printk ("2 probe_one_port in parport_pc.c \n"); if (p->base != 0x3bc) { printk ("3 probe_one_port in parport_pc.c \n"); if (!check_region(base+0x400,3)) { printk ("4 probe_one_port in parport_pc.c \n"); p->modes |= parport_ECR_present(p); p->modes |= parport_ECP_supported(p); p->modes |= parport_ECPPS2_supported(p); } if (!check_region(base+0x3, 5)) { printk ("5 probe_one_port in parport_pc.c \n"); p->modes |= parport_EPP_supported(p); p->modes |= parport_ECPEPP_supported(p); } } if (!parport_SPP_supported(p)) { /* No port. */ printk ("6 probe_one_port in parport_pc.c \n");
Further debugging shows that it crashed after printk statement 4 in parport_EPP_ supported in parport_pc.c . Here is the source code:
static int parport_EPP_supported(struct parport *pb) { /* If EPP timeout bit clear then EPP available */ if (!parport_pc_epp_clear_timeout(pb)) return 0; /* No way to clear timeout */ printk ("1 parport_EPP_supported in parport_pc.c \n "); parport_pc_write_control(pb, parport_pc_read_control(pb) | 0x20); printk ("2 parport_EPP_supported in parport_pc.c \n "); parport_pc_write_control(pb, parport_pc_read_control(pb) | 0x10); printk ("3 parport_EPP_supported in parport_pc.c \n "); parport_pc_epp_clear_timeout(pb); printk ("4 parport_EPP_supported in parport_pc.c \n "); parport_pc_read_epp(pb); udelay(30); /* Wait for possible EPP timeout */ printk ("4 parport_EPP_supported in parport_pc.c \n ");
****** It crashes after this statement ***********
if (parport_pc_read_status(pb) & 0x01) {
******* it crashes before this statement **********
printk ("5 parport_EPP_supported in parport_pc.c \n "); parport_pc_epp_clear_timeout(pb); printk ("6 parport_EPP_supported in parport_pc.c \n "); return PARPORT_MODE_PCEPP;
Donald Harter
Get your FREE Email at http://mailcity.lycos.com Get your PERSONALIZED START PAGE at http://my.lycos.com
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/
| |