ata_piix: fix locking around SIDPR access
authorTejun Heo <tj@kernel.org>
Tue, 20 Jul 2010 14:20:01 +0000 (16:20 +0200)
committerGreg Kroah-Hartman <gregkh@suse.de>
Fri, 13 Aug 2010 20:19:30 +0000 (13:19 -0700)
commit876b3a81850fc237f643a065ea78ce2ad7665767
tree1e9ab464a7a51f857218775592552ff38c72f81b
parente8abf660c9744247c6d542070a50835adae399df
ata_piix: fix locking around SIDPR access

commit 213373cf974fe69e78ec894b07f45ae2f5a3a078 upstream.

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>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/ata/ata_piix.c