linux-ide.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jeff Garzik <jeff@garzik.org>
To: Tejun Heo <htejun@gmail.com>
Cc: alan@lxorguk.ukuu.org.uk, linux-ide@vger.kernel.org
Subject: Re: Polling (was Re: [PATCHSET 2/2] implement PMP support, take 6)
Date: Fri, 28 Sep 2007 09:54:39 -0400	[thread overview]
Message-ID: <46FD079F.3010007@garzik.org> (raw)
In-Reply-To: <46FA1B4E.8090103@gmail.com>

Tejun Heo wrote:
> Jeff Garzik wrote:
> [--snip--]
>> There, even the concept of "port" is fluid, and the libata EH model of
>> freezing and thawing a port (with the desired irq-off result) just
>> doesn't fit the hardware.
> 
> Well, the current model was developed while struggling with the first
> generation PMP hardware which had a lot of quirks.  More focus was on
> making the system run and keeping it that way.  Anyways, now that the
> quirks are better understood, I think we can make PMP register access
> irq-driven safely.
> 
> [--snip--]
>> As such, polling is simply an outmoded concept.  It does not make sense
>> on new hardware, and forcing design decisions down that path only lead
>> to a cascade of similar design decisions -- pmp_read polling being just
>> one example of such a result.
> 
> For pmp read/write, I agree that IRQ driven access would be better but
> even for fairly advanced controllers like ahci or sil24, I think
> resetting-by-polling is a good idea.

Not for SAS/SATA controllers.  These SAS+SATA controllers allow you set 
a bit initiating phy reset, and then receive an interrupt when something 
interesting happens.

The reason why I (we?) am just finding out about this is:  both 
drivers/scsi/libsas and drivers/scsi/ipr are still using the old-EH :(

But overall, anything sufficiently "high level" is not friendly to 
polling -- if a polling model is even possible.


>> Just like the Linux kernel MM platform API presents 3 levels of page
>> table entries, even when the hardware may only have 2, libata high level
>> API _must_ be implemented as 100% asynchronous event driven API.
> 
> Or allow both?
> 
>> If the default implementation chooses to use polling -- i.e. all SFF

Note the line quoted above, immediately following your response...  such 
a setup does permit both:  an asynchronous submit/complete API can be 
implementing under the hood via polling or irq, as the driver chooses.

The main point is to not /require/ polling.


>> controllers -- that's fine.  But in the new SAS/SATA world its clear
>> that we have far too many polling-related assumptions as it is.
>>
>> Polling just flat out doesn't make sense on modern SAS/SATA -- and even
>> a couple modern SATA controllers.  On such controllers, we are notified
>> immediately via interrupt even in the event of errors.
> 
> For SAS, I don't have any strong opinion.  For SATA, I think we
> definitely need to allow or even prefer polling for host port resets.
> 
> Is this NACK on the patchset or can we update PMP access later?

Sorry, yes, it is a NAK:  polling should not be requirement.

I considered making multi-protocol ->qc_issue() a requirement too, but 
that seemed like it might delay things too much.  But consider this a 
strong to-do item...  ->pmp_read and ->pmp_write hooks should be folded 
into ->qc_issue and ata_qc_complete(), because quite often a PMP 
read/write packet can be delivered just like any other packet.  We want 
a single "submit packet to hardware" interface, not multiple ones.

	Jeff




  parent reply	other threads:[~2007-09-28 13:54 UTC|newest]

Thread overview: 52+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-09-23  4:19 [PATCHSET 2/2] implement PMP support, take 6 Tejun Heo
2007-09-23  4:19 ` [PATCH 01/10] libata-pmp: update ata_eh_reset() for PMP Tejun Heo
2007-09-23  4:19 ` [PATCH 04/10] libata-pmp: extend ACPI support to cover PMP Tejun Heo
2007-09-23  4:19 ` [PATCH 03/10] libata-pmp: hook PMP support and enable it Tejun Heo
2007-09-23  4:19 ` [PATCH 02/10] libata-pmp: implement Port Multiplier support Tejun Heo
2007-09-23  4:19 ` [PATCH 06/10] sata_sil24: implement PMP support Tejun Heo
2007-09-23  4:19 ` [PATCH 07/10] sata_sil24: implement PORT_RST Tejun Heo
2007-09-23  4:19 ` [PATCH 05/10] libata-pmp: implement qc_defer for command switching PMP support Tejun Heo
2007-09-23  4:19 ` [PATCH 08/10] ahci: implement " Tejun Heo
2007-09-23  4:19 ` [PATCH 09/10] ahci: move host flags over to pi.private_data Tejun Heo
2007-09-23  4:19 ` [PATCH 10/10] ahci: implement AHCI_HFLAG_NO_PMP Tejun Heo
2007-09-26  2:09 ` Polling (was Re: [PATCHSET 2/2] implement PMP support, take 6) Jeff Garzik
2007-09-26  2:12   ` Jeff Garzik
2007-09-26  8:41   ` Tejun Heo
2007-09-28 12:10     ` Tejun Heo
2007-09-28 13:54     ` Jeff Garzik [this message]
2007-09-28 14:18       ` Tejun Heo
2007-09-28 14:57         ` Alan Cox
2007-09-28 15:20           ` Jeff Garzik
2007-09-28 15:43             ` Alan Cox
2007-09-28 15:40               ` Jeff Garzik
2007-09-28 20:00                 ` Mark Lord
2007-09-29  1:49                   ` Jeff Garzik
2007-09-29  3:29                   ` Jeff Garzik
2007-09-29  4:58                     ` Andrew Morton
2007-09-29  5:09                       ` Jeff Garzik
2007-09-29 16:51                     ` Greg Freemyer
2007-09-29 20:56                     ` Alan Cox
2007-10-01 12:28                       ` Jeff Garzik
2007-09-28 15:22         ` Jeff Garzik
2007-09-28 16:48           ` Tejun Heo
2007-09-28 20:02             ` Mark Lord
2007-09-28 20:25               ` Bartlomiej Zolnierkiewicz
2007-09-28 21:03               ` Alan Cox
2007-09-29  1:43                 ` Jeff Garzik
2007-09-29  5:24                   ` Tejun Heo
2007-10-01 13:31                     ` Jeff Garzik
2007-10-02  0:11                       ` Tejun Heo
2007-10-02 14:25                       ` Alan Cox
2007-10-02 14:30                         ` Jeff Garzik
2007-09-29 12:32                   ` Mark Lord
2007-10-01 12:38                     ` Jeff Garzik
2007-10-02  0:12                       ` Tejun Heo
2007-10-02 12:56                         ` Jeff Garzik
2007-10-02 13:06                           ` Mark Lord
2007-10-02 13:30                             ` Jeff Garzik
2007-10-06 22:02                               ` Tejun Heo
2007-10-09  2:09                                 ` Jeff Garzik
2007-10-09  6:54                                   ` Tejun Heo
2007-09-28 14:20   ` Mark Lord
2007-09-28 15:36     ` Jeff Garzik
2007-09-28 15:55       ` Alan Cox

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=46FD079F.3010007@garzik.org \
    --to=jeff@garzik.org \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=htejun@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).