Searched hist:b302545744c031eae04a43fb1c56cc17e00a193a (Results 1 – 1 of 1) sorted by relevance
/openbmc/linux/drivers/block/ |
H A D | swim3.c | diff b302545744c031eae04a43fb1c56cc17e00a193a Mon Dec 12 05:42:12 CST 2011 Benjamin Herrenschmidt <benh@kernel.crashing.org> block/swim3: Locking fixes
The old PowerMac swim3 driver has some "interesting" locking issues, using a private lock and failing to lock the queue before completing requests, which triggered WARN_ONs among others.
This rips out the private lock, makes everything operate under the block queue lock, and generally makes things simpler.
We used to also share a queue between the two possible instances which was problematic since we might pick the wrong controller in some cases, so make the queue and the current request per-instance and use queuedata to point to our private data which is a lot cleaner.
We still share the queue lock but then, it's nearly impossible to actually use 2 swim3's simultaneously: one would need to have a Wallstreet PowerBook, the only machine afaik with two of these on the motherboard, and populate both hotswap bays with a floppy drive (the machine ships only with one), so nobody cares...
While at it, add a little fix to clear up stale interrupts when loading the driver or plugging a floppy drive in a bay.
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: Jens Axboe <axboe@kernel.dk>
|