From: Sergei Shtylyov <sshtylyov@ru.mvista.com>
To: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Cc: linux-ide@vger.kernel.org
Subject: Re: [PATCH] pdc202xx_old: fix resetproc() method
Date: Wed, 03 Jun 2009 21:58:43 +0400 [thread overview]
Message-ID: <4A26B9D3.90508@ru.mvista.com> (raw)
In-Reply-To: <200905311658.45703.bzolnier@gmail.com>
Hello.
Bartlomiej Zolnierkiewicz wrote:
>>pdc202xx_reset() calls pdc202xx_reset_host() twice, for both channels, while
>>that function actually twiddles the single, shared software reset bit -- the
>>net effect is a duplicated reset and horrendous 4 second delay happening not
>>only on a channel reset but also when dma_lost_irq() and dma_clear() methods
>>are called. Fold pdc202xx_reset_host() into pdc202xx_reset(), fix printk(),
>>and move it before the actual reset...
>>Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
>>---
>>The patch is against the ide-2.6.git master branch...
>>Bart, I know you have the docs... from the now removed source code I was able
>>to figure out that the bit in question most probably drives RST- signal on both
>>channels (it seems to require re-tuning drives on both channels which we are
>>currently not doing). If I'm right, why the hell we're twiddling it on a normal
>>SRST reset, and what's worse on an interrupt timeout conditions? Anyway, it's
> Unfortunately the documentation doesn't say anything more than that the changing
> of the bit value results in SRST on both channels...
I find it somewhat hard to believe that this bit controls SRST bits in
the device control registers -- we have them both under our control anyway,
why would we need such a "shortcut". I'd rather believe that this bit
controls RESET- signal on both channels, with the neigboring bit 3 setting
it to tristate mode the same way as it works on HPT37x (where BTW the
datasheets call RESET- "SRST_") -- all this probably having to do with the
hotswap support (busproc() method that manipulated bit 3 was removed from
that driver by me 3 years ago)...
> IIRC from some old discussions this is required by the chipset sometimes..
If that bit indeed controls SRST bits, I don't see how setting it in
resetproc() helps (it can only harm, unwittingly resetting another channel).
If this bit controls RESET-, I again don't see how/why it helps to
hard-reset the channels in addition to the soft reset just performed. When
pdc202xx_reset() is called as the dma_clear() method, the channel is
probably going be reset soon due to BSY=1, and when pdc202xx_reset() is
called from dma_lost_irq() method, it seems a clear overkill...
>>hardly a good idea to reset both channels when you only have problem with only
>>one of them, and I don't see any justification to doing that... So maybe this
>>patch should've actually wiped out that whole reset insanity for good?..
> I'm pretty sure that there are valid reasons behind some of this insanity,
> OTOH (per mail from Alan) it completely ignores the fact that the other port
> may be active..
> We may try removing it in incremental patch so it is easier to track/revert
> it if things go wrong..
OK, sounds like a plan...
MBR, Sergei
next prev parent reply other threads:[~2009-06-03 17:57 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-05-29 20:07 [PATCH] pdc202xx_old: fix resetproc() method Sergei Shtylyov
2009-05-29 21:41 ` Alan Cox
2009-05-31 14:58 ` Bartlomiej Zolnierkiewicz
2009-06-03 17:58 ` Sergei Shtylyov [this message]
2009-06-07 11:43 ` Bartlomiej Zolnierkiewicz
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=4A26B9D3.90508@ru.mvista.com \
--to=sshtylyov@ru.mvista.com \
--cc=bzolnier@gmail.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 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).