All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tejun Heo <htejun@gmail.com>
To: Jeff Garzik <jgarzik@pobox.com>
Cc: linux-ide@vger.kernel.org
Subject: Re: [PATCH] sata_sil: update device hotplug handling
Date: Mon, 12 Jun 2006 16:42:15 +0900	[thread overview]
Message-ID: <448D1AD7.3000807@gmail.com> (raw)
In-Reply-To: <448D04C5.9030603@pobox.com>

Jeff Garzik wrote:
> Tejun Heo wrote:
>> Some flavors of 3112 cannot mask SATA_IRQ reliably and ends up
>> scheduling hotplug event during hardreset.
> 
> Can you give more detail?  This sounds like a software bug?  I don't see 
> SError clearing the pre-patched code path, the lack of which may create 
> the conditions you describe.

This is from a sil3112 PCMCIA card.

# lspci -nvvv -s 07:00
0000:07:00.0 0180: 1095:3112 (rev 02)
         Subsystem: 1095:3112
         Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- 
ParErr- Stepping- SERR- FastB2B-
         Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium 
 >TAbort- <TAbort- <MAbort- >SERR- <PERR-
         Latency: 64
         Interrupt: pin A routed to IRQ 10
         Region 0: I/O ports at 2410 [size=8]
         Region 1: I/O ports at 2420 [size=4]
         Region 2: I/O ports at 2418 [size=8]
         Region 3: I/O ports at 2424 [size=4]
         Region 4: I/O ports at 2400 [size=16]
         Region 5: Memory at 34000000 (32-bit, non-prefetchable) [size=512]
         Expansion ROM at 30000000 [disabled] [size=512K]
         Capabilities: [60] Power Management version 2
                 Flags: PMEClk- DSI+ D1+ D2+ AuxCurrent=0mA 
PME(D0-,D1-,D2-,D3hot-,D3cold-)
                 Status: D0 PME-Enable- DSel=0 DScale=2 PME-

I have sil3114 and sil3112 PCI cards and both don't need SError clearing 
to stop raising SATA IRQs.  Masking & acking are enough.  They never 
raise the interrupt again until unmasked.  Which is the correct behavior 
considering the following description about SATA IRQs in the datasheet.

"N – This bit enables an interrupt upon the assertion of the N bit in 
the DIAG field of the SError register"

On this PCMCIA card, SATA IRQ mask doesn't seem to work.  Hardreset 
causes SATA IRQs and thus rescheduling of hotplug event - eventually 
libata gives up on it.  It seems like this PCMCIA controller continues 
to raise SATA IRQ as long as corresponding SError bits are set.  Calling 
ata_bmdma_irq_clear() makes it slow and gives cpu more time to proceed.

Hmmm... On further testing, clearing SError does a much better job.  The 
controller still raises spurious interrupts but only a few times.  Will 
re-spin the patch w/ SError clearing.

-- 
tejun

  reply	other threads:[~2006-06-12  7:42 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-06-12  5:18 [PATCH] sata_sil: update device hotplug handling Tejun Heo
2006-06-12  6:08 ` Jeff Garzik
2006-06-12  7:42   ` Tejun Heo [this message]
2006-06-12  9:45     ` [PATCH] sata_sil: update device hotplug handling, take #2 Tejun Heo
2006-06-12 13:38       ` Jeff Garzik

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=448D1AD7.3000807@gmail.com \
    --to=htejun@gmail.com \
    --cc=jgarzik@pobox.com \
    --cc=linux-ide@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 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.