lkml.org 
[lkml]   [1999]   [Jul]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
Subject2.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/

\
 
 \ /
  Last update: 2005-03-22 13:53    [W:0.076 / U:0.344 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site