android_kernel_xiaomi_sm8350/drivers/block
Stephen M. Cameron a6528d0172 cciss: fix hard reset code.
cciss: Fix hard reset code.
Smart Array controllers newer than the P600 do not honor the
PCI power state method of resetting the controllers.  Instead,
in these cases we can get them to reset via the "doorbell" register.

This escaped notice until we began using "performant" mode because
the fact that the controllers did not reset did not normally
impede subsequent operation, and so things generally appeared to
"work".  Once the performant mode code was added, if the controller
does not reset, it remains in performant mode.  The code immediately
after the reset presumes the controller is in "simple" mode
(which previously, it had remained in simple mode the whole time).
If the controller remains in performant mode any code which presumes
it is in simple mode will not work.  So the reset needs to be fixed.

Unfortunately there are some controllers which cannot be reset by
either method. (eg. p800).  We detect these cases by noticing that
the controller seems to remain in performant mode even after a
reset has been attempted.  In those cases we ignore the controller,
as any commands outstanding on it will result in stale completions.
To sum up, we try to do a better job of resetting the controller if
"reset_devices" is set, and if it doesn't work, we ignore that
controller.

Signed-off-by: Stephen M. Cameron <scameron@beardog.cce.hp.com>
Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
2010-08-07 18:52:30 +02:00
..
aoe block: push down BKL into .open and .release 2010-08-07 18:25:34 +02:00
drbd block: push down BKL into .open and .release 2010-08-07 18:25:34 +02:00
paride block: push down BKL into .open and .release 2010-08-07 18:25:34 +02:00
amiflop.c block: push down BKL into .open and .release 2010-08-07 18:25:34 +02:00
ataflop.c block: push down BKL into .open and .release 2010-08-07 18:25:34 +02:00
brd.c block: push down BKL into .locked_ioctl 2010-08-07 18:25:00 +02:00
cciss_cmd.h cciss: fix hard reset code. 2010-08-07 18:52:30 +02:00
cciss_scsi.c cciss: Set the performant mode bit in the scsi half of the driver 2010-08-07 18:52:10 +02:00
cciss_scsi.h cciss: remove C99-style comments 2010-02-22 13:44:45 +01:00
cciss.c cciss: fix hard reset code. 2010-08-07 18:52:30 +02:00
cciss.h cciss: factor out cciss_reset_devices() 2010-08-07 18:52:12 +02:00
cpqarray.c block: push down BKL into .open and .release 2010-08-07 18:25:34 +02:00
cpqarray.h
cryptoloop.c
DAC960.c block: push down BKL into .open and .release 2010-08-07 18:25:34 +02:00
DAC960.h
floppy.c block: push down BKL into .open and .release 2010-08-07 18:25:34 +02:00
hd.c block: remove wrappers for request type/flags 2010-08-07 18:17:56 +02:00
ida_cmd.h
ida_ioctl.h
Kconfig paride: fix menu indentation 2010-05-11 09:02:55 +02:00
loop.c block: push down BKL into .open and .release 2010-08-07 18:25:34 +02:00
Makefile The DRBD driver 2009-10-01 21:17:49 +02:00
mg_disk.c block: remove wrappers for request type/flags 2010-08-07 18:17:56 +02:00
nbd.c block: push down BKL into .locked_ioctl 2010-08-07 18:25:00 +02:00
osdblk.c block: remove q->prepare_flush_fn completely 2010-08-07 18:24:15 +02:00
pktcdvd.c block: push down BKL into .open and .release 2010-08-07 18:25:34 +02:00
ps3disk.c block: remove q->prepare_flush_fn completely 2010-08-07 18:24:15 +02:00
ps3vram.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
smart1,2.h
sunvdc.c block: Consolidate phys_segment and hw_segment limits 2010-02-26 13:58:08 +01:00
swim3.c block: push down BKL into .open and .release 2010-08-07 18:25:34 +02:00
swim_asm.S
swim.c block: push down BKL into .open and .release 2010-08-07 18:25:34 +02:00
sx8.c block: Consolidate phys_segment and hw_segment limits 2010-02-26 13:58:08 +01:00
ub.c block: push down BKL into .open and .release 2010-08-07 18:25:34 +02:00
umem.c block: unify flags for struct bio and struct request 2010-08-07 18:20:39 +02:00
umem.h
viodasd.c block: push down BKL into .open and .release 2010-08-07 18:25:34 +02:00
virtio_blk.c block: push down BKL into .locked_ioctl 2010-08-07 18:25:00 +02:00
xd.c block: push down BKL into .locked_ioctl 2010-08-07 18:25:00 +02:00
xd.h
xen-blkfront.c blkfront: Klog the unclean release path 2010-08-07 18:51:21 +02:00
xsysace.c block: push down BKL into .open and .release 2010-08-07 18:25:34 +02:00
z2ram.c block: push down BKL into .open and .release 2010-08-07 18:25:34 +02:00