[RFT][PATCHSET] hotplug polling

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello, all.

This is the first take of hotplug polling patchset.  As the name
implies, this patchset implements hotplug by polling.

libata core layer implements hp-poll infrastructure.  It interacts
with LLDs with three callbacks - hp_poll_activate(),
hp_poll_deactivate() and hp_poll().  libata core layer is responsible
for activating and deactivating at the right time, invoking the poll
callback periodically while activated, and generate hotplug event when
poll callback indicates something has happened.

hp-poll is used for the following cases.

* To detect hotplug events on frozen ports after reset fails such that
  replacing or replugging the failing device make libata automatically
  retry the port.

* To detect hotplug events on LLDs without hotplug interrupt.

The following drivers are converted to use hp-poll on failed ports.

* ahci
* sata_nv (nf2 and ck804 only) [untested]
* sata_sil
* sata_sil24

The following drivers are converted to use hp-poll for hotplug

* sata_nv (generic) [untested]
* sata_sis [untested]
* sata_svw [untested]
* sata_uli [untested]
* sata_via
* sata_vsc [untested]

There are three variants of sata_std_poll() - regular, port-exclusive
and host_set-exclusive.  port-exclusive skips polling if command is in
progress to the port.  host_set-exclusive skips polling if one or more
commands are in progress to any port in the host_set.  This is because
some controllers lock up if SCR regs are accessed while command is in
progress.

Well, the port-exclusive case is dumb but understandable; however,
sata_via (vt8237) takes it to the next level and may lock up if any
available port in the host_set is active when a SCR reg is accessed,
so it needs host_set-exclusive version.  It took me two days of
boredom to figure out that things can be made THAT dumb.  Their new
AHCI controller also seems to require host_set-wide EH ops to recover
from errors.  Well, I guess they consider requiring host_set-wide ops
a feature or something.  :-( Note that this means that the current
libata EH may lock up the whole machine on vt8237 if EH occurs at a
bad time.

Currently, all 'untested' LLDs are using the regular version and some
of them might need to use a dumber version.  So, we need some testing
here.

This patchset is against

  upstream (2154cfa6ba560401d25f6cc083fe3fb996cbb571)
  + add-ap-pflags [1]
  + fix-ehc_i_action-setting-in-ata_eh_autopsy [2]
  + cosmetic-replace-ap_lock [3]
  + new PM patchset [4]

This patchset is also available in the following git tree.

  http://htj.dyndns.org/git/?p=libata-tj.git;a=shortlog;h=hp-poll
  git://htj.dyndns.org/libata-tj hp-poll

Thanks.

--
tejun

[1] http://article.gmane.org/gmane.linux.ide/11717
[2] http://article.gmane.org/gmane.linux.ide/11801
[3] http://article.gmane.org/gmane.linux.ide/11802
[4] http://article.gmane.org/gmane.linux.ide/11816


-
: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Filesystems]     [Linux SCSI]     [Linux RAID]     [Git]     [Kernel Newbies]     [Linux Newbie]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Samba]     [Device Mapper]

  Powered by Linux