All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jeff Garzik <jgarzik@pobox.com>
To: Andy Warner <andyw@pobox.com>
Cc: Bartlomiej Zolnierkiewicz <B.Zolnierkiewicz@elka.pw.edu.pl>,
	linux-ide@vger.kernel.org
Subject: Re: libata oops 2.6.11-rc4 yesterdays BK
Date: Thu, 17 Feb 2005 14:13:45 -0500	[thread overview]
Message-ID: <4214ECE9.7070502@pobox.com> (raw)
In-Reply-To: <20050217085934.M10699@florence.linkmargin.com>

Andy Warner wrote:
> Jeff Garzik wrote:
> 
>>[...]
>>I'm starting to wonder if polling isn't just a dismal failure on SATA, 
>>since the status register/etc. is all emulated.  Thinking further along 
>>those lines (how an ATA shadow register set is faked by the host 
>>controller using FIS data), I wonder if polling -- per ATA spec -- 
>>exposes a race between FIS reception and processing, and the update of 
>>the ATA shadow register block.
> 
> 
> Quite possibly - though the register set has been fake one way or
> another most of the time. This time it's a different fake, with two
> vendors getting to put the bits back together in a different order

heh


> instead of one vendor's firmware team. The second generation
> controllers mostly seem to support/require using DMA to accomplish
> the operations named "PIO *" in the ATA/ATAPI spec. This will be
> a good thing(tm). I'm still trying to wrap my brain around what
> (if any) changes this will impose on libata - my hunch is that
> we will require a set of pio_xxx methods in ata_port_operations
> with suitable defaults that fall back to the tf_load/tf_read
> methods currently specified.

You are behind the times ;-)

Both you and a hardware vendor I just spoke with both seem to have 
missed that ahci.c already does a couple key things:

* all operations, including PIO data xfer and SRST, must be accomplished 
via DMA.  (ata_adma in libata-dev is similar)

* zero access to the taskfile registers.  100% FIS-based.

The SiI 311x supports "virtual DMA", which is PIO via DMA, but it's not 
useful as implemented:  311x requires a separate DMA transaction for 
_each_ DRQ block, AFAICS.

AHCI is the first scenario where PIO-via-DMA could be utilized in an 
efficient manner.  The upcoming SiI 3124 is another.  A few others 
(ADMA, Marvell) are PIO-via-DMA controllers as well.  I agree this is a 
good thing.


> Obviously, there will still be millions of first generation
> SATA controllers roaming the earth, and for stuff like SMART
> we need to make it play nicely with the other children. Damn.

hehe :)

Anyway, getting back to the thread of "problems with PIO polling", I am 
wondering if -- due to SATA's nature -- PIO polling should be avoided, 
and interrupt-driven methodology used instead.

One reason why PIO polling was chosen (for controllers that support it; 
AHCI does not) is that the entire command submission/processing code can 
be written inline:  just submit-command, wait-for-busy-clear, etc. 
Makes the code less complex.

	Jeff



  reply	other threads:[~2005-02-17 19:14 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-02-16  4:28 libata oops 2.6.11-rc4 yesterdays BK Brad Campbell
2005-02-16 11:01 ` Brad Campbell
2005-02-16 17:25   ` Jeff Garzik
2005-02-16 20:54     ` Brad Campbell
2005-02-16 21:40       ` Andy Warner
2005-02-16 22:47         ` Jeff Garzik
2005-02-16 23:49           ` Andy Warner
2005-02-16 23:58             ` Jeff Garzik
2005-02-17  0:20               ` Andy Warner
2005-02-17  5:08                 ` Jeff Garzik
2005-02-17 14:59                   ` Andy Warner
2005-02-17 19:13                     ` Jeff Garzik [this message]
2005-02-17 19:25                       ` Andy Warner
2005-02-17 22:36                         ` Jeff Garzik
2005-02-17 19:42                       ` Which SATA Combos To Consider? Danny Cox
2005-02-17 20:55                         ` Jeff Garzik
2005-02-18  0:25                         ` Ryan Bourgeois
2005-02-18  0:44                           ` Johny Ågotnes
2005-02-18  0:52                             ` Jeff Garzik
2005-02-21 23:50                               ` Johny Ågotnes
2005-02-21 23:50                               ` Johny Ågotnes
2005-02-22  1:55                                 ` Johny Ågotnes
2005-02-18  6:13         ` libata oops 2.6.11-rc4 yesterdays BK Brad Campbell
2005-02-19  4:14           ` Brad Campbell
2005-02-21  4:27             ` Brad Campbell
2005-02-22 10:09               ` Brad Campbell

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=4214ECE9.7070502@pobox.com \
    --to=jgarzik@pobox.com \
    --cc=B.Zolnierkiewicz@elka.pw.edu.pl \
    --cc=andyw@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.