All of lore.kernel.org
 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 07/10] sata_sil24: implement PORT_RST Tejun Heo
2007-09-23  4:19 ` [PATCH 08/10] ahci: implement PMP support 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 05/10] libata-pmp: implement qc_defer for command switching PMP support Tejun Heo
2007-09-23  4:19 ` [PATCH 06/10] sata_sil24: implement " Tejun Heo
2007-09-23  4:19 ` [PATCH 02/10] libata-pmp: implement Port Multiplier support 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 10/10] ahci: implement AHCI_HFLAG_NO_PMP Tejun Heo
2007-09-23  4:19 ` [PATCH 09/10] ahci: move host flags over to pi.private_data 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 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.