RE: [PARPORT] reverse channel negotiation fails under CPU load

From: Dmitri Katchalov (dmitrik@MailAndNews.com)
Date: Thu Oct 11 2001 - 10:34:19 EDT

  • Next message: Mike Yates: "[PARPORT] ioctl ??"

    >===== Original Message From Tim Waugh <twaugh@redhat.com> =====
    >On Sun, Sep 23, 2001 at 11:31:51PM -0400, Dmitri Katchalov wrote:
    >
    >> I'm writing a usermode driver for my Brother MFC 4600 printer/scanner/fax..
    >> The driver periodically polls the device for incoming data packets
    >> by switching to IEEE reverse byte mode, reading the data (if any) from
    >> the port and then switching back to compat mode.
    >>
    >> It works OK as long as the computer is idle. As soon as I put any kind of
    >> load on a CPU (even running ps on another console)
    >> ioctl (parport,PPNEGOT,&IEEE_MODE_BYTE) starts failing with
    >> "input/output error".
    >>
    >> I'm running 2.4.7 kernel on P120 Toshiba laptop.
    >> Parport driver correctly auto-detects TRISTATE, ECP, DMA and IRQ settings
    >> and otherwise appears to be configured and functioning properly.
    >>
    >> Any ideas?
    >
    >I _guess_ that there is a schedule() in a timing-critical piece of
    >code. Is there anything in the output of 'dmesg' to suggest where
    >exactly the I/O error is originating, i.e. which event number?

    No, nothing at all in dmesg except "registered / unregistered pardevice".
    Yes, there is a schedule_timeout() in parport_wait_peripheral()

    But never mind. This only happens in a tight loop. A retry after
    a small delay resolved the issue.

    I attribute this to a general weirdness of the device I'm dealing
    with. As I mentioned in my other post it probably uses a pre-IEEE
    so-called "Boise" version of the specs.

    Regards,
    Dmitri

    -- To unsubscribe, send mail to: linux-parport-request@torque.net --
    -- with the single word "unsubscribe" in the body of the message. --



    This archive was generated by hypermail 2b29 : Thu Oct 11 2001 - 10:41:29 EDT