linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Michael Reincke <reincke.m@stn-atlas.de>
To: Andrey Borzenkov <arvidjaar@mail.ru>
Cc: linux-kernel@vger.kernel.org
Subject: Re: 2.4.21-rc:  lost interrupt wgen usinf atapi cdrom-drive
Date: 13 May 2003 09:29:26 +0200	[thread overview]
Message-ID: <1052810966.1602.4.camel@pcew80.atlas.de> (raw)
In-Reply-To: <E19FTA7-000Mgw-00.arvidjaar-mail-ru@f15.mail.ru>

On Tue, 2003-05-13 at 08:21, Andrey Borzenkov wrote:
> > i upgraded the linux kernel of my computer from 2.4.21-pre4 to
> > 2.4.21-rc2 and got the following messages in syslog when using my
> > atapi-cdrom drive:
> > May 12 09:42:52 pcew80 kernel: hdc: DMA interrupt recovery
> > May 12 09:42:52 pcew80 kernel: hdc: lost interrupt
> > May 12 09:42:52 pcew80 kernel: hdc: status timeout: status=0xd0 { Busy }
> > May 12 09:42:52 pcew80 kernel: hdc: status timeout: error=0x00
> > May 12 09:42:52 pcew80 kernel: hdc: DMA disabled
> > May 12 09:42:52 pcew80 kernel: hdc: drive not ready for command
> > May 12 09:42:52 pcew80 kernel: hdc: ATAPI reset complete
> 
> 
> It smells like ide_do_request forgets to enable interrupts when
> request queue is empty.
> 
> drivers/ide/ide-io.c:
> 
> void ide_do_request (ide_hwgroup_t *hwgroup, int masked_irq)
> {
>         ide_drive_t     *drive;
>         ide_hwif_t      *hwif;
>         struct request  *rq;
>         ide_startstop_t startstop;
> 
>         /* for atari only: POSSIBLY BROKEN HERE(?) */
>         ide_get_lock(&ide_intr_lock, ide_intr, hwgroup);
> 
>         /* necessary paranoia: ensure IRQs are masked on local CPU */
>         local_irq_disable();
>            ^^^^^^^^
>               [...]
>                 if (drive == NULL) {
>                               [...]
>                         if (sleep) {
>                               [...]
>                         } else {
>                                 /* Ugly, but how can we sleep for the lock
>                                  * otherwise? perhaps from tq_disk?
>                                  */
> 
>                                 /* for atari only */
>                                 ide_release_lock(&ide_intr_lock);
>                                 hwgroup->busy = 0;
>                         }
>                         /* no more work for this hwgroup (for now) */
>                         return;
>                    Oops. local_irq_disable remains in effect
>                      [...]
>                 spin_unlock(&io_request_lock);
>                 local_irq_enable();
>                 ^^^^^^^^^^^^^^^^^^^
>                         /* allow other IRQs while we start this request */
>                 startstop = start_request(drive, rq);
>                 spin_lock_irq(&io_request_lock);
>                 if (masked_irq && hwif->irq != masked_irq)
>                         enable_irq(hwif->irq);
>                 if (startstop == ide_stopped)
>                         hwgroup->busy = 0;
> 
> Ironically it does not release ide_intr_lock in this case but we
> are not on m68k so we do not care :)
> 
> Could you please try to add local_irq_enable() before ide_release_lock() above and see if it helps?
> It has been reported to have fixed fix problems for other people. OTOH
> I did have sevral hard lockups with this so there may be more subtle
> problems issues.
The hangs and timeouts and total blocking of the cdrom drive seems to be
away, but the lost interrupt messages are still there.
But have in mind I've only a quick test so far.

-- 
Michael Reincke, NUT Team 2 (Software Build Management)

STN ATLAS Elektronik GmbH, Bremen (Germany)
E-mail : reincke.m@stn-atlas.de |  mail: Sebaldsbrücker Heerstr 235    
phone  : +49-421-457-2302       |        28305 Bremen                  
fax    : +49-421-457-3913       |





  reply	other threads:[~2003-05-13  7:16 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-05-13  6:21 2.4.21-rc: lost interrupt wgen usinf atapi cdrom-drive Andrey Borzenkov
2003-05-13  7:29 ` Michael Reincke [this message]
2003-05-13  7:37   ` Michael Reincke
2003-05-19  6:39     ` Michael Reincke
  -- strict thread matches above, loose matches on Subject: below --
2003-05-13  5:51 Michael Reincke

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1052810966.1602.4.camel@pcew80.atlas.de \
    --to=reincke.m@stn-atlas.de \
    --cc=arvidjaar@mail.ru \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).