All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jeff Garzik <jgarzik@pobox.com>
To: Tejun Heo <htejun@gmail.com>
Cc: alan@lxorguk.ukuu.org.uk, lkml@rtr.ca, axboe@suse.de,
	forrest.zhao@intel.com, linux-ide@vger.kernel.org
Subject: Re: [PATCH 1/3] libata: implement hotplug by polling
Date: Wed, 19 Jul 2006 16:57:32 -0400	[thread overview]
Message-ID: <44BE9CBC.2000601@pobox.com> (raw)
In-Reply-To: <11531196481023-git-send-email-htejun@gmail.com>

Tejun Heo wrote:
> This patch implements hotplug by polling - hp-poll.  It is used for
> 
> * hotplug event detection on controllers which don't provide PHY
>   status changed interrupt.
> 
> * hotplug event detection on disabled ports after reset failure.
>   libata used to leave such ports in frozen state to protect the
>   system from malfunctioning controller/device.  With hp-poll, hotplug
>   events no such ports are watched safely by polling, such that
>   removing/replacing the malfunctioning device triggers EH retry on
>   the port.
> 
> There are three port ops for hp-poll - hp_poll_activate, hp_poll,
> hp_poll_deactivate.  Only hp_poll is mandatory for hp-poll to work.
> This patch also implements SATA standard polling callbacks which poll
> SError.N/X bits - sata_std_hp_poll_activate() and sata_std_hp_poll().
> 
> By default, hp-poll is enabled only on disabled ports.  If a LLD
> doesn't support hotplug interrupts but can poll for hotplug events, it
> should indicate it by setting ATA_FLAG_HP_POLLING which tells libata
> to turn on hp-poll by default.
> 
> Putting port into any static powersave mode or setting
> libata.hotplug_polling_interval to zero disables hp-poll.
> 
> Signed-off-by: Tejun Heo <htejun@gmail.com>

NAK, there is no reason why a global poll list is needed.  Simply having 
a struct workqueue in each schedule-able entity implicitly creates such 
a list.  But regardless, this is another example of adding 
cross-controller synchronization, where none is needed.

If the worker fired per-host_set, then you could use an ata_port dynamic 
flag to indicate the poll-active ports, for the ata_hp_poll_worker() loop.

If the worker fires per-port, then no loop or mutex is needed at all. 
You could simply call the hp_poll hook.


> @@ -633,6 +637,10 @@ struct ata_port_operations {
>  	void (*error_handler) (struct ata_port *ap);
>  	void (*post_internal_cmd) (struct ata_queued_cmd *qc);
>  
> +	void (*hp_poll_activate) (struct ata_port *ap);
> +	void (*hp_poll_deactivate) (struct ata_port *ap);
> +	int (*hp_poll) (struct ata_port *ap);
> +
>  	irqreturn_t (*irq_handler)(int, void *, struct pt_regs *);
>  	void (*irq_clear) (struct ata_port *);
>  

All new hooks require at least a one-two sentence description in the 
DocBook docs, telling driver writers how to use them.

	Jeff



  reply	other threads:[~2006-07-19 20:57 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-07-17  7:00 [RFT][PATCHSET] hotplug polling, take 3 Tejun Heo
2006-07-17  7:00 ` [PATCH 1/3] libata: implement hotplug by polling Tejun Heo
2006-07-19 20:57   ` Jeff Garzik [this message]
2006-07-24  7:06     ` Tejun Heo
2006-07-17  7:00 ` [PATCH 3/3] libata: add hp-poll support to controllers without hotplug interrupts Tejun Heo
2006-07-19 20:57   ` Jeff Garzik
2006-07-17  7:00 ` [PATCH 2/3] libata: add hp-poll support to controllers with hotplug interrutps Tejun Heo
  -- strict thread matches above, loose matches on Subject: below --
2007-04-25  6:25 [PATCH 0/3] hotplug polling, respin Robin H. Johnson
2007-04-25  6:28 ` [PATCH 1/3] libata: implement hotplug by polling Robin H. Johnson
2006-10-15 22:37 [PATCHSET] hotplug polling, take 5 Tejun Heo
2006-10-15 22:37 ` [PATCH 1/3] libata: implement hotplug by polling Tejun Heo
2006-10-10  5:36 [PATCHSET] hotplug polling, take 4 Tejun Heo
2006-10-10  5:36 ` [PATCH 1/3] libata: implement hotplug by polling Tejun Heo
2006-07-05  6:06 [RFT][PATCHSET] hotplug polling, take 2 Tejun Heo
2006-07-05  6:06 ` [PATCH 1/3] libata: implement hotplug by polling Tejun Heo
2006-07-04 14:16 [RFT][PATCHSET] hotplug polling Tejun Heo
2006-07-04 14:16 ` [PATCH 1/3] libata: implement hotplug by polling Tejun Heo

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=44BE9CBC.2000601@pobox.com \
    --to=jgarzik@pobox.com \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=axboe@suse.de \
    --cc=forrest.zhao@intel.com \
    --cc=htejun@gmail.com \
    --cc=linux-ide@vger.kernel.org \
    --cc=lkml@rtr.ca \
    /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.