[PATCHSET] libata: implement presence detection using polling IDENTIFY for ata_piix

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

 



Hello, all.

I've been thinking about device misdetection and phantom device
problems on piix for some time now.  Various controllers show
different behaviors and even chips sharing the same PCI ID act
differently.  Some of the symptoms are intermittent making it
difficult to debug.

In addition, a few days ago, there was a new bug report from
a.bono@xxxxxxxxx saying ICH4-M showed phantom device problem.  That's
an old old IDE controller which must have worked well for a very long
time.

I think that it's just best to do what IDE and old libata used to do -
ignore PCS (other than turning on enable bits) and honor reset
signature and TF r/w test while using polling PIO for IDENTIFY and
detect phantom devices.  This formula had been working for years and
there is no good reason to cause more pain to ICH users, which are a
LOT, to find reliable non-polling device detection mechanism, which
might not even exist.

So, this patchset.  It implements device detection via polling
IDENTIFY.  When no device present, !BSY && !DRQ status is seen while
trying to read the IDENTIFY block.  If a LLD specifies
ATA_FLAG_DETECT_POLLING, IDENTIFY command is issued using polling PIO
and the HSM marks AC_ERR_NODEV_HINT if !BSY && !DRQ is met.  Then the
probing logic marks the device non-existent silently and continues
probing.

This patchset contains 6 patches.

#01-03	: prep for ATA_FLAG_DETECT_POLLING implementation
#04	: implement ATA_DETECT_POLLING
#05	: apply ATA_DETECT_POLLING to ata_piix
#06	: kill unnecessary parts from ata_piix

This patchset is against

  upstream (2d2744fc8be620a2dc469cf48349e3e704119f1b)

This patchset collides with the following patch.

  [1] implement-ATA_FLAG_SETXFER_POLLING-and-use-it-in-pata_via

I'll reimplement the above patch to not impact qc_issue fast path and
thus can be put off.

Please test this patchset.  If you don't feel comfortable with handling
patch series, this patchset is also available as...

* Git tree

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

* Kernel source tarball

  http://htj.dyndns.org/linux-libata-dev-upstream-DETECT_POLLING.tar.bz2

Thanks.

-- 
tejun

[1] http://article.gmane.org/gmane.linux.ide/13248


-
To unsubscribe from this list: 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