public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Jens Axboe <axboe@suse.de>
To: Alan Chandler <alan@chandlerfamily.org.uk>
Cc: linux-kernel@vger.kernel.org
Subject: Re: ide-cd problem
Date: Mon, 22 Nov 2004 12:31:51 +0100	[thread overview]
Message-ID: <20041122113150.GF10463@suse.de> (raw)
In-Reply-To: <E1CWCOC-0003so-Ao@home.chandlerfamily.org.uk>

On Mon, Nov 22 2004, Alan Chandler wrote:
> Jens Axboe writes: 
> 
> >On Mon, Nov 22 2004, Alan Chandler wrote:
> >>Jens Axboe writes:  
> >>
> >>>On Mon, Nov 22 2004, Alan Chandler wrote:
> >>>>On Sunday 21 November 2004 16:13, Alan Chandler wrote:
> >>>>...
> >>>>>
> >>>>> This seems to be some combination of frequently occuring timing 
> >>problem,
> >>>>> and the difference treatment in cdrom_newpc_intr to cdrom_pc_intr 
> >>>>
> >>>>I put a ndelay(400) at the head of cdrom_newpc_intr and the problem of
> >>>>DRQ being set when there was no data to transfer disappeared.  It
> >>>>appears that my hardware is too slow. 
> >>>>
> >>>>I have been reading the ATA/ATAPI - 6 spec, and it implies that the
> >>>>state of DRQ line need one pio cycle before being correct and that you
> >>>>should read the alternative status register to achieve this.  I tried
> >>>>a simple 
> >>>>
> >>>>HWIF(drive)->INB( IDE_ALTSTATUS_REG); 
> >>>>
> >>>>But that made no difference.
> >>>
> >>>ALTSTATUS read should be fine as well, but the implicit delay is
> >>>probably better. 
> >>> 
> >>
> >>I don't know why, but the ALTSTATUS read did NOT work when I tried it 
> >>yesterday (am currently at work using web mail to access my mail - can't 
> >>do more until this evening).  Its possible I put it in the wrong place 
> >>(ie after the cdrom_decode_status call, but I don't think so.  
> >>
> >>The ndelay(400) did work.  
> >>
> >>>Is this enough to fix it? For ->drq_interrupt we already should have
> >>>an adequate delay, Alan fixed this one recently. 
> >>> 
> >>
> >>Yes, I had included this patch quite early in my process of tracking
> >>the problem down (when I corrected it like you have (add the drive
> >>parameter to the OUTBSYNC macro like you have, you also need to
> >>declare an unsigned long flags at the head of the routine that was
> >>also not in that patch).  Indeed it was this that was the inspiration
> >>for the 400 nanosecs in my change.  I have no idea what the right
> >>number should be 
> >
> >400ns is the correctl value. Your writing is a little unclear to me -
> >did it work or not, with that change alone? 
> >
> 
> To be clear ... 
> 
> 
> I have modified ide-cd.c with 
> 
> 1) ndelay(400) at the head of cdrom_newpc_intr() 
> 
> 2) Alan Cox's patch in the place he originally identified for it to go 
> 
> 3) Some printk's in cdrom_newpc_intr() after the point where it reads the 
> status and IREASON and length registers and just for the purposes of 
> diagnostics. 
> 
> With only those changes it now works. 

You are not answering my question :-)

Here's is Alans patch as I posted some mails ago. Does it work with that
alone?? I'm curious of it is enough. It should not be necessary to incur
extra delay in the interrupt handler, if it is invoked from a real irq.

===== drivers/ide/ide-cd.c 1.97 vs edited =====
--- 1.97/drivers/ide/ide-cd.c	2004-11-07 02:54:41 +01:00
+++ edited/drivers/ide/ide-cd.c	2004-11-22 08:58:15 +01:00
@@ -890,8 +890,13 @@
 		ide_execute_command(drive, WIN_PACKETCMD, handler, ATAPI_WAIT_PC, cdrom_timer_expiry);
 		return ide_started;
 	} else {
+		unsigned long flags;
+
 		/* packet command */
-		HWIF(drive)->OUTB(WIN_PACKETCMD, IDE_COMMAND_REG);
+		spin_lock_irqsave(&ide_lock, flags);
+		HWIF(drive)->OUTBSYNC(drive, WIN_PACKETCMD, IDE_COMMAND_REG);
+		ndelay(400);
+		spin_unlock_irqrestore(&ide_lock, flags);
 		return (*handler) (drive);
 	}
 }

-- 
Jens Axboe


  reply	other threads:[~2004-11-22 11:32 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-11-20 18:42 ide-cd problem Alan Chandler
2004-11-20 19:47 ` Jens Axboe
2004-11-21  0:53   ` Alan Chandler
2004-11-21  8:56     ` Jens Axboe
2004-11-21 10:25       ` Alan Chandler
2004-11-21 16:13         ` Alan Chandler
2004-11-22  7:52           ` Alan Chandler
2004-11-22  8:01             ` Jens Axboe
2004-11-22 10:30               ` Alan Chandler
2004-11-22 10:51                 ` Jens Axboe
2004-11-22 11:29                   ` Alan Chandler
2004-11-22 11:31                     ` Jens Axboe [this message]
2004-11-22 12:53                       ` Alan Chandler
2004-11-22 13:02                         ` Jens Axboe
2004-11-22 19:19                           ` Alan Chandler
2004-11-22 23:48                             ` Alan Chandler
2004-11-23  7:13                               ` Alan Chandler
2004-11-23 14:51                                 ` Jens Axboe
2004-11-23 21:49                                   ` Alan Chandler
2004-11-26 23:39                                     ` Alan Chandler
2004-11-29 17:29                                       ` Bill Davidsen
2004-11-30  8:59                                     ` Alan Chandler
2004-12-10 21:32                                       ` ide-cd problem revisited - more brainpower needed Alan Chandler
2004-12-10 23:14                                         ` Alan Cox
2004-12-12  0:17                                           ` Alan Chandler
2004-12-12 11:39                                             ` Alan Cox
2004-12-12 13:34                                               ` Alan Chandler
2004-12-14  0:20                                                 ` Alan Chandler
2004-12-16 15:56                                                   ` Bill Davidsen
2004-12-17 23:59                                                     ` Alan Chandler
2004-11-24 23:19                           ` ide-cd problem Alan Cox
2004-11-25 15:29                             ` Jens Axboe
2004-11-25 16:25                               ` Alan Cox
2004-11-25 18:12                                 ` Jens Axboe
2004-11-25 18:45                                   ` Alan Chandler
2004-11-23 18:34               ` Jeff Garzik
2004-11-23 19:13                 ` Jens Axboe

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=20041122113150.GF10463@suse.de \
    --to=axboe@suse.de \
    --cc=alan@chandlerfamily.org.uk \
    --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