Re: lpt stopped working

From: John Baldwin <jhb_at_freebsd.org>
Date: Mon, 9 Feb 2009 14:58:41 -0500
On Monday 09 February 2009 1:58:39 pm Christian Gusenbauer wrote:
> On Monday 09 February 2009, John Baldwin wrote:
> > On Friday 06 February 2009 4:31:46 pm Beech Rintoul wrote:
> > > On Thursday 05 February 2009 22:03:37 Beech Rintoul wrote:
> > > > On Wednesday 04 February 2009 05:14:10 John Baldwin wrote:
> > > > > On Monday 02 February 2009 10:43:39 am Christian Gusenbauer wrote:
> > > > > > Hi!
> > > > > >
> > > > > > Since the recent update (svn r187576) to the ppbus/ppc code my
> > > > > > printer
> > > > >
> > > > > stopped
> > > > >
> > > > > > working. Every request seems to hang forever in ppb_request_bus
> > > > > > waiting for ppb->ppc_lock (at least 'top' tells me that it's
> > > > > > hanging in state 'ppbreq').
> > > > >
> > > > > Can you use procstat to get a stack trace of the hung thread?
> > > >
> > > > My printer is still showing "device busy" for lpt0 does anyone know
> > > > offhand when the changes were committed? I need to revert.
> > >
> > > There is regression somewhere in the ppbus code committed two weeks ago.
> > > I reverted back to previous code and lpt0 no longer reports "device 
busy"
> > > and printing is working again.
> >
> > Please help to debug this so we can have working lpt0 in 8.0.  No one
> > tested the patches months ago when I first posted them, and if folks do 
not
> > test them now I will simply remove the driver before 8.0 ships.  I no
> 
> Mea culpa, too. As you sent your patches, I thought someone else will do the 
> tests surely ... :-(.
> 
> > longer have any hardware such that I can test this directly, so I am
> > depending on folks to test things I have asked for and report back.  I
> > believe the last thing I asked for was for someone to do this when they 
lpt
> > was hung:
> >
> > Ok, can you run kgdb against your running kernel (Just run 'kgdb' without
> > any arguments) and do the following:
> >
> > (kgdb) p *(struct ppb_data *)ppbus_devclass->devices[0]->softc
> >
> > Assuming the ppb_owner is not 0, can you then do this:
> >
> > (kgdb) p *(device_t)((struct ppb_data
> > *)ppbus_devclass->devices[0]->softc)->ppb_owner
> 
> This is the output (unfortunately ppb_owner IS 0):
> 
> (kgdb) p *(struct ppb_data *)ppbus_devclass->devices[0]->softc
> $1 = {class_id = 10, state = 1, error = 0, mode = 0, ppb_owner = 0x0,
>   ppc_lock = 0xc56bfe7c, ppc_irq_res = 0xc573d5c0}

And this is while lpd or the like is hung trying to write to /dev/lpt0?

-- 
John Baldwin
Received on Mon Feb 09 2009 - 18:59:17 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:41 UTC