ata_piix: fix locking around SIDPR access
authorTejun Heo <tj@kernel.org>
Tue, 20 Jul 2010 14:20:01 +0000 (16:20 +0200)
committerJeff Garzik <jgarzik@redhat.com>
Sun, 1 Aug 2010 23:46:39 +0000 (19:46 -0400)
commit213373cf974fe69e78ec894b07f45ae2f5a3a078
tree9e25256c54df4dfe7664e7bd6c45b55f99cfea66
parent4d1f9082251a835ea387b47bb9dd26980bf8e0d0
ata_piix: fix locking around SIDPR access

SIDPR window registers are shared across ports and as each access is
done in two steps, accesses to different ports under EH may race.
This primarily is caused by incorrect host locking in EH context and
should be fixed by defining locking requirements for each EH operation
which can be used during EH and enforcing them but for now work around
the problem by adding a dedicated SIDPR lock and grabbing it for each
SIDPR access.

Signed-off-by: Tejun Heo <tj@kernel.org>
Reported-by: Mark Knecht <markknecht@gmail.com>
Reported-by: Paul Check <paul@thechecks.ca>
Cc: stable@kernel.org
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
drivers/ata/ata_piix.c