Gabriel Krisman Bertazi 2c5d16d6a9 sd: Clear PS bit before Mode Select.
According to SPC-4, in a Mode Select, the PS bit in Mode Pages is
reserved and must be set to 0 by the driver.  In the sd implementation,
function cache_type_store does a Mode Sense, which might set the PS bit
on the read buffer, followed by a Mode Select, which receives the same
buffer, without explicitly clearing the PS bit.  So, in cases where
target supports saving the Mode Page to a non-volatile location, we end
up doing a Mode Select with the PS bit set, which could cause an illegal
request error if the target is checking this.

This was observed on a new firmware change, which was subsequently
reverted, but this changes sd.c to be more compliant with SPC-4.

This patch clears the PS bit in the buffer returned by Mode Select,
right before it is used in the Mode Select command.

Signed-off-by: Gabriel Krisman Bertazi <krisman@linux.vnet.ibm.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2015-11-11 21:10:26 -05:00
..
2015-09-08 14:35:59 -07:00
2015-02-11 10:28:45 -08:00
2015-09-11 18:15:18 -07:00
2015-11-11 21:01:15 -05:00
2015-09-02 12:22:54 -07:00
2015-11-09 11:07:16 -05:00
2015-06-19 16:57:51 -07:00
2015-04-27 10:10:19 -07:00
2015-04-27 10:04:39 -07:00
2015-04-27 10:04:39 -07:00
2015-04-27 10:05:55 -07:00
2015-04-27 10:05:55 -07:00
2015-04-17 10:13:56 -07:00
2014-11-20 09:11:11 +01:00
2015-07-31 13:31:10 +02:00
2014-07-17 22:07:37 +02:00
2014-11-20 09:11:10 +01:00
2014-11-20 09:11:10 +01:00
2014-11-24 16:13:16 +01:00
2014-11-20 09:11:10 +01:00
2013-04-09 14:13:16 -04:00
2013-04-09 14:13:16 -04:00
2015-11-09 12:39:28 -05:00
2015-11-09 12:39:28 -05:00
2015-11-09 19:32:41 -05:00
2015-06-02 17:24:54 -07:00
2013-04-09 14:13:27 -04:00
2013-04-09 14:13:15 -04:00
2014-07-17 22:07:35 +02:00
2014-11-24 20:01:28 +01:00
2014-11-20 09:11:10 +01:00
2014-11-20 09:11:10 +01:00
2015-08-28 13:14:57 -07:00
2015-09-02 12:22:54 -07:00
2015-04-16 10:37:12 -07:00
2015-11-11 21:10:26 -05:00
2014-11-12 11:15:57 +01:00
2015-01-09 15:44:19 +01:00
2014-07-17 22:07:39 +02:00
2014-11-24 20:01:28 +01:00
2014-11-12 11:15:57 +01:00
2015-08-26 07:45:25 -07:00
2015-06-02 08:03:25 -07:00
2014-11-20 09:11:15 +01:00
2014-11-20 09:11:10 +01:00
2014-11-20 09:11:10 +01:00
2015-07-23 13:07:04 -07:00
2013-04-09 14:13:15 -04:00