From: Tejun Heo <htejun@gmail.com>
To: mark.paulus@verizonbusiness.com
Cc: linux-ide@vger.kernel.org
Subject: Re: sata_sil issue on 2.6.22
Date: Thu, 06 Dec 2007 11:10:11 +0900 [thread overview]
Message-ID: <47575A03.6040305@gmail.com> (raw)
In-Reply-To: <4757415C.9010906@gmail.com>
[-- Attachment #1: Type: text/plain, Size: 747 bytes --]
Tejun Heo wrote:
> Mark Paulus wrote:
>> Yes, I am. It's a SD-ADSAIDE-S1, with a sil3611ct80 chip on board.
>>
>> My question would be, what makes the 2.6.22 kernel different enough
>> than the 2.6.18 kernel that this setup is causing problems in .22.
>> Is .18 masking the problems, or is .22 just looking at things with
>> tighter tolerences, so it's more sensitive?
>
> That's to be investigated. There's another report of similar problem.
> Can you please add yourself to the following bugzilla and add your log
> there?
>
> http://bugzilla.kernel.org/show_bug.cgi?id=9505
In case you don't like bugzilla, I'm attaching proposed patch here too.
Please test the attached patch and report whether it fixes the problem.
Thanks.
--
tejun
[-- Attachment #2: sata_sil-irq-fix.patch --]
[-- Type: text/x-patch, Size: 1565 bytes --]
Index: work/drivers/ata/sata_sil.c
===================================================================
--- work.orig/drivers/ata/sata_sil.c
+++ work/drivers/ata/sata_sil.c
@@ -390,23 +390,19 @@ static void sil_host_intr(struct ata_por
sil_scr_read(ap, SCR_ERROR, &serror);
sil_scr_write(ap, SCR_ERROR, serror);
- /* Trigger hotplug and accumulate SError only if the
- * port isn't already frozen. Otherwise, PHY events
- * during hardreset makes controllers with broken SIEN
- * repeat probing needlessly.
+ /* Sometimes spurious interrupts occur, double check
+ * it's PHYRDY CHG.
*/
- if (!(ap->pflags & ATA_PFLAG_FROZEN)) {
- ata_ehi_hotplugged(&ap->link.eh_info);
+ if (serror & SERR_PHYRDY_CHG) {
ap->link.eh_info.serror |= serror;
+ goto freeze;
}
- goto freeze;
+ if (!(bmdma2 & SIL_DMA_COMPLETE))
+ return;
}
- if (unlikely(!qc))
- goto freeze;
-
- if (unlikely(qc->tf.flags & ATA_TFLAG_POLLING)) {
+ if (unlikely(!qc || (qc->tf.flags & ATA_TFLAG_POLLING))) {
/* this sometimes happens, just clear IRQ */
ata_chk_status(ap);
return;
Index: work/drivers/ata/libata-core.c
===================================================================
--- work.orig/drivers/ata/libata-core.c
+++ work/drivers/ata/libata-core.c
@@ -3923,6 +3923,7 @@ void ata_std_postreset(struct ata_link *
/* clear SError */
if (sata_scr_read(link, SCR_ERROR, &serror) == 0)
sata_scr_write(link, SCR_ERROR, serror);
+ link->eh_info.serror = 0;
/* is double-select really necessary? */
if (classes[0] != ATA_DEV_NONE)
prev parent reply other threads:[~2007-12-06 2:10 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-11-20 20:35 sata_sil issue on 2.6.22 Mark Paulus
2007-11-28 1:21 ` Tejun Heo
2007-11-30 15:56 ` Mark Paulus
2007-12-04 2:54 ` Tejun Heo
2007-12-05 14:29 ` Mark Paulus
2007-12-05 14:33 ` Tejun Heo
2007-12-05 14:49 ` Mark Paulus
2007-12-06 0:25 ` Tejun Heo
2007-12-06 2:10 ` Tejun Heo [this message]
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=47575A03.6040305@gmail.com \
--to=htejun@gmail.com \
--cc=linux-ide@vger.kernel.org \
--cc=mark.paulus@verizonbusiness.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.