]> Git Repo - linux.git/blob - drivers/scsi/sd.c
ethtool: Veto some operations during firmware flashing process
[linux.git] / drivers / scsi / sd.c
1 // SPDX-License-Identifier: GPL-2.0-only
2 /*
3  *      sd.c Copyright (C) 1992 Drew Eckhardt
4  *           Copyright (C) 1993, 1994, 1995, 1999 Eric Youngdale
5  *
6  *      Linux scsi disk driver
7  *              Initial versions: Drew Eckhardt
8  *              Subsequent revisions: Eric Youngdale
9  *      Modification history:
10  *       - Drew Eckhardt <[email protected]> original
11  *       - Eric Youngdale <[email protected]> add scatter-gather, multiple 
12  *         outstanding request, and other enhancements.
13  *         Support loadable low-level scsi drivers.
14  *       - Jirka Hanika <[email protected]> support more scsi disks using 
15  *         eight major numbers.
16  *       - Richard Gooch <[email protected]> support devfs.
17  *       - Torben Mathiasen <[email protected]> Resource allocation fixes in 
18  *         sd_init and cleanups.
19  *       - Alex Davis <[email protected]> Fix problem where partition info
20  *         not being read in sd_open. Fix problem where removable media 
21  *         could be ejected after sd_open.
22  *       - Douglas Gilbert <[email protected]> cleanup for lk 2.5.x
23  *       - Badari Pulavarty <[email protected]>, Matthew Wilcox 
24  *         <[email protected]>, Kurt Garloff <[email protected]>: 
25  *         Support 32k/1M disks.
26  *
27  *      Logging policy (needs CONFIG_SCSI_LOGGING defined):
28  *       - setting up transfer: SCSI_LOG_HLQUEUE levels 1 and 2
29  *       - end of transfer (bh + scsi_lib): SCSI_LOG_HLCOMPLETE level 1
30  *       - entering sd_ioctl: SCSI_LOG_IOCTL level 1
31  *       - entering other commands: SCSI_LOG_HLQUEUE level 3
32  *      Note: when the logging level is set by the user, it must be greater
33  *      than the level indicated above to trigger output.       
34  */
35
36 #include <linux/module.h>
37 #include <linux/fs.h>
38 #include <linux/kernel.h>
39 #include <linux/mm.h>
40 #include <linux/bio.h>
41 #include <linux/hdreg.h>
42 #include <linux/errno.h>
43 #include <linux/idr.h>
44 #include <linux/interrupt.h>
45 #include <linux/init.h>
46 #include <linux/blkdev.h>
47 #include <linux/blkpg.h>
48 #include <linux/blk-pm.h>
49 #include <linux/delay.h>
50 #include <linux/rw_hint.h>
51 #include <linux/major.h>
52 #include <linux/mutex.h>
53 #include <linux/string_helpers.h>
54 #include <linux/slab.h>
55 #include <linux/sed-opal.h>
56 #include <linux/pm_runtime.h>
57 #include <linux/pr.h>
58 #include <linux/t10-pi.h>
59 #include <linux/uaccess.h>
60 #include <asm/unaligned.h>
61
62 #include <scsi/scsi.h>
63 #include <scsi/scsi_cmnd.h>
64 #include <scsi/scsi_dbg.h>
65 #include <scsi/scsi_device.h>
66 #include <scsi/scsi_devinfo.h>
67 #include <scsi/scsi_driver.h>
68 #include <scsi/scsi_eh.h>
69 #include <scsi/scsi_host.h>
70 #include <scsi/scsi_ioctl.h>
71 #include <scsi/scsicam.h>
72 #include <scsi/scsi_common.h>
73
74 #include "sd.h"
75 #include "scsi_priv.h"
76 #include "scsi_logging.h"
77
78 MODULE_AUTHOR("Eric Youngdale");
79 MODULE_DESCRIPTION("SCSI disk (sd) driver");
80 MODULE_LICENSE("GPL");
81
82 MODULE_ALIAS_BLOCKDEV_MAJOR(SCSI_DISK0_MAJOR);
83 MODULE_ALIAS_BLOCKDEV_MAJOR(SCSI_DISK1_MAJOR);
84 MODULE_ALIAS_BLOCKDEV_MAJOR(SCSI_DISK2_MAJOR);
85 MODULE_ALIAS_BLOCKDEV_MAJOR(SCSI_DISK3_MAJOR);
86 MODULE_ALIAS_BLOCKDEV_MAJOR(SCSI_DISK4_MAJOR);
87 MODULE_ALIAS_BLOCKDEV_MAJOR(SCSI_DISK5_MAJOR);
88 MODULE_ALIAS_BLOCKDEV_MAJOR(SCSI_DISK6_MAJOR);
89 MODULE_ALIAS_BLOCKDEV_MAJOR(SCSI_DISK7_MAJOR);
90 MODULE_ALIAS_BLOCKDEV_MAJOR(SCSI_DISK8_MAJOR);
91 MODULE_ALIAS_BLOCKDEV_MAJOR(SCSI_DISK9_MAJOR);
92 MODULE_ALIAS_BLOCKDEV_MAJOR(SCSI_DISK10_MAJOR);
93 MODULE_ALIAS_BLOCKDEV_MAJOR(SCSI_DISK11_MAJOR);
94 MODULE_ALIAS_BLOCKDEV_MAJOR(SCSI_DISK12_MAJOR);
95 MODULE_ALIAS_BLOCKDEV_MAJOR(SCSI_DISK13_MAJOR);
96 MODULE_ALIAS_BLOCKDEV_MAJOR(SCSI_DISK14_MAJOR);
97 MODULE_ALIAS_BLOCKDEV_MAJOR(SCSI_DISK15_MAJOR);
98 MODULE_ALIAS_SCSI_DEVICE(TYPE_DISK);
99 MODULE_ALIAS_SCSI_DEVICE(TYPE_MOD);
100 MODULE_ALIAS_SCSI_DEVICE(TYPE_RBC);
101 MODULE_ALIAS_SCSI_DEVICE(TYPE_ZBC);
102
103 #define SD_MINORS       16
104
105 static void sd_config_discard(struct scsi_disk *, unsigned int);
106 static void sd_config_write_same(struct scsi_disk *);
107 static int  sd_revalidate_disk(struct gendisk *);
108 static void sd_unlock_native_capacity(struct gendisk *disk);
109 static void sd_shutdown(struct device *);
110 static void sd_read_capacity(struct scsi_disk *sdkp, unsigned char *buffer);
111 static void scsi_disk_release(struct device *cdev);
112
113 static DEFINE_IDA(sd_index_ida);
114
115 static mempool_t *sd_page_pool;
116 static struct lock_class_key sd_bio_compl_lkclass;
117
118 static const char *sd_cache_types[] = {
119         "write through", "none", "write back",
120         "write back, no read (daft)"
121 };
122
123 static void sd_set_flush_flag(struct scsi_disk *sdkp)
124 {
125         bool wc = false, fua = false;
126
127         if (sdkp->WCE) {
128                 wc = true;
129                 if (sdkp->DPOFUA)
130                         fua = true;
131         }
132
133         blk_queue_write_cache(sdkp->disk->queue, wc, fua);
134 }
135
136 static ssize_t
137 cache_type_store(struct device *dev, struct device_attribute *attr,
138                  const char *buf, size_t count)
139 {
140         int ct, rcd, wce, sp;
141         struct scsi_disk *sdkp = to_scsi_disk(dev);
142         struct scsi_device *sdp = sdkp->device;
143         char buffer[64];
144         char *buffer_data;
145         struct scsi_mode_data data;
146         struct scsi_sense_hdr sshdr;
147         static const char temp[] = "temporary ";
148         int len, ret;
149
150         if (sdp->type != TYPE_DISK && sdp->type != TYPE_ZBC)
151                 /* no cache control on RBC devices; theoretically they
152                  * can do it, but there's probably so many exceptions
153                  * it's not worth the risk */
154                 return -EINVAL;
155
156         if (strncmp(buf, temp, sizeof(temp) - 1) == 0) {
157                 buf += sizeof(temp) - 1;
158                 sdkp->cache_override = 1;
159         } else {
160                 sdkp->cache_override = 0;
161         }
162
163         ct = sysfs_match_string(sd_cache_types, buf);
164         if (ct < 0)
165                 return -EINVAL;
166
167         rcd = ct & 0x01 ? 1 : 0;
168         wce = (ct & 0x02) && !sdkp->write_prot ? 1 : 0;
169
170         if (sdkp->cache_override) {
171                 sdkp->WCE = wce;
172                 sdkp->RCD = rcd;
173                 sd_set_flush_flag(sdkp);
174                 return count;
175         }
176
177         if (scsi_mode_sense(sdp, 0x08, 8, 0, buffer, sizeof(buffer), SD_TIMEOUT,
178                             sdkp->max_retries, &data, NULL))
179                 return -EINVAL;
180         len = min_t(size_t, sizeof(buffer), data.length - data.header_length -
181                   data.block_descriptor_length);
182         buffer_data = buffer + data.header_length +
183                 data.block_descriptor_length;
184         buffer_data[2] &= ~0x05;
185         buffer_data[2] |= wce << 2 | rcd;
186         sp = buffer_data[0] & 0x80 ? 1 : 0;
187         buffer_data[0] &= ~0x80;
188
189         /*
190          * Ensure WP, DPOFUA, and RESERVED fields are cleared in
191          * received mode parameter buffer before doing MODE SELECT.
192          */
193         data.device_specific = 0;
194
195         ret = scsi_mode_select(sdp, 1, sp, buffer_data, len, SD_TIMEOUT,
196                                sdkp->max_retries, &data, &sshdr);
197         if (ret) {
198                 if (ret > 0 && scsi_sense_valid(&sshdr))
199                         sd_print_sense_hdr(sdkp, &sshdr);
200                 return -EINVAL;
201         }
202         sd_revalidate_disk(sdkp->disk);
203         return count;
204 }
205
206 static ssize_t
207 manage_start_stop_show(struct device *dev,
208                        struct device_attribute *attr, char *buf)
209 {
210         struct scsi_disk *sdkp = to_scsi_disk(dev);
211         struct scsi_device *sdp = sdkp->device;
212
213         return sysfs_emit(buf, "%u\n",
214                           sdp->manage_system_start_stop &&
215                           sdp->manage_runtime_start_stop &&
216                           sdp->manage_shutdown);
217 }
218 static DEVICE_ATTR_RO(manage_start_stop);
219
220 static ssize_t
221 manage_system_start_stop_show(struct device *dev,
222                               struct device_attribute *attr, char *buf)
223 {
224         struct scsi_disk *sdkp = to_scsi_disk(dev);
225         struct scsi_device *sdp = sdkp->device;
226
227         return sysfs_emit(buf, "%u\n", sdp->manage_system_start_stop);
228 }
229
230 static ssize_t
231 manage_system_start_stop_store(struct device *dev,
232                                struct device_attribute *attr,
233                                const char *buf, size_t count)
234 {
235         struct scsi_disk *sdkp = to_scsi_disk(dev);
236         struct scsi_device *sdp = sdkp->device;
237         bool v;
238
239         if (!capable(CAP_SYS_ADMIN))
240                 return -EACCES;
241
242         if (kstrtobool(buf, &v))
243                 return -EINVAL;
244
245         sdp->manage_system_start_stop = v;
246
247         return count;
248 }
249 static DEVICE_ATTR_RW(manage_system_start_stop);
250
251 static ssize_t
252 manage_runtime_start_stop_show(struct device *dev,
253                                struct device_attribute *attr, char *buf)
254 {
255         struct scsi_disk *sdkp = to_scsi_disk(dev);
256         struct scsi_device *sdp = sdkp->device;
257
258         return sysfs_emit(buf, "%u\n", sdp->manage_runtime_start_stop);
259 }
260
261 static ssize_t
262 manage_runtime_start_stop_store(struct device *dev,
263                                 struct device_attribute *attr,
264                                 const char *buf, size_t count)
265 {
266         struct scsi_disk *sdkp = to_scsi_disk(dev);
267         struct scsi_device *sdp = sdkp->device;
268         bool v;
269
270         if (!capable(CAP_SYS_ADMIN))
271                 return -EACCES;
272
273         if (kstrtobool(buf, &v))
274                 return -EINVAL;
275
276         sdp->manage_runtime_start_stop = v;
277
278         return count;
279 }
280 static DEVICE_ATTR_RW(manage_runtime_start_stop);
281
282 static ssize_t manage_shutdown_show(struct device *dev,
283                                     struct device_attribute *attr, char *buf)
284 {
285         struct scsi_disk *sdkp = to_scsi_disk(dev);
286         struct scsi_device *sdp = sdkp->device;
287
288         return sysfs_emit(buf, "%u\n", sdp->manage_shutdown);
289 }
290
291 static ssize_t manage_shutdown_store(struct device *dev,
292                                      struct device_attribute *attr,
293                                      const char *buf, size_t count)
294 {
295         struct scsi_disk *sdkp = to_scsi_disk(dev);
296         struct scsi_device *sdp = sdkp->device;
297         bool v;
298
299         if (!capable(CAP_SYS_ADMIN))
300                 return -EACCES;
301
302         if (kstrtobool(buf, &v))
303                 return -EINVAL;
304
305         sdp->manage_shutdown = v;
306
307         return count;
308 }
309 static DEVICE_ATTR_RW(manage_shutdown);
310
311 static ssize_t
312 allow_restart_show(struct device *dev, struct device_attribute *attr, char *buf)
313 {
314         struct scsi_disk *sdkp = to_scsi_disk(dev);
315
316         return sprintf(buf, "%u\n", sdkp->device->allow_restart);
317 }
318
319 static ssize_t
320 allow_restart_store(struct device *dev, struct device_attribute *attr,
321                     const char *buf, size_t count)
322 {
323         bool v;
324         struct scsi_disk *sdkp = to_scsi_disk(dev);
325         struct scsi_device *sdp = sdkp->device;
326
327         if (!capable(CAP_SYS_ADMIN))
328                 return -EACCES;
329
330         if (sdp->type != TYPE_DISK && sdp->type != TYPE_ZBC)
331                 return -EINVAL;
332
333         if (kstrtobool(buf, &v))
334                 return -EINVAL;
335
336         sdp->allow_restart = v;
337
338         return count;
339 }
340 static DEVICE_ATTR_RW(allow_restart);
341
342 static ssize_t
343 cache_type_show(struct device *dev, struct device_attribute *attr, char *buf)
344 {
345         struct scsi_disk *sdkp = to_scsi_disk(dev);
346         int ct = sdkp->RCD + 2*sdkp->WCE;
347
348         return sprintf(buf, "%s\n", sd_cache_types[ct]);
349 }
350 static DEVICE_ATTR_RW(cache_type);
351
352 static ssize_t
353 FUA_show(struct device *dev, struct device_attribute *attr, char *buf)
354 {
355         struct scsi_disk *sdkp = to_scsi_disk(dev);
356
357         return sprintf(buf, "%u\n", sdkp->DPOFUA);
358 }
359 static DEVICE_ATTR_RO(FUA);
360
361 static ssize_t
362 protection_type_show(struct device *dev, struct device_attribute *attr,
363                      char *buf)
364 {
365         struct scsi_disk *sdkp = to_scsi_disk(dev);
366
367         return sprintf(buf, "%u\n", sdkp->protection_type);
368 }
369
370 static ssize_t
371 protection_type_store(struct device *dev, struct device_attribute *attr,
372                       const char *buf, size_t count)
373 {
374         struct scsi_disk *sdkp = to_scsi_disk(dev);
375         unsigned int val;
376         int err;
377
378         if (!capable(CAP_SYS_ADMIN))
379                 return -EACCES;
380
381         err = kstrtouint(buf, 10, &val);
382
383         if (err)
384                 return err;
385
386         if (val <= T10_PI_TYPE3_PROTECTION)
387                 sdkp->protection_type = val;
388
389         return count;
390 }
391 static DEVICE_ATTR_RW(protection_type);
392
393 static ssize_t
394 protection_mode_show(struct device *dev, struct device_attribute *attr,
395                      char *buf)
396 {
397         struct scsi_disk *sdkp = to_scsi_disk(dev);
398         struct scsi_device *sdp = sdkp->device;
399         unsigned int dif, dix;
400
401         dif = scsi_host_dif_capable(sdp->host, sdkp->protection_type);
402         dix = scsi_host_dix_capable(sdp->host, sdkp->protection_type);
403
404         if (!dix && scsi_host_dix_capable(sdp->host, T10_PI_TYPE0_PROTECTION)) {
405                 dif = 0;
406                 dix = 1;
407         }
408
409         if (!dif && !dix)
410                 return sprintf(buf, "none\n");
411
412         return sprintf(buf, "%s%u\n", dix ? "dix" : "dif", dif);
413 }
414 static DEVICE_ATTR_RO(protection_mode);
415
416 static ssize_t
417 app_tag_own_show(struct device *dev, struct device_attribute *attr, char *buf)
418 {
419         struct scsi_disk *sdkp = to_scsi_disk(dev);
420
421         return sprintf(buf, "%u\n", sdkp->ATO);
422 }
423 static DEVICE_ATTR_RO(app_tag_own);
424
425 static ssize_t
426 thin_provisioning_show(struct device *dev, struct device_attribute *attr,
427                        char *buf)
428 {
429         struct scsi_disk *sdkp = to_scsi_disk(dev);
430
431         return sprintf(buf, "%u\n", sdkp->lbpme);
432 }
433 static DEVICE_ATTR_RO(thin_provisioning);
434
435 /* sysfs_match_string() requires dense arrays */
436 static const char *lbp_mode[] = {
437         [SD_LBP_FULL]           = "full",
438         [SD_LBP_UNMAP]          = "unmap",
439         [SD_LBP_WS16]           = "writesame_16",
440         [SD_LBP_WS10]           = "writesame_10",
441         [SD_LBP_ZERO]           = "writesame_zero",
442         [SD_LBP_DISABLE]        = "disabled",
443 };
444
445 static ssize_t
446 provisioning_mode_show(struct device *dev, struct device_attribute *attr,
447                        char *buf)
448 {
449         struct scsi_disk *sdkp = to_scsi_disk(dev);
450
451         return sprintf(buf, "%s\n", lbp_mode[sdkp->provisioning_mode]);
452 }
453
454 static ssize_t
455 provisioning_mode_store(struct device *dev, struct device_attribute *attr,
456                         const char *buf, size_t count)
457 {
458         struct scsi_disk *sdkp = to_scsi_disk(dev);
459         struct scsi_device *sdp = sdkp->device;
460         int mode;
461
462         if (!capable(CAP_SYS_ADMIN))
463                 return -EACCES;
464
465         if (sd_is_zoned(sdkp)) {
466                 sd_config_discard(sdkp, SD_LBP_DISABLE);
467                 return count;
468         }
469
470         if (sdp->type != TYPE_DISK)
471                 return -EINVAL;
472
473         mode = sysfs_match_string(lbp_mode, buf);
474         if (mode < 0)
475                 return -EINVAL;
476
477         sd_config_discard(sdkp, mode);
478
479         return count;
480 }
481 static DEVICE_ATTR_RW(provisioning_mode);
482
483 /* sysfs_match_string() requires dense arrays */
484 static const char *zeroing_mode[] = {
485         [SD_ZERO_WRITE]         = "write",
486         [SD_ZERO_WS]            = "writesame",
487         [SD_ZERO_WS16_UNMAP]    = "writesame_16_unmap",
488         [SD_ZERO_WS10_UNMAP]    = "writesame_10_unmap",
489 };
490
491 static ssize_t
492 zeroing_mode_show(struct device *dev, struct device_attribute *attr,
493                   char *buf)
494 {
495         struct scsi_disk *sdkp = to_scsi_disk(dev);
496
497         return sprintf(buf, "%s\n", zeroing_mode[sdkp->zeroing_mode]);
498 }
499
500 static ssize_t
501 zeroing_mode_store(struct device *dev, struct device_attribute *attr,
502                    const char *buf, size_t count)
503 {
504         struct scsi_disk *sdkp = to_scsi_disk(dev);
505         int mode;
506
507         if (!capable(CAP_SYS_ADMIN))
508                 return -EACCES;
509
510         mode = sysfs_match_string(zeroing_mode, buf);
511         if (mode < 0)
512                 return -EINVAL;
513
514         sdkp->zeroing_mode = mode;
515
516         return count;
517 }
518 static DEVICE_ATTR_RW(zeroing_mode);
519
520 static ssize_t
521 max_medium_access_timeouts_show(struct device *dev,
522                                 struct device_attribute *attr, char *buf)
523 {
524         struct scsi_disk *sdkp = to_scsi_disk(dev);
525
526         return sprintf(buf, "%u\n", sdkp->max_medium_access_timeouts);
527 }
528
529 static ssize_t
530 max_medium_access_timeouts_store(struct device *dev,
531                                  struct device_attribute *attr, const char *buf,
532                                  size_t count)
533 {
534         struct scsi_disk *sdkp = to_scsi_disk(dev);
535         int err;
536
537         if (!capable(CAP_SYS_ADMIN))
538                 return -EACCES;
539
540         err = kstrtouint(buf, 10, &sdkp->max_medium_access_timeouts);
541
542         return err ? err : count;
543 }
544 static DEVICE_ATTR_RW(max_medium_access_timeouts);
545
546 static ssize_t
547 max_write_same_blocks_show(struct device *dev, struct device_attribute *attr,
548                            char *buf)
549 {
550         struct scsi_disk *sdkp = to_scsi_disk(dev);
551
552         return sprintf(buf, "%u\n", sdkp->max_ws_blocks);
553 }
554
555 static ssize_t
556 max_write_same_blocks_store(struct device *dev, struct device_attribute *attr,
557                             const char *buf, size_t count)
558 {
559         struct scsi_disk *sdkp = to_scsi_disk(dev);
560         struct scsi_device *sdp = sdkp->device;
561         unsigned long max;
562         int err;
563
564         if (!capable(CAP_SYS_ADMIN))
565                 return -EACCES;
566
567         if (sdp->type != TYPE_DISK && sdp->type != TYPE_ZBC)
568                 return -EINVAL;
569
570         err = kstrtoul(buf, 10, &max);
571
572         if (err)
573                 return err;
574
575         if (max == 0)
576                 sdp->no_write_same = 1;
577         else if (max <= SD_MAX_WS16_BLOCKS) {
578                 sdp->no_write_same = 0;
579                 sdkp->max_ws_blocks = max;
580         }
581
582         sd_config_write_same(sdkp);
583
584         return count;
585 }
586 static DEVICE_ATTR_RW(max_write_same_blocks);
587
588 static ssize_t
589 zoned_cap_show(struct device *dev, struct device_attribute *attr, char *buf)
590 {
591         struct scsi_disk *sdkp = to_scsi_disk(dev);
592
593         if (sdkp->device->type == TYPE_ZBC)
594                 return sprintf(buf, "host-managed\n");
595         if (sdkp->zoned == 1)
596                 return sprintf(buf, "host-aware\n");
597         if (sdkp->zoned == 2)
598                 return sprintf(buf, "drive-managed\n");
599         return sprintf(buf, "none\n");
600 }
601 static DEVICE_ATTR_RO(zoned_cap);
602
603 static ssize_t
604 max_retries_store(struct device *dev, struct device_attribute *attr,
605                   const char *buf, size_t count)
606 {
607         struct scsi_disk *sdkp = to_scsi_disk(dev);
608         struct scsi_device *sdev = sdkp->device;
609         int retries, err;
610
611         err = kstrtoint(buf, 10, &retries);
612         if (err)
613                 return err;
614
615         if (retries == SCSI_CMD_RETRIES_NO_LIMIT || retries <= SD_MAX_RETRIES) {
616                 sdkp->max_retries = retries;
617                 return count;
618         }
619
620         sdev_printk(KERN_ERR, sdev, "max_retries must be between -1 and %d\n",
621                     SD_MAX_RETRIES);
622         return -EINVAL;
623 }
624
625 static ssize_t
626 max_retries_show(struct device *dev, struct device_attribute *attr,
627                  char *buf)
628 {
629         struct scsi_disk *sdkp = to_scsi_disk(dev);
630
631         return sprintf(buf, "%d\n", sdkp->max_retries);
632 }
633
634 static DEVICE_ATTR_RW(max_retries);
635
636 static struct attribute *sd_disk_attrs[] = {
637         &dev_attr_cache_type.attr,
638         &dev_attr_FUA.attr,
639         &dev_attr_allow_restart.attr,
640         &dev_attr_manage_start_stop.attr,
641         &dev_attr_manage_system_start_stop.attr,
642         &dev_attr_manage_runtime_start_stop.attr,
643         &dev_attr_manage_shutdown.attr,
644         &dev_attr_protection_type.attr,
645         &dev_attr_protection_mode.attr,
646         &dev_attr_app_tag_own.attr,
647         &dev_attr_thin_provisioning.attr,
648         &dev_attr_provisioning_mode.attr,
649         &dev_attr_zeroing_mode.attr,
650         &dev_attr_max_write_same_blocks.attr,
651         &dev_attr_max_medium_access_timeouts.attr,
652         &dev_attr_zoned_cap.attr,
653         &dev_attr_max_retries.attr,
654         NULL,
655 };
656 ATTRIBUTE_GROUPS(sd_disk);
657
658 static struct class sd_disk_class = {
659         .name           = "scsi_disk",
660         .dev_release    = scsi_disk_release,
661         .dev_groups     = sd_disk_groups,
662 };
663
664 /*
665  * Don't request a new module, as that could deadlock in multipath
666  * environment.
667  */
668 static void sd_default_probe(dev_t devt)
669 {
670 }
671
672 /*
673  * Device no to disk mapping:
674  * 
675  *       major         disc2     disc  p1
676  *   |............|.............|....|....| <- dev_t
677  *    31        20 19          8 7  4 3  0
678  * 
679  * Inside a major, we have 16k disks, however mapped non-
680  * contiguously. The first 16 disks are for major0, the next
681  * ones with major1, ... Disk 256 is for major0 again, disk 272 
682  * for major1, ... 
683  * As we stay compatible with our numbering scheme, we can reuse 
684  * the well-know SCSI majors 8, 65--71, 136--143.
685  */
686 static int sd_major(int major_idx)
687 {
688         switch (major_idx) {
689         case 0:
690                 return SCSI_DISK0_MAJOR;
691         case 1 ... 7:
692                 return SCSI_DISK1_MAJOR + major_idx - 1;
693         case 8 ... 15:
694                 return SCSI_DISK8_MAJOR + major_idx - 8;
695         default:
696                 BUG();
697                 return 0;       /* shut up gcc */
698         }
699 }
700
701 #ifdef CONFIG_BLK_SED_OPAL
702 static int sd_sec_submit(void *data, u16 spsp, u8 secp, void *buffer,
703                 size_t len, bool send)
704 {
705         struct scsi_disk *sdkp = data;
706         struct scsi_device *sdev = sdkp->device;
707         u8 cdb[12] = { 0, };
708         const struct scsi_exec_args exec_args = {
709                 .req_flags = BLK_MQ_REQ_PM,
710         };
711         int ret;
712
713         cdb[0] = send ? SECURITY_PROTOCOL_OUT : SECURITY_PROTOCOL_IN;
714         cdb[1] = secp;
715         put_unaligned_be16(spsp, &cdb[2]);
716         put_unaligned_be32(len, &cdb[6]);
717
718         ret = scsi_execute_cmd(sdev, cdb, send ? REQ_OP_DRV_OUT : REQ_OP_DRV_IN,
719                                buffer, len, SD_TIMEOUT, sdkp->max_retries,
720                                &exec_args);
721         return ret <= 0 ? ret : -EIO;
722 }
723 #endif /* CONFIG_BLK_SED_OPAL */
724
725 /*
726  * Look up the DIX operation based on whether the command is read or
727  * write and whether dix and dif are enabled.
728  */
729 static unsigned int sd_prot_op(bool write, bool dix, bool dif)
730 {
731         /* Lookup table: bit 2 (write), bit 1 (dix), bit 0 (dif) */
732         static const unsigned int ops[] = {     /* wrt dix dif */
733                 SCSI_PROT_NORMAL,               /*  0   0   0  */
734                 SCSI_PROT_READ_STRIP,           /*  0   0   1  */
735                 SCSI_PROT_READ_INSERT,          /*  0   1   0  */
736                 SCSI_PROT_READ_PASS,            /*  0   1   1  */
737                 SCSI_PROT_NORMAL,               /*  1   0   0  */
738                 SCSI_PROT_WRITE_INSERT,         /*  1   0   1  */
739                 SCSI_PROT_WRITE_STRIP,          /*  1   1   0  */
740                 SCSI_PROT_WRITE_PASS,           /*  1   1   1  */
741         };
742
743         return ops[write << 2 | dix << 1 | dif];
744 }
745
746 /*
747  * Returns a mask of the protection flags that are valid for a given DIX
748  * operation.
749  */
750 static unsigned int sd_prot_flag_mask(unsigned int prot_op)
751 {
752         static const unsigned int flag_mask[] = {
753                 [SCSI_PROT_NORMAL]              = 0,
754
755                 [SCSI_PROT_READ_STRIP]          = SCSI_PROT_TRANSFER_PI |
756                                                   SCSI_PROT_GUARD_CHECK |
757                                                   SCSI_PROT_REF_CHECK |
758                                                   SCSI_PROT_REF_INCREMENT,
759
760                 [SCSI_PROT_READ_INSERT]         = SCSI_PROT_REF_INCREMENT |
761                                                   SCSI_PROT_IP_CHECKSUM,
762
763                 [SCSI_PROT_READ_PASS]           = SCSI_PROT_TRANSFER_PI |
764                                                   SCSI_PROT_GUARD_CHECK |
765                                                   SCSI_PROT_REF_CHECK |
766                                                   SCSI_PROT_REF_INCREMENT |
767                                                   SCSI_PROT_IP_CHECKSUM,
768
769                 [SCSI_PROT_WRITE_INSERT]        = SCSI_PROT_TRANSFER_PI |
770                                                   SCSI_PROT_REF_INCREMENT,
771
772                 [SCSI_PROT_WRITE_STRIP]         = SCSI_PROT_GUARD_CHECK |
773                                                   SCSI_PROT_REF_CHECK |
774                                                   SCSI_PROT_REF_INCREMENT |
775                                                   SCSI_PROT_IP_CHECKSUM,
776
777                 [SCSI_PROT_WRITE_PASS]          = SCSI_PROT_TRANSFER_PI |
778                                                   SCSI_PROT_GUARD_CHECK |
779                                                   SCSI_PROT_REF_CHECK |
780                                                   SCSI_PROT_REF_INCREMENT |
781                                                   SCSI_PROT_IP_CHECKSUM,
782         };
783
784         return flag_mask[prot_op];
785 }
786
787 static unsigned char sd_setup_protect_cmnd(struct scsi_cmnd *scmd,
788                                            unsigned int dix, unsigned int dif)
789 {
790         struct request *rq = scsi_cmd_to_rq(scmd);
791         struct bio *bio = rq->bio;
792         unsigned int prot_op = sd_prot_op(rq_data_dir(rq), dix, dif);
793         unsigned int protect = 0;
794
795         if (dix) {                              /* DIX Type 0, 1, 2, 3 */
796                 if (bio_integrity_flagged(bio, BIP_IP_CHECKSUM))
797                         scmd->prot_flags |= SCSI_PROT_IP_CHECKSUM;
798
799                 if (bio_integrity_flagged(bio, BIP_CTRL_NOCHECK) == false)
800                         scmd->prot_flags |= SCSI_PROT_GUARD_CHECK;
801         }
802
803         if (dif != T10_PI_TYPE3_PROTECTION) {   /* DIX/DIF Type 0, 1, 2 */
804                 scmd->prot_flags |= SCSI_PROT_REF_INCREMENT;
805
806                 if (bio_integrity_flagged(bio, BIP_CTRL_NOCHECK) == false)
807                         scmd->prot_flags |= SCSI_PROT_REF_CHECK;
808         }
809
810         if (dif) {                              /* DIX/DIF Type 1, 2, 3 */
811                 scmd->prot_flags |= SCSI_PROT_TRANSFER_PI;
812
813                 if (bio_integrity_flagged(bio, BIP_DISK_NOCHECK))
814                         protect = 3 << 5;       /* Disable target PI checking */
815                 else
816                         protect = 1 << 5;       /* Enable target PI checking */
817         }
818
819         scsi_set_prot_op(scmd, prot_op);
820         scsi_set_prot_type(scmd, dif);
821         scmd->prot_flags &= sd_prot_flag_mask(prot_op);
822
823         return protect;
824 }
825
826 static void sd_config_discard(struct scsi_disk *sdkp, unsigned int mode)
827 {
828         struct request_queue *q = sdkp->disk->queue;
829         unsigned int logical_block_size = sdkp->device->sector_size;
830         unsigned int max_blocks = 0;
831
832         q->limits.discard_alignment =
833                 sdkp->unmap_alignment * logical_block_size;
834         q->limits.discard_granularity =
835                 max(sdkp->physical_block_size,
836                     sdkp->unmap_granularity * logical_block_size);
837         sdkp->provisioning_mode = mode;
838
839         switch (mode) {
840
841         case SD_LBP_FULL:
842         case SD_LBP_DISABLE:
843                 blk_queue_max_discard_sectors(q, 0);
844                 return;
845
846         case SD_LBP_UNMAP:
847                 max_blocks = min_not_zero(sdkp->max_unmap_blocks,
848                                           (u32)SD_MAX_WS16_BLOCKS);
849                 break;
850
851         case SD_LBP_WS16:
852                 if (sdkp->device->unmap_limit_for_ws)
853                         max_blocks = sdkp->max_unmap_blocks;
854                 else
855                         max_blocks = sdkp->max_ws_blocks;
856
857                 max_blocks = min_not_zero(max_blocks, (u32)SD_MAX_WS16_BLOCKS);
858                 break;
859
860         case SD_LBP_WS10:
861                 if (sdkp->device->unmap_limit_for_ws)
862                         max_blocks = sdkp->max_unmap_blocks;
863                 else
864                         max_blocks = sdkp->max_ws_blocks;
865
866                 max_blocks = min_not_zero(max_blocks, (u32)SD_MAX_WS10_BLOCKS);
867                 break;
868
869         case SD_LBP_ZERO:
870                 max_blocks = min_not_zero(sdkp->max_ws_blocks,
871                                           (u32)SD_MAX_WS10_BLOCKS);
872                 break;
873         }
874
875         blk_queue_max_discard_sectors(q, max_blocks * (logical_block_size >> 9));
876 }
877
878 static void *sd_set_special_bvec(struct request *rq, unsigned int data_len)
879 {
880         struct page *page;
881
882         page = mempool_alloc(sd_page_pool, GFP_ATOMIC);
883         if (!page)
884                 return NULL;
885         clear_highpage(page);
886         bvec_set_page(&rq->special_vec, page, data_len, 0);
887         rq->rq_flags |= RQF_SPECIAL_PAYLOAD;
888         return bvec_virt(&rq->special_vec);
889 }
890
891 static blk_status_t sd_setup_unmap_cmnd(struct scsi_cmnd *cmd)
892 {
893         struct scsi_device *sdp = cmd->device;
894         struct request *rq = scsi_cmd_to_rq(cmd);
895         struct scsi_disk *sdkp = scsi_disk(rq->q->disk);
896         u64 lba = sectors_to_logical(sdp, blk_rq_pos(rq));
897         u32 nr_blocks = sectors_to_logical(sdp, blk_rq_sectors(rq));
898         unsigned int data_len = 24;
899         char *buf;
900
901         buf = sd_set_special_bvec(rq, data_len);
902         if (!buf)
903                 return BLK_STS_RESOURCE;
904
905         cmd->cmd_len = 10;
906         cmd->cmnd[0] = UNMAP;
907         cmd->cmnd[8] = 24;
908
909         put_unaligned_be16(6 + 16, &buf[0]);
910         put_unaligned_be16(16, &buf[2]);
911         put_unaligned_be64(lba, &buf[8]);
912         put_unaligned_be32(nr_blocks, &buf[16]);
913
914         cmd->allowed = sdkp->max_retries;
915         cmd->transfersize = data_len;
916         rq->timeout = SD_TIMEOUT;
917
918         return scsi_alloc_sgtables(cmd);
919 }
920
921 static blk_status_t sd_setup_write_same16_cmnd(struct scsi_cmnd *cmd,
922                 bool unmap)
923 {
924         struct scsi_device *sdp = cmd->device;
925         struct request *rq = scsi_cmd_to_rq(cmd);
926         struct scsi_disk *sdkp = scsi_disk(rq->q->disk);
927         u64 lba = sectors_to_logical(sdp, blk_rq_pos(rq));
928         u32 nr_blocks = sectors_to_logical(sdp, blk_rq_sectors(rq));
929         u32 data_len = sdp->sector_size;
930
931         if (!sd_set_special_bvec(rq, data_len))
932                 return BLK_STS_RESOURCE;
933
934         cmd->cmd_len = 16;
935         cmd->cmnd[0] = WRITE_SAME_16;
936         if (unmap)
937                 cmd->cmnd[1] = 0x8; /* UNMAP */
938         put_unaligned_be64(lba, &cmd->cmnd[2]);
939         put_unaligned_be32(nr_blocks, &cmd->cmnd[10]);
940
941         cmd->allowed = sdkp->max_retries;
942         cmd->transfersize = data_len;
943         rq->timeout = unmap ? SD_TIMEOUT : SD_WRITE_SAME_TIMEOUT;
944
945         return scsi_alloc_sgtables(cmd);
946 }
947
948 static blk_status_t sd_setup_write_same10_cmnd(struct scsi_cmnd *cmd,
949                 bool unmap)
950 {
951         struct scsi_device *sdp = cmd->device;
952         struct request *rq = scsi_cmd_to_rq(cmd);
953         struct scsi_disk *sdkp = scsi_disk(rq->q->disk);
954         u64 lba = sectors_to_logical(sdp, blk_rq_pos(rq));
955         u32 nr_blocks = sectors_to_logical(sdp, blk_rq_sectors(rq));
956         u32 data_len = sdp->sector_size;
957
958         if (!sd_set_special_bvec(rq, data_len))
959                 return BLK_STS_RESOURCE;
960
961         cmd->cmd_len = 10;
962         cmd->cmnd[0] = WRITE_SAME;
963         if (unmap)
964                 cmd->cmnd[1] = 0x8; /* UNMAP */
965         put_unaligned_be32(lba, &cmd->cmnd[2]);
966         put_unaligned_be16(nr_blocks, &cmd->cmnd[7]);
967
968         cmd->allowed = sdkp->max_retries;
969         cmd->transfersize = data_len;
970         rq->timeout = unmap ? SD_TIMEOUT : SD_WRITE_SAME_TIMEOUT;
971
972         return scsi_alloc_sgtables(cmd);
973 }
974
975 static blk_status_t sd_setup_write_zeroes_cmnd(struct scsi_cmnd *cmd)
976 {
977         struct request *rq = scsi_cmd_to_rq(cmd);
978         struct scsi_device *sdp = cmd->device;
979         struct scsi_disk *sdkp = scsi_disk(rq->q->disk);
980         u64 lba = sectors_to_logical(sdp, blk_rq_pos(rq));
981         u32 nr_blocks = sectors_to_logical(sdp, blk_rq_sectors(rq));
982
983         if (!(rq->cmd_flags & REQ_NOUNMAP)) {
984                 switch (sdkp->zeroing_mode) {
985                 case SD_ZERO_WS16_UNMAP:
986                         return sd_setup_write_same16_cmnd(cmd, true);
987                 case SD_ZERO_WS10_UNMAP:
988                         return sd_setup_write_same10_cmnd(cmd, true);
989                 }
990         }
991
992         if (sdp->no_write_same) {
993                 rq->rq_flags |= RQF_QUIET;
994                 return BLK_STS_TARGET;
995         }
996
997         if (sdkp->ws16 || lba > 0xffffffff || nr_blocks > 0xffff)
998                 return sd_setup_write_same16_cmnd(cmd, false);
999
1000         return sd_setup_write_same10_cmnd(cmd, false);
1001 }
1002
1003 static void sd_config_write_same(struct scsi_disk *sdkp)
1004 {
1005         struct request_queue *q = sdkp->disk->queue;
1006         unsigned int logical_block_size = sdkp->device->sector_size;
1007
1008         if (sdkp->device->no_write_same) {
1009                 sdkp->max_ws_blocks = 0;
1010                 goto out;
1011         }
1012
1013         /* Some devices can not handle block counts above 0xffff despite
1014          * supporting WRITE SAME(16). Consequently we default to 64k
1015          * blocks per I/O unless the device explicitly advertises a
1016          * bigger limit.
1017          */
1018         if (sdkp->max_ws_blocks > SD_MAX_WS10_BLOCKS)
1019                 sdkp->max_ws_blocks = min_not_zero(sdkp->max_ws_blocks,
1020                                                    (u32)SD_MAX_WS16_BLOCKS);
1021         else if (sdkp->ws16 || sdkp->ws10 || sdkp->device->no_report_opcodes)
1022                 sdkp->max_ws_blocks = min_not_zero(sdkp->max_ws_blocks,
1023                                                    (u32)SD_MAX_WS10_BLOCKS);
1024         else {
1025                 sdkp->device->no_write_same = 1;
1026                 sdkp->max_ws_blocks = 0;
1027         }
1028
1029         if (sdkp->lbprz && sdkp->lbpws)
1030                 sdkp->zeroing_mode = SD_ZERO_WS16_UNMAP;
1031         else if (sdkp->lbprz && sdkp->lbpws10)
1032                 sdkp->zeroing_mode = SD_ZERO_WS10_UNMAP;
1033         else if (sdkp->max_ws_blocks)
1034                 sdkp->zeroing_mode = SD_ZERO_WS;
1035         else
1036                 sdkp->zeroing_mode = SD_ZERO_WRITE;
1037
1038         if (sdkp->max_ws_blocks &&
1039             sdkp->physical_block_size > logical_block_size) {
1040                 /*
1041                  * Reporting a maximum number of blocks that is not aligned
1042                  * on the device physical size would cause a large write same
1043                  * request to be split into physically unaligned chunks by
1044                  * __blkdev_issue_write_zeroes() even if the caller of this
1045                  * functions took care to align the large request. So make sure
1046                  * the maximum reported is aligned to the device physical block
1047                  * size. This is only an optional optimization for regular
1048                  * disks, but this is mandatory to avoid failure of large write
1049                  * same requests directed at sequential write required zones of
1050                  * host-managed ZBC disks.
1051                  */
1052                 sdkp->max_ws_blocks =
1053                         round_down(sdkp->max_ws_blocks,
1054                                    bytes_to_logical(sdkp->device,
1055                                                     sdkp->physical_block_size));
1056         }
1057
1058 out:
1059         blk_queue_max_write_zeroes_sectors(q, sdkp->max_ws_blocks *
1060                                          (logical_block_size >> 9));
1061 }
1062
1063 static blk_status_t sd_setup_flush_cmnd(struct scsi_cmnd *cmd)
1064 {
1065         struct request *rq = scsi_cmd_to_rq(cmd);
1066         struct scsi_disk *sdkp = scsi_disk(rq->q->disk);
1067
1068         /* flush requests don't perform I/O, zero the S/G table */
1069         memset(&cmd->sdb, 0, sizeof(cmd->sdb));
1070
1071         if (cmd->device->use_16_for_sync) {
1072                 cmd->cmnd[0] = SYNCHRONIZE_CACHE_16;
1073                 cmd->cmd_len = 16;
1074         } else {
1075                 cmd->cmnd[0] = SYNCHRONIZE_CACHE;
1076                 cmd->cmd_len = 10;
1077         }
1078         cmd->transfersize = 0;
1079         cmd->allowed = sdkp->max_retries;
1080
1081         rq->timeout = rq->q->rq_timeout * SD_FLUSH_TIMEOUT_MULTIPLIER;
1082         return BLK_STS_OK;
1083 }
1084
1085 /**
1086  * sd_group_number() - Compute the GROUP NUMBER field
1087  * @cmd: SCSI command for which to compute the value of the six-bit GROUP NUMBER
1088  *      field.
1089  *
1090  * From SBC-5 r05 (https://www.t10.org/cgi-bin/ac.pl?t=f&f=sbc5r05.pdf):
1091  * 0: no relative lifetime.
1092  * 1: shortest relative lifetime.
1093  * 2: second shortest relative lifetime.
1094  * 3 - 0x3d: intermediate relative lifetimes.
1095  * 0x3e: second longest relative lifetime.
1096  * 0x3f: longest relative lifetime.
1097  */
1098 static u8 sd_group_number(struct scsi_cmnd *cmd)
1099 {
1100         const struct request *rq = scsi_cmd_to_rq(cmd);
1101         struct scsi_disk *sdkp = scsi_disk(rq->q->disk);
1102
1103         if (!sdkp->rscs)
1104                 return 0;
1105
1106         return min3((u32)rq->write_hint, (u32)sdkp->permanent_stream_count,
1107                     0x3fu);
1108 }
1109
1110 static blk_status_t sd_setup_rw32_cmnd(struct scsi_cmnd *cmd, bool write,
1111                                        sector_t lba, unsigned int nr_blocks,
1112                                        unsigned char flags, unsigned int dld)
1113 {
1114         cmd->cmd_len = SD_EXT_CDB_SIZE;
1115         cmd->cmnd[0]  = VARIABLE_LENGTH_CMD;
1116         cmd->cmnd[6]  = sd_group_number(cmd);
1117         cmd->cmnd[7]  = 0x18; /* Additional CDB len */
1118         cmd->cmnd[9]  = write ? WRITE_32 : READ_32;
1119         cmd->cmnd[10] = flags;
1120         cmd->cmnd[11] = dld & 0x07;
1121         put_unaligned_be64(lba, &cmd->cmnd[12]);
1122         put_unaligned_be32(lba, &cmd->cmnd[20]); /* Expected Indirect LBA */
1123         put_unaligned_be32(nr_blocks, &cmd->cmnd[28]);
1124
1125         return BLK_STS_OK;
1126 }
1127
1128 static blk_status_t sd_setup_rw16_cmnd(struct scsi_cmnd *cmd, bool write,
1129                                        sector_t lba, unsigned int nr_blocks,
1130                                        unsigned char flags, unsigned int dld)
1131 {
1132         cmd->cmd_len  = 16;
1133         cmd->cmnd[0]  = write ? WRITE_16 : READ_16;
1134         cmd->cmnd[1]  = flags | ((dld >> 2) & 0x01);
1135         cmd->cmnd[14] = ((dld & 0x03) << 6) | sd_group_number(cmd);
1136         cmd->cmnd[15] = 0;
1137         put_unaligned_be64(lba, &cmd->cmnd[2]);
1138         put_unaligned_be32(nr_blocks, &cmd->cmnd[10]);
1139
1140         return BLK_STS_OK;
1141 }
1142
1143 static blk_status_t sd_setup_rw10_cmnd(struct scsi_cmnd *cmd, bool write,
1144                                        sector_t lba, unsigned int nr_blocks,
1145                                        unsigned char flags)
1146 {
1147         cmd->cmd_len = 10;
1148         cmd->cmnd[0] = write ? WRITE_10 : READ_10;
1149         cmd->cmnd[1] = flags;
1150         cmd->cmnd[6] = sd_group_number(cmd);
1151         cmd->cmnd[9] = 0;
1152         put_unaligned_be32(lba, &cmd->cmnd[2]);
1153         put_unaligned_be16(nr_blocks, &cmd->cmnd[7]);
1154
1155         return BLK_STS_OK;
1156 }
1157
1158 static blk_status_t sd_setup_rw6_cmnd(struct scsi_cmnd *cmd, bool write,
1159                                       sector_t lba, unsigned int nr_blocks,
1160                                       unsigned char flags)
1161 {
1162         /* Avoid that 0 blocks gets translated into 256 blocks. */
1163         if (WARN_ON_ONCE(nr_blocks == 0))
1164                 return BLK_STS_IOERR;
1165
1166         if (unlikely(flags & 0x8)) {
1167                 /*
1168                  * This happens only if this drive failed 10byte rw
1169                  * command with ILLEGAL_REQUEST during operation and
1170                  * thus turned off use_10_for_rw.
1171                  */
1172                 scmd_printk(KERN_ERR, cmd, "FUA write on READ/WRITE(6) drive\n");
1173                 return BLK_STS_IOERR;
1174         }
1175
1176         cmd->cmd_len = 6;
1177         cmd->cmnd[0] = write ? WRITE_6 : READ_6;
1178         cmd->cmnd[1] = (lba >> 16) & 0x1f;
1179         cmd->cmnd[2] = (lba >> 8) & 0xff;
1180         cmd->cmnd[3] = lba & 0xff;
1181         cmd->cmnd[4] = nr_blocks;
1182         cmd->cmnd[5] = 0;
1183
1184         return BLK_STS_OK;
1185 }
1186
1187 /*
1188  * Check if a command has a duration limit set. If it does, and the target
1189  * device supports CDL and the feature is enabled, return the limit
1190  * descriptor index to use. Return 0 (no limit) otherwise.
1191  */
1192 static int sd_cdl_dld(struct scsi_disk *sdkp, struct scsi_cmnd *scmd)
1193 {
1194         struct scsi_device *sdp = sdkp->device;
1195         int hint;
1196
1197         if (!sdp->cdl_supported || !sdp->cdl_enable)
1198                 return 0;
1199
1200         /*
1201          * Use "no limit" if the request ioprio does not specify a duration
1202          * limit hint.
1203          */
1204         hint = IOPRIO_PRIO_HINT(req_get_ioprio(scsi_cmd_to_rq(scmd)));
1205         if (hint < IOPRIO_HINT_DEV_DURATION_LIMIT_1 ||
1206             hint > IOPRIO_HINT_DEV_DURATION_LIMIT_7)
1207                 return 0;
1208
1209         return (hint - IOPRIO_HINT_DEV_DURATION_LIMIT_1) + 1;
1210 }
1211
1212 static blk_status_t sd_setup_read_write_cmnd(struct scsi_cmnd *cmd)
1213 {
1214         struct request *rq = scsi_cmd_to_rq(cmd);
1215         struct scsi_device *sdp = cmd->device;
1216         struct scsi_disk *sdkp = scsi_disk(rq->q->disk);
1217         sector_t lba = sectors_to_logical(sdp, blk_rq_pos(rq));
1218         sector_t threshold;
1219         unsigned int nr_blocks = sectors_to_logical(sdp, blk_rq_sectors(rq));
1220         unsigned int mask = logical_to_sectors(sdp, 1) - 1;
1221         bool write = rq_data_dir(rq) == WRITE;
1222         unsigned char protect, fua;
1223         unsigned int dld;
1224         blk_status_t ret;
1225         unsigned int dif;
1226         bool dix;
1227
1228         ret = scsi_alloc_sgtables(cmd);
1229         if (ret != BLK_STS_OK)
1230                 return ret;
1231
1232         ret = BLK_STS_IOERR;
1233         if (!scsi_device_online(sdp) || sdp->changed) {
1234                 scmd_printk(KERN_ERR, cmd, "device offline or changed\n");
1235                 goto fail;
1236         }
1237
1238         if (blk_rq_pos(rq) + blk_rq_sectors(rq) > get_capacity(rq->q->disk)) {
1239                 scmd_printk(KERN_ERR, cmd, "access beyond end of device\n");
1240                 goto fail;
1241         }
1242
1243         if ((blk_rq_pos(rq) & mask) || (blk_rq_sectors(rq) & mask)) {
1244                 scmd_printk(KERN_ERR, cmd, "request not aligned to the logical block size\n");
1245                 goto fail;
1246         }
1247
1248         /*
1249          * Some SD card readers can't handle accesses which touch the
1250          * last one or two logical blocks. Split accesses as needed.
1251          */
1252         threshold = sdkp->capacity - SD_LAST_BUGGY_SECTORS;
1253
1254         if (unlikely(sdp->last_sector_bug && lba + nr_blocks > threshold)) {
1255                 if (lba < threshold) {
1256                         /* Access up to the threshold but not beyond */
1257                         nr_blocks = threshold - lba;
1258                 } else {
1259                         /* Access only a single logical block */
1260                         nr_blocks = 1;
1261                 }
1262         }
1263
1264         fua = rq->cmd_flags & REQ_FUA ? 0x8 : 0;
1265         dix = scsi_prot_sg_count(cmd);
1266         dif = scsi_host_dif_capable(cmd->device->host, sdkp->protection_type);
1267         dld = sd_cdl_dld(sdkp, cmd);
1268
1269         if (dif || dix)
1270                 protect = sd_setup_protect_cmnd(cmd, dix, dif);
1271         else
1272                 protect = 0;
1273
1274         if (protect && sdkp->protection_type == T10_PI_TYPE2_PROTECTION) {
1275                 ret = sd_setup_rw32_cmnd(cmd, write, lba, nr_blocks,
1276                                          protect | fua, dld);
1277         } else if (sdp->use_16_for_rw || (nr_blocks > 0xffff)) {
1278                 ret = sd_setup_rw16_cmnd(cmd, write, lba, nr_blocks,
1279                                          protect | fua, dld);
1280         } else if ((nr_blocks > 0xff) || (lba > 0x1fffff) ||
1281                    sdp->use_10_for_rw || protect || rq->write_hint) {
1282                 ret = sd_setup_rw10_cmnd(cmd, write, lba, nr_blocks,
1283                                          protect | fua);
1284         } else {
1285                 ret = sd_setup_rw6_cmnd(cmd, write, lba, nr_blocks,
1286                                         protect | fua);
1287         }
1288
1289         if (unlikely(ret != BLK_STS_OK))
1290                 goto fail;
1291
1292         /*
1293          * We shouldn't disconnect in the middle of a sector, so with a dumb
1294          * host adapter, it's safe to assume that we can at least transfer
1295          * this many bytes between each connect / disconnect.
1296          */
1297         cmd->transfersize = sdp->sector_size;
1298         cmd->underflow = nr_blocks << 9;
1299         cmd->allowed = sdkp->max_retries;
1300         cmd->sdb.length = nr_blocks * sdp->sector_size;
1301
1302         SCSI_LOG_HLQUEUE(1,
1303                          scmd_printk(KERN_INFO, cmd,
1304                                      "%s: block=%llu, count=%d\n", __func__,
1305                                      (unsigned long long)blk_rq_pos(rq),
1306                                      blk_rq_sectors(rq)));
1307         SCSI_LOG_HLQUEUE(2,
1308                          scmd_printk(KERN_INFO, cmd,
1309                                      "%s %d/%u 512 byte blocks.\n",
1310                                      write ? "writing" : "reading", nr_blocks,
1311                                      blk_rq_sectors(rq)));
1312
1313         /*
1314          * This indicates that the command is ready from our end to be queued.
1315          */
1316         return BLK_STS_OK;
1317 fail:
1318         scsi_free_sgtables(cmd);
1319         return ret;
1320 }
1321
1322 static blk_status_t sd_init_command(struct scsi_cmnd *cmd)
1323 {
1324         struct request *rq = scsi_cmd_to_rq(cmd);
1325
1326         switch (req_op(rq)) {
1327         case REQ_OP_DISCARD:
1328                 switch (scsi_disk(rq->q->disk)->provisioning_mode) {
1329                 case SD_LBP_UNMAP:
1330                         return sd_setup_unmap_cmnd(cmd);
1331                 case SD_LBP_WS16:
1332                         return sd_setup_write_same16_cmnd(cmd, true);
1333                 case SD_LBP_WS10:
1334                         return sd_setup_write_same10_cmnd(cmd, true);
1335                 case SD_LBP_ZERO:
1336                         return sd_setup_write_same10_cmnd(cmd, false);
1337                 default:
1338                         return BLK_STS_TARGET;
1339                 }
1340         case REQ_OP_WRITE_ZEROES:
1341                 return sd_setup_write_zeroes_cmnd(cmd);
1342         case REQ_OP_FLUSH:
1343                 return sd_setup_flush_cmnd(cmd);
1344         case REQ_OP_READ:
1345         case REQ_OP_WRITE:
1346                 return sd_setup_read_write_cmnd(cmd);
1347         case REQ_OP_ZONE_RESET:
1348                 return sd_zbc_setup_zone_mgmt_cmnd(cmd, ZO_RESET_WRITE_POINTER,
1349                                                    false);
1350         case REQ_OP_ZONE_RESET_ALL:
1351                 return sd_zbc_setup_zone_mgmt_cmnd(cmd, ZO_RESET_WRITE_POINTER,
1352                                                    true);
1353         case REQ_OP_ZONE_OPEN:
1354                 return sd_zbc_setup_zone_mgmt_cmnd(cmd, ZO_OPEN_ZONE, false);
1355         case REQ_OP_ZONE_CLOSE:
1356                 return sd_zbc_setup_zone_mgmt_cmnd(cmd, ZO_CLOSE_ZONE, false);
1357         case REQ_OP_ZONE_FINISH:
1358                 return sd_zbc_setup_zone_mgmt_cmnd(cmd, ZO_FINISH_ZONE, false);
1359         default:
1360                 WARN_ON_ONCE(1);
1361                 return BLK_STS_NOTSUPP;
1362         }
1363 }
1364
1365 static void sd_uninit_command(struct scsi_cmnd *SCpnt)
1366 {
1367         struct request *rq = scsi_cmd_to_rq(SCpnt);
1368
1369         if (rq->rq_flags & RQF_SPECIAL_PAYLOAD)
1370                 mempool_free(rq->special_vec.bv_page, sd_page_pool);
1371 }
1372
1373 static bool sd_need_revalidate(struct gendisk *disk, struct scsi_disk *sdkp)
1374 {
1375         if (sdkp->device->removable || sdkp->write_prot) {
1376                 if (disk_check_media_change(disk))
1377                         return true;
1378         }
1379
1380         /*
1381          * Force a full rescan after ioctl(BLKRRPART).  While the disk state has
1382          * nothing to do with partitions, BLKRRPART is used to force a full
1383          * revalidate after things like a format for historical reasons.
1384          */
1385         return test_bit(GD_NEED_PART_SCAN, &disk->state);
1386 }
1387
1388 /**
1389  *      sd_open - open a scsi disk device
1390  *      @disk: disk to open
1391  *      @mode: open mode
1392  *
1393  *      Returns 0 if successful. Returns a negated errno value in case 
1394  *      of error.
1395  *
1396  *      Note: This can be called from a user context (e.g. fsck(1) )
1397  *      or from within the kernel (e.g. as a result of a mount(1) ).
1398  *      In the latter case @inode and @filp carry an abridged amount
1399  *      of information as noted above.
1400  *
1401  *      Locking: called with disk->open_mutex held.
1402  **/
1403 static int sd_open(struct gendisk *disk, blk_mode_t mode)
1404 {
1405         struct scsi_disk *sdkp = scsi_disk(disk);
1406         struct scsi_device *sdev = sdkp->device;
1407         int retval;
1408
1409         if (scsi_device_get(sdev))
1410                 return -ENXIO;
1411
1412         SCSI_LOG_HLQUEUE(3, sd_printk(KERN_INFO, sdkp, "sd_open\n"));
1413
1414         /*
1415          * If the device is in error recovery, wait until it is done.
1416          * If the device is offline, then disallow any access to it.
1417          */
1418         retval = -ENXIO;
1419         if (!scsi_block_when_processing_errors(sdev))
1420                 goto error_out;
1421
1422         if (sd_need_revalidate(disk, sdkp))
1423                 sd_revalidate_disk(disk);
1424
1425         /*
1426          * If the drive is empty, just let the open fail.
1427          */
1428         retval = -ENOMEDIUM;
1429         if (sdev->removable && !sdkp->media_present &&
1430             !(mode & BLK_OPEN_NDELAY))
1431                 goto error_out;
1432
1433         /*
1434          * If the device has the write protect tab set, have the open fail
1435          * if the user expects to be able to write to the thing.
1436          */
1437         retval = -EROFS;
1438         if (sdkp->write_prot && (mode & BLK_OPEN_WRITE))
1439                 goto error_out;
1440
1441         /*
1442          * It is possible that the disk changing stuff resulted in
1443          * the device being taken offline.  If this is the case,
1444          * report this to the user, and don't pretend that the
1445          * open actually succeeded.
1446          */
1447         retval = -ENXIO;
1448         if (!scsi_device_online(sdev))
1449                 goto error_out;
1450
1451         if ((atomic_inc_return(&sdkp->openers) == 1) && sdev->removable) {
1452                 if (scsi_block_when_processing_errors(sdev))
1453                         scsi_set_medium_removal(sdev, SCSI_REMOVAL_PREVENT);
1454         }
1455
1456         return 0;
1457
1458 error_out:
1459         scsi_device_put(sdev);
1460         return retval;  
1461 }
1462
1463 /**
1464  *      sd_release - invoked when the (last) close(2) is called on this
1465  *      scsi disk.
1466  *      @disk: disk to release
1467  *
1468  *      Returns 0. 
1469  *
1470  *      Note: may block (uninterruptible) if error recovery is underway
1471  *      on this disk.
1472  *
1473  *      Locking: called with disk->open_mutex held.
1474  **/
1475 static void sd_release(struct gendisk *disk)
1476 {
1477         struct scsi_disk *sdkp = scsi_disk(disk);
1478         struct scsi_device *sdev = sdkp->device;
1479
1480         SCSI_LOG_HLQUEUE(3, sd_printk(KERN_INFO, sdkp, "sd_release\n"));
1481
1482         if (atomic_dec_return(&sdkp->openers) == 0 && sdev->removable) {
1483                 if (scsi_block_when_processing_errors(sdev))
1484                         scsi_set_medium_removal(sdev, SCSI_REMOVAL_ALLOW);
1485         }
1486
1487         scsi_device_put(sdev);
1488 }
1489
1490 static int sd_getgeo(struct block_device *bdev, struct hd_geometry *geo)
1491 {
1492         struct scsi_disk *sdkp = scsi_disk(bdev->bd_disk);
1493         struct scsi_device *sdp = sdkp->device;
1494         struct Scsi_Host *host = sdp->host;
1495         sector_t capacity = logical_to_sectors(sdp, sdkp->capacity);
1496         int diskinfo[4];
1497
1498         /* default to most commonly used values */
1499         diskinfo[0] = 0x40;     /* 1 << 6 */
1500         diskinfo[1] = 0x20;     /* 1 << 5 */
1501         diskinfo[2] = capacity >> 11;
1502
1503         /* override with calculated, extended default, or driver values */
1504         if (host->hostt->bios_param)
1505                 host->hostt->bios_param(sdp, bdev, capacity, diskinfo);
1506         else
1507                 scsicam_bios_param(bdev, capacity, diskinfo);
1508
1509         geo->heads = diskinfo[0];
1510         geo->sectors = diskinfo[1];
1511         geo->cylinders = diskinfo[2];
1512         return 0;
1513 }
1514
1515 /**
1516  *      sd_ioctl - process an ioctl
1517  *      @bdev: target block device
1518  *      @mode: open mode
1519  *      @cmd: ioctl command number
1520  *      @arg: this is third argument given to ioctl(2) system call.
1521  *      Often contains a pointer.
1522  *
1523  *      Returns 0 if successful (some ioctls return positive numbers on
1524  *      success as well). Returns a negated errno value in case of error.
1525  *
1526  *      Note: most ioctls are forward onto the block subsystem or further
1527  *      down in the scsi subsystem.
1528  **/
1529 static int sd_ioctl(struct block_device *bdev, blk_mode_t mode,
1530                     unsigned int cmd, unsigned long arg)
1531 {
1532         struct gendisk *disk = bdev->bd_disk;
1533         struct scsi_disk *sdkp = scsi_disk(disk);
1534         struct scsi_device *sdp = sdkp->device;
1535         void __user *p = (void __user *)arg;
1536         int error;
1537     
1538         SCSI_LOG_IOCTL(1, sd_printk(KERN_INFO, sdkp, "sd_ioctl: disk=%s, "
1539                                     "cmd=0x%x\n", disk->disk_name, cmd));
1540
1541         if (bdev_is_partition(bdev) && !capable(CAP_SYS_RAWIO))
1542                 return -ENOIOCTLCMD;
1543
1544         /*
1545          * If we are in the middle of error recovery, don't let anyone
1546          * else try and use this device.  Also, if error recovery fails, it
1547          * may try and take the device offline, in which case all further
1548          * access to the device is prohibited.
1549          */
1550         error = scsi_ioctl_block_when_processing_errors(sdp, cmd,
1551                         (mode & BLK_OPEN_NDELAY));
1552         if (error)
1553                 return error;
1554
1555         if (is_sed_ioctl(cmd))
1556                 return sed_ioctl(sdkp->opal_dev, cmd, p);
1557         return scsi_ioctl(sdp, mode & BLK_OPEN_WRITE, cmd, p);
1558 }
1559
1560 static void set_media_not_present(struct scsi_disk *sdkp)
1561 {
1562         if (sdkp->media_present)
1563                 sdkp->device->changed = 1;
1564
1565         if (sdkp->device->removable) {
1566                 sdkp->media_present = 0;
1567                 sdkp->capacity = 0;
1568         }
1569 }
1570
1571 static int media_not_present(struct scsi_disk *sdkp,
1572                              struct scsi_sense_hdr *sshdr)
1573 {
1574         if (!scsi_sense_valid(sshdr))
1575                 return 0;
1576
1577         /* not invoked for commands that could return deferred errors */
1578         switch (sshdr->sense_key) {
1579         case UNIT_ATTENTION:
1580         case NOT_READY:
1581                 /* medium not present */
1582                 if (sshdr->asc == 0x3A) {
1583                         set_media_not_present(sdkp);
1584                         return 1;
1585                 }
1586         }
1587         return 0;
1588 }
1589
1590 /**
1591  *      sd_check_events - check media events
1592  *      @disk: kernel device descriptor
1593  *      @clearing: disk events currently being cleared
1594  *
1595  *      Returns mask of DISK_EVENT_*.
1596  *
1597  *      Note: this function is invoked from the block subsystem.
1598  **/
1599 static unsigned int sd_check_events(struct gendisk *disk, unsigned int clearing)
1600 {
1601         struct scsi_disk *sdkp = disk->private_data;
1602         struct scsi_device *sdp;
1603         int retval;
1604         bool disk_changed;
1605
1606         if (!sdkp)
1607                 return 0;
1608
1609         sdp = sdkp->device;
1610         SCSI_LOG_HLQUEUE(3, sd_printk(KERN_INFO, sdkp, "sd_check_events\n"));
1611
1612         /*
1613          * If the device is offline, don't send any commands - just pretend as
1614          * if the command failed.  If the device ever comes back online, we
1615          * can deal with it then.  It is only because of unrecoverable errors
1616          * that we would ever take a device offline in the first place.
1617          */
1618         if (!scsi_device_online(sdp)) {
1619                 set_media_not_present(sdkp);
1620                 goto out;
1621         }
1622
1623         /*
1624          * Using TEST_UNIT_READY enables differentiation between drive with
1625          * no cartridge loaded - NOT READY, drive with changed cartridge -
1626          * UNIT ATTENTION, or with same cartridge - GOOD STATUS.
1627          *
1628          * Drives that auto spin down. eg iomega jaz 1G, will be started
1629          * by sd_spinup_disk() from sd_revalidate_disk(), which happens whenever
1630          * sd_revalidate() is called.
1631          */
1632         if (scsi_block_when_processing_errors(sdp)) {
1633                 struct scsi_sense_hdr sshdr = { 0, };
1634
1635                 retval = scsi_test_unit_ready(sdp, SD_TIMEOUT, sdkp->max_retries,
1636                                               &sshdr);
1637
1638                 /* failed to execute TUR, assume media not present */
1639                 if (retval < 0 || host_byte(retval)) {
1640                         set_media_not_present(sdkp);
1641                         goto out;
1642                 }
1643
1644                 if (media_not_present(sdkp, &sshdr))
1645                         goto out;
1646         }
1647
1648         /*
1649          * For removable scsi disk we have to recognise the presence
1650          * of a disk in the drive.
1651          */
1652         if (!sdkp->media_present)
1653                 sdp->changed = 1;
1654         sdkp->media_present = 1;
1655 out:
1656         /*
1657          * sdp->changed is set under the following conditions:
1658          *
1659          *      Medium present state has changed in either direction.
1660          *      Device has indicated UNIT_ATTENTION.
1661          */
1662         disk_changed = sdp->changed;
1663         sdp->changed = 0;
1664         return disk_changed ? DISK_EVENT_MEDIA_CHANGE : 0;
1665 }
1666
1667 static int sd_sync_cache(struct scsi_disk *sdkp)
1668 {
1669         int res;
1670         struct scsi_device *sdp = sdkp->device;
1671         const int timeout = sdp->request_queue->rq_timeout
1672                 * SD_FLUSH_TIMEOUT_MULTIPLIER;
1673         /* Leave the rest of the command zero to indicate flush everything. */
1674         const unsigned char cmd[16] = { sdp->use_16_for_sync ?
1675                                 SYNCHRONIZE_CACHE_16 : SYNCHRONIZE_CACHE };
1676         struct scsi_sense_hdr sshdr;
1677         struct scsi_failure failure_defs[] = {
1678                 {
1679                         .allowed = 3,
1680                         .result = SCMD_FAILURE_RESULT_ANY,
1681                 },
1682                 {}
1683         };
1684         struct scsi_failures failures = {
1685                 .failure_definitions = failure_defs,
1686         };
1687         const struct scsi_exec_args exec_args = {
1688                 .req_flags = BLK_MQ_REQ_PM,
1689                 .sshdr = &sshdr,
1690                 .failures = &failures,
1691         };
1692
1693         if (!scsi_device_online(sdp))
1694                 return -ENODEV;
1695
1696         res = scsi_execute_cmd(sdp, cmd, REQ_OP_DRV_IN, NULL, 0, timeout,
1697                                sdkp->max_retries, &exec_args);
1698         if (res) {
1699                 sd_print_result(sdkp, "Synchronize Cache(10) failed", res);
1700
1701                 if (res < 0)
1702                         return res;
1703
1704                 if (scsi_status_is_check_condition(res) &&
1705                     scsi_sense_valid(&sshdr)) {
1706                         sd_print_sense_hdr(sdkp, &sshdr);
1707
1708                         /* we need to evaluate the error return  */
1709                         if (sshdr.asc == 0x3a ||        /* medium not present */
1710                             sshdr.asc == 0x20 ||        /* invalid command */
1711                             (sshdr.asc == 0x74 && sshdr.ascq == 0x71))  /* drive is password locked */
1712                                 /* this is no error here */
1713                                 return 0;
1714                         /*
1715                          * This drive doesn't support sync and there's not much
1716                          * we can do because this is called during shutdown
1717                          * or suspend so just return success so those operations
1718                          * can proceed.
1719                          */
1720                         if (sshdr.sense_key == ILLEGAL_REQUEST)
1721                                 return 0;
1722                 }
1723
1724                 switch (host_byte(res)) {
1725                 /* ignore errors due to racing a disconnection */
1726                 case DID_BAD_TARGET:
1727                 case DID_NO_CONNECT:
1728                         return 0;
1729                 /* signal the upper layer it might try again */
1730                 case DID_BUS_BUSY:
1731                 case DID_IMM_RETRY:
1732                 case DID_REQUEUE:
1733                 case DID_SOFT_ERROR:
1734                         return -EBUSY;
1735                 default:
1736                         return -EIO;
1737                 }
1738         }
1739         return 0;
1740 }
1741
1742 static void sd_rescan(struct device *dev)
1743 {
1744         struct scsi_disk *sdkp = dev_get_drvdata(dev);
1745
1746         sd_revalidate_disk(sdkp->disk);
1747 }
1748
1749 static int sd_get_unique_id(struct gendisk *disk, u8 id[16],
1750                 enum blk_unique_id type)
1751 {
1752         struct scsi_device *sdev = scsi_disk(disk)->device;
1753         const struct scsi_vpd *vpd;
1754         const unsigned char *d;
1755         int ret = -ENXIO, len;
1756
1757         rcu_read_lock();
1758         vpd = rcu_dereference(sdev->vpd_pg83);
1759         if (!vpd)
1760                 goto out_unlock;
1761
1762         ret = -EINVAL;
1763         for (d = vpd->data + 4; d < vpd->data + vpd->len; d += d[3] + 4) {
1764                 /* we only care about designators with LU association */
1765                 if (((d[1] >> 4) & 0x3) != 0x00)
1766                         continue;
1767                 if ((d[1] & 0xf) != type)
1768                         continue;
1769
1770                 /*
1771                  * Only exit early if a 16-byte descriptor was found.  Otherwise
1772                  * keep looking as one with more entropy might still show up.
1773                  */
1774                 len = d[3];
1775                 if (len != 8 && len != 12 && len != 16)
1776                         continue;
1777                 ret = len;
1778                 memcpy(id, d + 4, len);
1779                 if (len == 16)
1780                         break;
1781         }
1782 out_unlock:
1783         rcu_read_unlock();
1784         return ret;
1785 }
1786
1787 static int sd_scsi_to_pr_err(struct scsi_sense_hdr *sshdr, int result)
1788 {
1789         switch (host_byte(result)) {
1790         case DID_TRANSPORT_MARGINAL:
1791         case DID_TRANSPORT_DISRUPTED:
1792         case DID_BUS_BUSY:
1793                 return PR_STS_RETRY_PATH_FAILURE;
1794         case DID_NO_CONNECT:
1795                 return PR_STS_PATH_FAILED;
1796         case DID_TRANSPORT_FAILFAST:
1797                 return PR_STS_PATH_FAST_FAILED;
1798         }
1799
1800         switch (status_byte(result)) {
1801         case SAM_STAT_RESERVATION_CONFLICT:
1802                 return PR_STS_RESERVATION_CONFLICT;
1803         case SAM_STAT_CHECK_CONDITION:
1804                 if (!scsi_sense_valid(sshdr))
1805                         return PR_STS_IOERR;
1806
1807                 if (sshdr->sense_key == ILLEGAL_REQUEST &&
1808                     (sshdr->asc == 0x26 || sshdr->asc == 0x24))
1809                         return -EINVAL;
1810
1811                 fallthrough;
1812         default:
1813                 return PR_STS_IOERR;
1814         }
1815 }
1816
1817 static int sd_pr_in_command(struct block_device *bdev, u8 sa,
1818                             unsigned char *data, int data_len)
1819 {
1820         struct scsi_disk *sdkp = scsi_disk(bdev->bd_disk);
1821         struct scsi_device *sdev = sdkp->device;
1822         struct scsi_sense_hdr sshdr;
1823         u8 cmd[10] = { PERSISTENT_RESERVE_IN, sa };
1824         struct scsi_failure failure_defs[] = {
1825                 {
1826                         .sense = UNIT_ATTENTION,
1827                         .asc = SCMD_FAILURE_ASC_ANY,
1828                         .ascq = SCMD_FAILURE_ASCQ_ANY,
1829                         .allowed = 5,
1830                         .result = SAM_STAT_CHECK_CONDITION,
1831                 },
1832                 {}
1833         };
1834         struct scsi_failures failures = {
1835                 .failure_definitions = failure_defs,
1836         };
1837         const struct scsi_exec_args exec_args = {
1838                 .sshdr = &sshdr,
1839                 .failures = &failures,
1840         };
1841         int result;
1842
1843         put_unaligned_be16(data_len, &cmd[7]);
1844
1845         result = scsi_execute_cmd(sdev, cmd, REQ_OP_DRV_IN, data, data_len,
1846                                   SD_TIMEOUT, sdkp->max_retries, &exec_args);
1847         if (scsi_status_is_check_condition(result) &&
1848             scsi_sense_valid(&sshdr)) {
1849                 sdev_printk(KERN_INFO, sdev, "PR command failed: %d\n", result);
1850                 scsi_print_sense_hdr(sdev, NULL, &sshdr);
1851         }
1852
1853         if (result <= 0)
1854                 return result;
1855
1856         return sd_scsi_to_pr_err(&sshdr, result);
1857 }
1858
1859 static int sd_pr_read_keys(struct block_device *bdev, struct pr_keys *keys_info)
1860 {
1861         int result, i, data_offset, num_copy_keys;
1862         u32 num_keys = keys_info->num_keys;
1863         int data_len = num_keys * 8 + 8;
1864         u8 *data;
1865
1866         data = kzalloc(data_len, GFP_KERNEL);
1867         if (!data)
1868                 return -ENOMEM;
1869
1870         result = sd_pr_in_command(bdev, READ_KEYS, data, data_len);
1871         if (result)
1872                 goto free_data;
1873
1874         keys_info->generation = get_unaligned_be32(&data[0]);
1875         keys_info->num_keys = get_unaligned_be32(&data[4]) / 8;
1876
1877         data_offset = 8;
1878         num_copy_keys = min(num_keys, keys_info->num_keys);
1879
1880         for (i = 0; i < num_copy_keys; i++) {
1881                 keys_info->keys[i] = get_unaligned_be64(&data[data_offset]);
1882                 data_offset += 8;
1883         }
1884
1885 free_data:
1886         kfree(data);
1887         return result;
1888 }
1889
1890 static int sd_pr_read_reservation(struct block_device *bdev,
1891                                   struct pr_held_reservation *rsv)
1892 {
1893         struct scsi_disk *sdkp = scsi_disk(bdev->bd_disk);
1894         struct scsi_device *sdev = sdkp->device;
1895         u8 data[24] = { };
1896         int result, len;
1897
1898         result = sd_pr_in_command(bdev, READ_RESERVATION, data, sizeof(data));
1899         if (result)
1900                 return result;
1901
1902         len = get_unaligned_be32(&data[4]);
1903         if (!len)
1904                 return 0;
1905
1906         /* Make sure we have at least the key and type */
1907         if (len < 14) {
1908                 sdev_printk(KERN_INFO, sdev,
1909                             "READ RESERVATION failed due to short return buffer of %d bytes\n",
1910                             len);
1911                 return -EINVAL;
1912         }
1913
1914         rsv->generation = get_unaligned_be32(&data[0]);
1915         rsv->key = get_unaligned_be64(&data[8]);
1916         rsv->type = scsi_pr_type_to_block(data[21] & 0x0f);
1917         return 0;
1918 }
1919
1920 static int sd_pr_out_command(struct block_device *bdev, u8 sa, u64 key,
1921                              u64 sa_key, enum scsi_pr_type type, u8 flags)
1922 {
1923         struct scsi_disk *sdkp = scsi_disk(bdev->bd_disk);
1924         struct scsi_device *sdev = sdkp->device;
1925         struct scsi_sense_hdr sshdr;
1926         struct scsi_failure failure_defs[] = {
1927                 {
1928                         .sense = UNIT_ATTENTION,
1929                         .asc = SCMD_FAILURE_ASC_ANY,
1930                         .ascq = SCMD_FAILURE_ASCQ_ANY,
1931                         .allowed = 5,
1932                         .result = SAM_STAT_CHECK_CONDITION,
1933                 },
1934                 {}
1935         };
1936         struct scsi_failures failures = {
1937                 .failure_definitions = failure_defs,
1938         };
1939         const struct scsi_exec_args exec_args = {
1940                 .sshdr = &sshdr,
1941                 .failures = &failures,
1942         };
1943         int result;
1944         u8 cmd[16] = { 0, };
1945         u8 data[24] = { 0, };
1946
1947         cmd[0] = PERSISTENT_RESERVE_OUT;
1948         cmd[1] = sa;
1949         cmd[2] = type;
1950         put_unaligned_be32(sizeof(data), &cmd[5]);
1951
1952         put_unaligned_be64(key, &data[0]);
1953         put_unaligned_be64(sa_key, &data[8]);
1954         data[20] = flags;
1955
1956         result = scsi_execute_cmd(sdev, cmd, REQ_OP_DRV_OUT, &data,
1957                                   sizeof(data), SD_TIMEOUT, sdkp->max_retries,
1958                                   &exec_args);
1959
1960         if (scsi_status_is_check_condition(result) &&
1961             scsi_sense_valid(&sshdr)) {
1962                 sdev_printk(KERN_INFO, sdev, "PR command failed: %d\n", result);
1963                 scsi_print_sense_hdr(sdev, NULL, &sshdr);
1964         }
1965
1966         if (result <= 0)
1967                 return result;
1968
1969         return sd_scsi_to_pr_err(&sshdr, result);
1970 }
1971
1972 static int sd_pr_register(struct block_device *bdev, u64 old_key, u64 new_key,
1973                 u32 flags)
1974 {
1975         if (flags & ~PR_FL_IGNORE_KEY)
1976                 return -EOPNOTSUPP;
1977         return sd_pr_out_command(bdev, (flags & PR_FL_IGNORE_KEY) ? 0x06 : 0x00,
1978                         old_key, new_key, 0,
1979                         (1 << 0) /* APTPL */);
1980 }
1981
1982 static int sd_pr_reserve(struct block_device *bdev, u64 key, enum pr_type type,
1983                 u32 flags)
1984 {
1985         if (flags)
1986                 return -EOPNOTSUPP;
1987         return sd_pr_out_command(bdev, 0x01, key, 0,
1988                                  block_pr_type_to_scsi(type), 0);
1989 }
1990
1991 static int sd_pr_release(struct block_device *bdev, u64 key, enum pr_type type)
1992 {
1993         return sd_pr_out_command(bdev, 0x02, key, 0,
1994                                  block_pr_type_to_scsi(type), 0);
1995 }
1996
1997 static int sd_pr_preempt(struct block_device *bdev, u64 old_key, u64 new_key,
1998                 enum pr_type type, bool abort)
1999 {
2000         return sd_pr_out_command(bdev, abort ? 0x05 : 0x04, old_key, new_key,
2001                                  block_pr_type_to_scsi(type), 0);
2002 }
2003
2004 static int sd_pr_clear(struct block_device *bdev, u64 key)
2005 {
2006         return sd_pr_out_command(bdev, 0x03, key, 0, 0, 0);
2007 }
2008
2009 static const struct pr_ops sd_pr_ops = {
2010         .pr_register    = sd_pr_register,
2011         .pr_reserve     = sd_pr_reserve,
2012         .pr_release     = sd_pr_release,
2013         .pr_preempt     = sd_pr_preempt,
2014         .pr_clear       = sd_pr_clear,
2015         .pr_read_keys   = sd_pr_read_keys,
2016         .pr_read_reservation = sd_pr_read_reservation,
2017 };
2018
2019 static void scsi_disk_free_disk(struct gendisk *disk)
2020 {
2021         struct scsi_disk *sdkp = scsi_disk(disk);
2022
2023         put_device(&sdkp->disk_dev);
2024 }
2025
2026 static const struct block_device_operations sd_fops = {
2027         .owner                  = THIS_MODULE,
2028         .open                   = sd_open,
2029         .release                = sd_release,
2030         .ioctl                  = sd_ioctl,
2031         .getgeo                 = sd_getgeo,
2032         .compat_ioctl           = blkdev_compat_ptr_ioctl,
2033         .check_events           = sd_check_events,
2034         .unlock_native_capacity = sd_unlock_native_capacity,
2035         .report_zones           = sd_zbc_report_zones,
2036         .get_unique_id          = sd_get_unique_id,
2037         .free_disk              = scsi_disk_free_disk,
2038         .pr_ops                 = &sd_pr_ops,
2039 };
2040
2041 /**
2042  *      sd_eh_reset - reset error handling callback
2043  *      @scmd:          sd-issued command that has failed
2044  *
2045  *      This function is called by the SCSI midlayer before starting
2046  *      SCSI EH. When counting medium access failures we have to be
2047  *      careful to register it only only once per device and SCSI EH run;
2048  *      there might be several timed out commands which will cause the
2049  *      'max_medium_access_timeouts' counter to trigger after the first
2050  *      SCSI EH run already and set the device to offline.
2051  *      So this function resets the internal counter before starting SCSI EH.
2052  **/
2053 static void sd_eh_reset(struct scsi_cmnd *scmd)
2054 {
2055         struct scsi_disk *sdkp = scsi_disk(scsi_cmd_to_rq(scmd)->q->disk);
2056
2057         /* New SCSI EH run, reset gate variable */
2058         sdkp->ignore_medium_access_errors = false;
2059 }
2060
2061 /**
2062  *      sd_eh_action - error handling callback
2063  *      @scmd:          sd-issued command that has failed
2064  *      @eh_disp:       The recovery disposition suggested by the midlayer
2065  *
2066  *      This function is called by the SCSI midlayer upon completion of an
2067  *      error test command (currently TEST UNIT READY). The result of sending
2068  *      the eh command is passed in eh_disp.  We're looking for devices that
2069  *      fail medium access commands but are OK with non access commands like
2070  *      test unit ready (so wrongly see the device as having a successful
2071  *      recovery)
2072  **/
2073 static int sd_eh_action(struct scsi_cmnd *scmd, int eh_disp)
2074 {
2075         struct scsi_disk *sdkp = scsi_disk(scsi_cmd_to_rq(scmd)->q->disk);
2076         struct scsi_device *sdev = scmd->device;
2077
2078         if (!scsi_device_online(sdev) ||
2079             !scsi_medium_access_command(scmd) ||
2080             host_byte(scmd->result) != DID_TIME_OUT ||
2081             eh_disp != SUCCESS)
2082                 return eh_disp;
2083
2084         /*
2085          * The device has timed out executing a medium access command.
2086          * However, the TEST UNIT READY command sent during error
2087          * handling completed successfully. Either the device is in the
2088          * process of recovering or has it suffered an internal failure
2089          * that prevents access to the storage medium.
2090          */
2091         if (!sdkp->ignore_medium_access_errors) {
2092                 sdkp->medium_access_timed_out++;
2093                 sdkp->ignore_medium_access_errors = true;
2094         }
2095
2096         /*
2097          * If the device keeps failing read/write commands but TEST UNIT
2098          * READY always completes successfully we assume that medium
2099          * access is no longer possible and take the device offline.
2100          */
2101         if (sdkp->medium_access_timed_out >= sdkp->max_medium_access_timeouts) {
2102                 scmd_printk(KERN_ERR, scmd,
2103                             "Medium access timeout failure. Offlining disk!\n");
2104                 mutex_lock(&sdev->state_mutex);
2105                 scsi_device_set_state(sdev, SDEV_OFFLINE);
2106                 mutex_unlock(&sdev->state_mutex);
2107
2108                 return SUCCESS;
2109         }
2110
2111         return eh_disp;
2112 }
2113
2114 static unsigned int sd_completed_bytes(struct scsi_cmnd *scmd)
2115 {
2116         struct request *req = scsi_cmd_to_rq(scmd);
2117         struct scsi_device *sdev = scmd->device;
2118         unsigned int transferred, good_bytes;
2119         u64 start_lba, end_lba, bad_lba;
2120
2121         /*
2122          * Some commands have a payload smaller than the device logical
2123          * block size (e.g. INQUIRY on a 4K disk).
2124          */
2125         if (scsi_bufflen(scmd) <= sdev->sector_size)
2126                 return 0;
2127
2128         /* Check if we have a 'bad_lba' information */
2129         if (!scsi_get_sense_info_fld(scmd->sense_buffer,
2130                                      SCSI_SENSE_BUFFERSIZE,
2131                                      &bad_lba))
2132                 return 0;
2133
2134         /*
2135          * If the bad lba was reported incorrectly, we have no idea where
2136          * the error is.
2137          */
2138         start_lba = sectors_to_logical(sdev, blk_rq_pos(req));
2139         end_lba = start_lba + bytes_to_logical(sdev, scsi_bufflen(scmd));
2140         if (bad_lba < start_lba || bad_lba >= end_lba)
2141                 return 0;
2142
2143         /*
2144          * resid is optional but mostly filled in.  When it's unused,
2145          * its value is zero, so we assume the whole buffer transferred
2146          */
2147         transferred = scsi_bufflen(scmd) - scsi_get_resid(scmd);
2148
2149         /* This computation should always be done in terms of the
2150          * resolution of the device's medium.
2151          */
2152         good_bytes = logical_to_bytes(sdev, bad_lba - start_lba);
2153
2154         return min(good_bytes, transferred);
2155 }
2156
2157 /**
2158  *      sd_done - bottom half handler: called when the lower level
2159  *      driver has completed (successfully or otherwise) a scsi command.
2160  *      @SCpnt: mid-level's per command structure.
2161  *
2162  *      Note: potentially run from within an ISR. Must not block.
2163  **/
2164 static int sd_done(struct scsi_cmnd *SCpnt)
2165 {
2166         int result = SCpnt->result;
2167         unsigned int good_bytes = result ? 0 : scsi_bufflen(SCpnt);
2168         unsigned int sector_size = SCpnt->device->sector_size;
2169         unsigned int resid;
2170         struct scsi_sense_hdr sshdr;
2171         struct request *req = scsi_cmd_to_rq(SCpnt);
2172         struct scsi_disk *sdkp = scsi_disk(req->q->disk);
2173         int sense_valid = 0;
2174         int sense_deferred = 0;
2175
2176         switch (req_op(req)) {
2177         case REQ_OP_DISCARD:
2178         case REQ_OP_WRITE_ZEROES:
2179         case REQ_OP_ZONE_RESET:
2180         case REQ_OP_ZONE_RESET_ALL:
2181         case REQ_OP_ZONE_OPEN:
2182         case REQ_OP_ZONE_CLOSE:
2183         case REQ_OP_ZONE_FINISH:
2184                 if (!result) {
2185                         good_bytes = blk_rq_bytes(req);
2186                         scsi_set_resid(SCpnt, 0);
2187                 } else {
2188                         good_bytes = 0;
2189                         scsi_set_resid(SCpnt, blk_rq_bytes(req));
2190                 }
2191                 break;
2192         default:
2193                 /*
2194                  * In case of bogus fw or device, we could end up having
2195                  * an unaligned partial completion. Check this here and force
2196                  * alignment.
2197                  */
2198                 resid = scsi_get_resid(SCpnt);
2199                 if (resid & (sector_size - 1)) {
2200                         sd_printk(KERN_INFO, sdkp,
2201                                 "Unaligned partial completion (resid=%u, sector_sz=%u)\n",
2202                                 resid, sector_size);
2203                         scsi_print_command(SCpnt);
2204                         resid = min(scsi_bufflen(SCpnt),
2205                                     round_up(resid, sector_size));
2206                         scsi_set_resid(SCpnt, resid);
2207                 }
2208         }
2209
2210         if (result) {
2211                 sense_valid = scsi_command_normalize_sense(SCpnt, &sshdr);
2212                 if (sense_valid)
2213                         sense_deferred = scsi_sense_is_deferred(&sshdr);
2214         }
2215         sdkp->medium_access_timed_out = 0;
2216
2217         if (!scsi_status_is_check_condition(result) &&
2218             (!sense_valid || sense_deferred))
2219                 goto out;
2220
2221         switch (sshdr.sense_key) {
2222         case HARDWARE_ERROR:
2223         case MEDIUM_ERROR:
2224                 good_bytes = sd_completed_bytes(SCpnt);
2225                 break;
2226         case RECOVERED_ERROR:
2227                 good_bytes = scsi_bufflen(SCpnt);
2228                 break;
2229         case NO_SENSE:
2230                 /* This indicates a false check condition, so ignore it.  An
2231                  * unknown amount of data was transferred so treat it as an
2232                  * error.
2233                  */
2234                 SCpnt->result = 0;
2235                 memset(SCpnt->sense_buffer, 0, SCSI_SENSE_BUFFERSIZE);
2236                 break;
2237         case ABORTED_COMMAND:
2238                 if (sshdr.asc == 0x10)  /* DIF: Target detected corruption */
2239                         good_bytes = sd_completed_bytes(SCpnt);
2240                 break;
2241         case ILLEGAL_REQUEST:
2242                 switch (sshdr.asc) {
2243                 case 0x10:      /* DIX: Host detected corruption */
2244                         good_bytes = sd_completed_bytes(SCpnt);
2245                         break;
2246                 case 0x20:      /* INVALID COMMAND OPCODE */
2247                 case 0x24:      /* INVALID FIELD IN CDB */
2248                         switch (SCpnt->cmnd[0]) {
2249                         case UNMAP:
2250                                 sd_config_discard(sdkp, SD_LBP_DISABLE);
2251                                 break;
2252                         case WRITE_SAME_16:
2253                         case WRITE_SAME:
2254                                 if (SCpnt->cmnd[1] & 8) { /* UNMAP */
2255                                         sd_config_discard(sdkp, SD_LBP_DISABLE);
2256                                 } else {
2257                                         sdkp->device->no_write_same = 1;
2258                                         sd_config_write_same(sdkp);
2259                                         req->rq_flags |= RQF_QUIET;
2260                                 }
2261                                 break;
2262                         }
2263                 }
2264                 break;
2265         default:
2266                 break;
2267         }
2268
2269  out:
2270         if (sd_is_zoned(sdkp))
2271                 good_bytes = sd_zbc_complete(SCpnt, good_bytes, &sshdr);
2272
2273         SCSI_LOG_HLCOMPLETE(1, scmd_printk(KERN_INFO, SCpnt,
2274                                            "sd_done: completed %d of %d bytes\n",
2275                                            good_bytes, scsi_bufflen(SCpnt)));
2276
2277         return good_bytes;
2278 }
2279
2280 /*
2281  * spinup disk - called only in sd_revalidate_disk()
2282  */
2283 static void
2284 sd_spinup_disk(struct scsi_disk *sdkp)
2285 {
2286         static const u8 cmd[10] = { TEST_UNIT_READY };
2287         unsigned long spintime_expire = 0;
2288         int spintime, sense_valid = 0;
2289         unsigned int the_result;
2290         struct scsi_sense_hdr sshdr;
2291         struct scsi_failure failure_defs[] = {
2292                 /* Do not retry Medium Not Present */
2293                 {
2294                         .sense = UNIT_ATTENTION,
2295                         .asc = 0x3A,
2296                         .ascq = SCMD_FAILURE_ASCQ_ANY,
2297                         .result = SAM_STAT_CHECK_CONDITION,
2298                 },
2299                 {
2300                         .sense = NOT_READY,
2301                         .asc = 0x3A,
2302                         .ascq = SCMD_FAILURE_ASCQ_ANY,
2303                         .result = SAM_STAT_CHECK_CONDITION,
2304                 },
2305                 /* Retry when scsi_status_is_good would return false 3 times */
2306                 {
2307                         .result = SCMD_FAILURE_STAT_ANY,
2308                         .allowed = 3,
2309                 },
2310                 {}
2311         };
2312         struct scsi_failures failures = {
2313                 .failure_definitions = failure_defs,
2314         };
2315         const struct scsi_exec_args exec_args = {
2316                 .sshdr = &sshdr,
2317                 .failures = &failures,
2318         };
2319
2320         spintime = 0;
2321
2322         /* Spin up drives, as required.  Only do this at boot time */
2323         /* Spinup needs to be done for module loads too. */
2324         do {
2325                 bool media_was_present = sdkp->media_present;
2326
2327                 scsi_failures_reset_retries(&failures);
2328
2329                 the_result = scsi_execute_cmd(sdkp->device, cmd, REQ_OP_DRV_IN,
2330                                               NULL, 0, SD_TIMEOUT,
2331                                               sdkp->max_retries, &exec_args);
2332
2333
2334                 if (the_result > 0) {
2335                         /*
2336                          * If the drive has indicated to us that it doesn't
2337                          * have any media in it, don't bother with any more
2338                          * polling.
2339                          */
2340                         if (media_not_present(sdkp, &sshdr)) {
2341                                 if (media_was_present)
2342                                         sd_printk(KERN_NOTICE, sdkp,
2343                                                   "Media removed, stopped polling\n");
2344                                 return;
2345                         }
2346                         sense_valid = scsi_sense_valid(&sshdr);
2347                 }
2348
2349                 if (!scsi_status_is_check_condition(the_result)) {
2350                         /* no sense, TUR either succeeded or failed
2351                          * with a status error */
2352                         if(!spintime && !scsi_status_is_good(the_result)) {
2353                                 sd_print_result(sdkp, "Test Unit Ready failed",
2354                                                 the_result);
2355                         }
2356                         break;
2357                 }
2358
2359                 /*
2360                  * The device does not want the automatic start to be issued.
2361                  */
2362                 if (sdkp->device->no_start_on_add)
2363                         break;
2364
2365                 if (sense_valid && sshdr.sense_key == NOT_READY) {
2366                         if (sshdr.asc == 4 && sshdr.ascq == 3)
2367                                 break;  /* manual intervention required */
2368                         if (sshdr.asc == 4 && sshdr.ascq == 0xb)
2369                                 break;  /* standby */
2370                         if (sshdr.asc == 4 && sshdr.ascq == 0xc)
2371                                 break;  /* unavailable */
2372                         if (sshdr.asc == 4 && sshdr.ascq == 0x1b)
2373                                 break;  /* sanitize in progress */
2374                         if (sshdr.asc == 4 && sshdr.ascq == 0x24)
2375                                 break;  /* depopulation in progress */
2376                         if (sshdr.asc == 4 && sshdr.ascq == 0x25)
2377                                 break;  /* depopulation restoration in progress */
2378                         /*
2379                          * Issue command to spin up drive when not ready
2380                          */
2381                         if (!spintime) {
2382                                 /* Return immediately and start spin cycle */
2383                                 const u8 start_cmd[10] = {
2384                                         [0] = START_STOP,
2385                                         [1] = 1,
2386                                         [4] = sdkp->device->start_stop_pwr_cond ?
2387                                                 0x11 : 1,
2388                                 };
2389
2390                                 sd_printk(KERN_NOTICE, sdkp, "Spinning up disk...");
2391                                 scsi_execute_cmd(sdkp->device, start_cmd,
2392                                                  REQ_OP_DRV_IN, NULL, 0,
2393                                                  SD_TIMEOUT, sdkp->max_retries,
2394                                                  &exec_args);
2395                                 spintime_expire = jiffies + 100 * HZ;
2396                                 spintime = 1;
2397                         }
2398                         /* Wait 1 second for next try */
2399                         msleep(1000);
2400                         printk(KERN_CONT ".");
2401
2402                 /*
2403                  * Wait for USB flash devices with slow firmware.
2404                  * Yes, this sense key/ASC combination shouldn't
2405                  * occur here.  It's characteristic of these devices.
2406                  */
2407                 } else if (sense_valid &&
2408                                 sshdr.sense_key == UNIT_ATTENTION &&
2409                                 sshdr.asc == 0x28) {
2410                         if (!spintime) {
2411                                 spintime_expire = jiffies + 5 * HZ;
2412                                 spintime = 1;
2413                         }
2414                         /* Wait 1 second for next try */
2415                         msleep(1000);
2416                 } else {
2417                         /* we don't understand the sense code, so it's
2418                          * probably pointless to loop */
2419                         if(!spintime) {
2420                                 sd_printk(KERN_NOTICE, sdkp, "Unit Not Ready\n");
2421                                 sd_print_sense_hdr(sdkp, &sshdr);
2422                         }
2423                         break;
2424                 }
2425                                 
2426         } while (spintime && time_before_eq(jiffies, spintime_expire));
2427
2428         if (spintime) {
2429                 if (scsi_status_is_good(the_result))
2430                         printk(KERN_CONT "ready\n");
2431                 else
2432                         printk(KERN_CONT "not responding...\n");
2433         }
2434 }
2435
2436 /*
2437  * Determine whether disk supports Data Integrity Field.
2438  */
2439 static int sd_read_protection_type(struct scsi_disk *sdkp, unsigned char *buffer)
2440 {
2441         struct scsi_device *sdp = sdkp->device;
2442         u8 type;
2443
2444         if (scsi_device_protection(sdp) == 0 || (buffer[12] & 1) == 0) {
2445                 sdkp->protection_type = 0;
2446                 return 0;
2447         }
2448
2449         type = ((buffer[12] >> 1) & 7) + 1; /* P_TYPE 0 = Type 1 */
2450
2451         if (type > T10_PI_TYPE3_PROTECTION) {
2452                 sd_printk(KERN_ERR, sdkp, "formatted with unsupported"  \
2453                           " protection type %u. Disabling disk!\n",
2454                           type);
2455                 sdkp->protection_type = 0;
2456                 return -ENODEV;
2457         }
2458
2459         sdkp->protection_type = type;
2460
2461         return 0;
2462 }
2463
2464 static void sd_config_protection(struct scsi_disk *sdkp)
2465 {
2466         struct scsi_device *sdp = sdkp->device;
2467
2468         sd_dif_config_host(sdkp);
2469
2470         if (!sdkp->protection_type)
2471                 return;
2472
2473         if (!scsi_host_dif_capable(sdp->host, sdkp->protection_type)) {
2474                 sd_first_printk(KERN_NOTICE, sdkp,
2475                                 "Disabling DIF Type %u protection\n",
2476                                 sdkp->protection_type);
2477                 sdkp->protection_type = 0;
2478         }
2479
2480         sd_first_printk(KERN_NOTICE, sdkp, "Enabling DIF Type %u protection\n",
2481                         sdkp->protection_type);
2482 }
2483
2484 static void read_capacity_error(struct scsi_disk *sdkp, struct scsi_device *sdp,
2485                         struct scsi_sense_hdr *sshdr, int sense_valid,
2486                         int the_result)
2487 {
2488         if (sense_valid)
2489                 sd_print_sense_hdr(sdkp, sshdr);
2490         else
2491                 sd_printk(KERN_NOTICE, sdkp, "Sense not available.\n");
2492
2493         /*
2494          * Set dirty bit for removable devices if not ready -
2495          * sometimes drives will not report this properly.
2496          */
2497         if (sdp->removable &&
2498             sense_valid && sshdr->sense_key == NOT_READY)
2499                 set_media_not_present(sdkp);
2500
2501         /*
2502          * We used to set media_present to 0 here to indicate no media
2503          * in the drive, but some drives fail read capacity even with
2504          * media present, so we can't do that.
2505          */
2506         sdkp->capacity = 0; /* unknown mapped to zero - as usual */
2507 }
2508
2509 #define RC16_LEN 32
2510 #if RC16_LEN > SD_BUF_SIZE
2511 #error RC16_LEN must not be more than SD_BUF_SIZE
2512 #endif
2513
2514 #define READ_CAPACITY_RETRIES_ON_RESET  10
2515
2516 static int read_capacity_16(struct scsi_disk *sdkp, struct scsi_device *sdp,
2517                                                 unsigned char *buffer)
2518 {
2519         unsigned char cmd[16];
2520         struct scsi_sense_hdr sshdr;
2521         const struct scsi_exec_args exec_args = {
2522                 .sshdr = &sshdr,
2523         };
2524         int sense_valid = 0;
2525         int the_result;
2526         int retries = 3, reset_retries = READ_CAPACITY_RETRIES_ON_RESET;
2527         unsigned int alignment;
2528         unsigned long long lba;
2529         unsigned sector_size;
2530
2531         if (sdp->no_read_capacity_16)
2532                 return -EINVAL;
2533
2534         do {
2535                 memset(cmd, 0, 16);
2536                 cmd[0] = SERVICE_ACTION_IN_16;
2537                 cmd[1] = SAI_READ_CAPACITY_16;
2538                 cmd[13] = RC16_LEN;
2539                 memset(buffer, 0, RC16_LEN);
2540
2541                 the_result = scsi_execute_cmd(sdp, cmd, REQ_OP_DRV_IN,
2542                                               buffer, RC16_LEN, SD_TIMEOUT,
2543                                               sdkp->max_retries, &exec_args);
2544                 if (the_result > 0) {
2545                         if (media_not_present(sdkp, &sshdr))
2546                                 return -ENODEV;
2547
2548                         sense_valid = scsi_sense_valid(&sshdr);
2549                         if (sense_valid &&
2550                             sshdr.sense_key == ILLEGAL_REQUEST &&
2551                             (sshdr.asc == 0x20 || sshdr.asc == 0x24) &&
2552                             sshdr.ascq == 0x00)
2553                                 /* Invalid Command Operation Code or
2554                                  * Invalid Field in CDB, just retry
2555                                  * silently with RC10 */
2556                                 return -EINVAL;
2557                         if (sense_valid &&
2558                             sshdr.sense_key == UNIT_ATTENTION &&
2559                             sshdr.asc == 0x29 && sshdr.ascq == 0x00)
2560                                 /* Device reset might occur several times,
2561                                  * give it one more chance */
2562                                 if (--reset_retries > 0)
2563                                         continue;
2564                 }
2565                 retries--;
2566
2567         } while (the_result && retries);
2568
2569         if (the_result) {
2570                 sd_print_result(sdkp, "Read Capacity(16) failed", the_result);
2571                 read_capacity_error(sdkp, sdp, &sshdr, sense_valid, the_result);
2572                 return -EINVAL;
2573         }
2574
2575         sector_size = get_unaligned_be32(&buffer[8]);
2576         lba = get_unaligned_be64(&buffer[0]);
2577
2578         if (sd_read_protection_type(sdkp, buffer) < 0) {
2579                 sdkp->capacity = 0;
2580                 return -ENODEV;
2581         }
2582
2583         /* Logical blocks per physical block exponent */
2584         sdkp->physical_block_size = (1 << (buffer[13] & 0xf)) * sector_size;
2585
2586         /* RC basis */
2587         sdkp->rc_basis = (buffer[12] >> 4) & 0x3;
2588
2589         /* Lowest aligned logical block */
2590         alignment = ((buffer[14] & 0x3f) << 8 | buffer[15]) * sector_size;
2591         blk_queue_alignment_offset(sdp->request_queue, alignment);
2592         if (alignment && sdkp->first_scan)
2593                 sd_printk(KERN_NOTICE, sdkp,
2594                           "physical block alignment offset: %u\n", alignment);
2595
2596         if (buffer[14] & 0x80) { /* LBPME */
2597                 sdkp->lbpme = 1;
2598
2599                 if (buffer[14] & 0x40) /* LBPRZ */
2600                         sdkp->lbprz = 1;
2601
2602                 sd_config_discard(sdkp, SD_LBP_WS16);
2603         }
2604
2605         sdkp->capacity = lba + 1;
2606         return sector_size;
2607 }
2608
2609 static int read_capacity_10(struct scsi_disk *sdkp, struct scsi_device *sdp,
2610                                                 unsigned char *buffer)
2611 {
2612         static const u8 cmd[10] = { READ_CAPACITY };
2613         struct scsi_sense_hdr sshdr;
2614         struct scsi_failure failure_defs[] = {
2615                 /* Do not retry Medium Not Present */
2616                 {
2617                         .sense = UNIT_ATTENTION,
2618                         .asc = 0x3A,
2619                         .result = SAM_STAT_CHECK_CONDITION,
2620                 },
2621                 {
2622                         .sense = NOT_READY,
2623                         .asc = 0x3A,
2624                         .result = SAM_STAT_CHECK_CONDITION,
2625                 },
2626                  /* Device reset might occur several times so retry a lot */
2627                 {
2628                         .sense = UNIT_ATTENTION,
2629                         .asc = 0x29,
2630                         .allowed = READ_CAPACITY_RETRIES_ON_RESET,
2631                         .result = SAM_STAT_CHECK_CONDITION,
2632                 },
2633                 /* Any other error not listed above retry 3 times */
2634                 {
2635                         .result = SCMD_FAILURE_RESULT_ANY,
2636                         .allowed = 3,
2637                 },
2638                 {}
2639         };
2640         struct scsi_failures failures = {
2641                 .failure_definitions = failure_defs,
2642         };
2643         const struct scsi_exec_args exec_args = {
2644                 .sshdr = &sshdr,
2645                 .failures = &failures,
2646         };
2647         int sense_valid = 0;
2648         int the_result;
2649         sector_t lba;
2650         unsigned sector_size;
2651
2652         memset(buffer, 0, 8);
2653
2654         the_result = scsi_execute_cmd(sdp, cmd, REQ_OP_DRV_IN, buffer,
2655                                       8, SD_TIMEOUT, sdkp->max_retries,
2656                                       &exec_args);
2657
2658         if (the_result > 0) {
2659                 sense_valid = scsi_sense_valid(&sshdr);
2660
2661                 if (media_not_present(sdkp, &sshdr))
2662                         return -ENODEV;
2663         }
2664
2665         if (the_result) {
2666                 sd_print_result(sdkp, "Read Capacity(10) failed", the_result);
2667                 read_capacity_error(sdkp, sdp, &sshdr, sense_valid, the_result);
2668                 return -EINVAL;
2669         }
2670
2671         sector_size = get_unaligned_be32(&buffer[4]);
2672         lba = get_unaligned_be32(&buffer[0]);
2673
2674         if (sdp->no_read_capacity_16 && (lba == 0xffffffff)) {
2675                 /* Some buggy (usb cardreader) devices return an lba of
2676                    0xffffffff when the want to report a size of 0 (with
2677                    which they really mean no media is present) */
2678                 sdkp->capacity = 0;
2679                 sdkp->physical_block_size = sector_size;
2680                 return sector_size;
2681         }
2682
2683         sdkp->capacity = lba + 1;
2684         sdkp->physical_block_size = sector_size;
2685         return sector_size;
2686 }
2687
2688 static int sd_try_rc16_first(struct scsi_device *sdp)
2689 {
2690         if (sdp->host->max_cmd_len < 16)
2691                 return 0;
2692         if (sdp->try_rc_10_first)
2693                 return 0;
2694         if (sdp->scsi_level > SCSI_SPC_2)
2695                 return 1;
2696         if (scsi_device_protection(sdp))
2697                 return 1;
2698         return 0;
2699 }
2700
2701 /*
2702  * read disk capacity
2703  */
2704 static void
2705 sd_read_capacity(struct scsi_disk *sdkp, unsigned char *buffer)
2706 {
2707         int sector_size;
2708         struct scsi_device *sdp = sdkp->device;
2709
2710         if (sd_try_rc16_first(sdp)) {
2711                 sector_size = read_capacity_16(sdkp, sdp, buffer);
2712                 if (sector_size == -EOVERFLOW)
2713                         goto got_data;
2714                 if (sector_size == -ENODEV)
2715                         return;
2716                 if (sector_size < 0)
2717                         sector_size = read_capacity_10(sdkp, sdp, buffer);
2718                 if (sector_size < 0)
2719                         return;
2720         } else {
2721                 sector_size = read_capacity_10(sdkp, sdp, buffer);
2722                 if (sector_size == -EOVERFLOW)
2723                         goto got_data;
2724                 if (sector_size < 0)
2725                         return;
2726                 if ((sizeof(sdkp->capacity) > 4) &&
2727                     (sdkp->capacity > 0xffffffffULL)) {
2728                         int old_sector_size = sector_size;
2729                         sd_printk(KERN_NOTICE, sdkp, "Very big device. "
2730                                         "Trying to use READ CAPACITY(16).\n");
2731                         sector_size = read_capacity_16(sdkp, sdp, buffer);
2732                         if (sector_size < 0) {
2733                                 sd_printk(KERN_NOTICE, sdkp,
2734                                         "Using 0xffffffff as device size\n");
2735                                 sdkp->capacity = 1 + (sector_t) 0xffffffff;
2736                                 sector_size = old_sector_size;
2737                                 goto got_data;
2738                         }
2739                         /* Remember that READ CAPACITY(16) succeeded */
2740                         sdp->try_rc_10_first = 0;
2741                 }
2742         }
2743
2744         /* Some devices are known to return the total number of blocks,
2745          * not the highest block number.  Some devices have versions
2746          * which do this and others which do not.  Some devices we might
2747          * suspect of doing this but we don't know for certain.
2748          *
2749          * If we know the reported capacity is wrong, decrement it.  If
2750          * we can only guess, then assume the number of blocks is even
2751          * (usually true but not always) and err on the side of lowering
2752          * the capacity.
2753          */
2754         if (sdp->fix_capacity ||
2755             (sdp->guess_capacity && (sdkp->capacity & 0x01))) {
2756                 sd_printk(KERN_INFO, sdkp, "Adjusting the sector count "
2757                                 "from its reported value: %llu\n",
2758                                 (unsigned long long) sdkp->capacity);
2759                 --sdkp->capacity;
2760         }
2761
2762 got_data:
2763         if (sector_size == 0) {
2764                 sector_size = 512;
2765                 sd_printk(KERN_NOTICE, sdkp, "Sector size 0 reported, "
2766                           "assuming 512.\n");
2767         }
2768
2769         if (sector_size != 512 &&
2770             sector_size != 1024 &&
2771             sector_size != 2048 &&
2772             sector_size != 4096) {
2773                 sd_printk(KERN_NOTICE, sdkp, "Unsupported sector size %d.\n",
2774                           sector_size);
2775                 /*
2776                  * The user might want to re-format the drive with
2777                  * a supported sectorsize.  Once this happens, it
2778                  * would be relatively trivial to set the thing up.
2779                  * For this reason, we leave the thing in the table.
2780                  */
2781                 sdkp->capacity = 0;
2782                 /*
2783                  * set a bogus sector size so the normal read/write
2784                  * logic in the block layer will eventually refuse any
2785                  * request on this device without tripping over power
2786                  * of two sector size assumptions
2787                  */
2788                 sector_size = 512;
2789         }
2790         blk_queue_logical_block_size(sdp->request_queue, sector_size);
2791         blk_queue_physical_block_size(sdp->request_queue,
2792                                       sdkp->physical_block_size);
2793         sdkp->device->sector_size = sector_size;
2794
2795         if (sdkp->capacity > 0xffffffff)
2796                 sdp->use_16_for_rw = 1;
2797
2798 }
2799
2800 /*
2801  * Print disk capacity
2802  */
2803 static void
2804 sd_print_capacity(struct scsi_disk *sdkp,
2805                   sector_t old_capacity)
2806 {
2807         int sector_size = sdkp->device->sector_size;
2808         char cap_str_2[10], cap_str_10[10];
2809
2810         if (!sdkp->first_scan && old_capacity == sdkp->capacity)
2811                 return;
2812
2813         string_get_size(sdkp->capacity, sector_size,
2814                         STRING_UNITS_2, cap_str_2, sizeof(cap_str_2));
2815         string_get_size(sdkp->capacity, sector_size,
2816                         STRING_UNITS_10, cap_str_10, sizeof(cap_str_10));
2817
2818         sd_printk(KERN_NOTICE, sdkp,
2819                   "%llu %d-byte logical blocks: (%s/%s)\n",
2820                   (unsigned long long)sdkp->capacity,
2821                   sector_size, cap_str_10, cap_str_2);
2822
2823         if (sdkp->physical_block_size != sector_size)
2824                 sd_printk(KERN_NOTICE, sdkp,
2825                           "%u-byte physical blocks\n",
2826                           sdkp->physical_block_size);
2827 }
2828
2829 /* called with buffer of length 512 */
2830 static inline int
2831 sd_do_mode_sense(struct scsi_disk *sdkp, int dbd, int modepage,
2832                  unsigned char *buffer, int len, struct scsi_mode_data *data,
2833                  struct scsi_sense_hdr *sshdr)
2834 {
2835         /*
2836          * If we must use MODE SENSE(10), make sure that the buffer length
2837          * is at least 8 bytes so that the mode sense header fits.
2838          */
2839         if (sdkp->device->use_10_for_ms && len < 8)
2840                 len = 8;
2841
2842         return scsi_mode_sense(sdkp->device, dbd, modepage, 0, buffer, len,
2843                                SD_TIMEOUT, sdkp->max_retries, data, sshdr);
2844 }
2845
2846 /*
2847  * read write protect setting, if possible - called only in sd_revalidate_disk()
2848  * called with buffer of length SD_BUF_SIZE
2849  */
2850 static void
2851 sd_read_write_protect_flag(struct scsi_disk *sdkp, unsigned char *buffer)
2852 {
2853         int res;
2854         struct scsi_device *sdp = sdkp->device;
2855         struct scsi_mode_data data;
2856         int old_wp = sdkp->write_prot;
2857
2858         set_disk_ro(sdkp->disk, 0);
2859         if (sdp->skip_ms_page_3f) {
2860                 sd_first_printk(KERN_NOTICE, sdkp, "Assuming Write Enabled\n");
2861                 return;
2862         }
2863
2864         if (sdp->use_192_bytes_for_3f) {
2865                 res = sd_do_mode_sense(sdkp, 0, 0x3F, buffer, 192, &data, NULL);
2866         } else {
2867                 /*
2868                  * First attempt: ask for all pages (0x3F), but only 4 bytes.
2869                  * We have to start carefully: some devices hang if we ask
2870                  * for more than is available.
2871                  */
2872                 res = sd_do_mode_sense(sdkp, 0, 0x3F, buffer, 4, &data, NULL);
2873
2874                 /*
2875                  * Second attempt: ask for page 0 When only page 0 is
2876                  * implemented, a request for page 3F may return Sense Key
2877                  * 5: Illegal Request, Sense Code 24: Invalid field in
2878                  * CDB.
2879                  */
2880                 if (res < 0)
2881                         res = sd_do_mode_sense(sdkp, 0, 0, buffer, 4, &data, NULL);
2882
2883                 /*
2884                  * Third attempt: ask 255 bytes, as we did earlier.
2885                  */
2886                 if (res < 0)
2887                         res = sd_do_mode_sense(sdkp, 0, 0x3F, buffer, 255,
2888                                                &data, NULL);
2889         }
2890
2891         if (res < 0) {
2892                 sd_first_printk(KERN_WARNING, sdkp,
2893                           "Test WP failed, assume Write Enabled\n");
2894         } else {
2895                 sdkp->write_prot = ((data.device_specific & 0x80) != 0);
2896                 set_disk_ro(sdkp->disk, sdkp->write_prot);
2897                 if (sdkp->first_scan || old_wp != sdkp->write_prot) {
2898                         sd_printk(KERN_NOTICE, sdkp, "Write Protect is %s\n",
2899                                   sdkp->write_prot ? "on" : "off");
2900                         sd_printk(KERN_DEBUG, sdkp, "Mode Sense: %4ph\n", buffer);
2901                 }
2902         }
2903 }
2904
2905 /*
2906  * sd_read_cache_type - called only from sd_revalidate_disk()
2907  * called with buffer of length SD_BUF_SIZE
2908  */
2909 static void
2910 sd_read_cache_type(struct scsi_disk *sdkp, unsigned char *buffer)
2911 {
2912         int len = 0, res;
2913         struct scsi_device *sdp = sdkp->device;
2914
2915         int dbd;
2916         int modepage;
2917         int first_len;
2918         struct scsi_mode_data data;
2919         struct scsi_sense_hdr sshdr;
2920         int old_wce = sdkp->WCE;
2921         int old_rcd = sdkp->RCD;
2922         int old_dpofua = sdkp->DPOFUA;
2923
2924
2925         if (sdkp->cache_override)
2926                 return;
2927
2928         first_len = 4;
2929         if (sdp->skip_ms_page_8) {
2930                 if (sdp->type == TYPE_RBC)
2931                         goto defaults;
2932                 else {
2933                         if (sdp->skip_ms_page_3f)
2934                                 goto defaults;
2935                         modepage = 0x3F;
2936                         if (sdp->use_192_bytes_for_3f)
2937                                 first_len = 192;
2938                         dbd = 0;
2939                 }
2940         } else if (sdp->type == TYPE_RBC) {
2941                 modepage = 6;
2942                 dbd = 8;
2943         } else {
2944                 modepage = 8;
2945                 dbd = 0;
2946         }
2947
2948         /* cautiously ask */
2949         res = sd_do_mode_sense(sdkp, dbd, modepage, buffer, first_len,
2950                         &data, &sshdr);
2951
2952         if (res < 0)
2953                 goto bad_sense;
2954
2955         if (!data.header_length) {
2956                 modepage = 6;
2957                 first_len = 0;
2958                 sd_first_printk(KERN_ERR, sdkp,
2959                                 "Missing header in MODE_SENSE response\n");
2960         }
2961
2962         /* that went OK, now ask for the proper length */
2963         len = data.length;
2964
2965         /*
2966          * We're only interested in the first three bytes, actually.
2967          * But the data cache page is defined for the first 20.
2968          */
2969         if (len < 3)
2970                 goto bad_sense;
2971         else if (len > SD_BUF_SIZE) {
2972                 sd_first_printk(KERN_NOTICE, sdkp, "Truncating mode parameter "
2973                           "data from %d to %d bytes\n", len, SD_BUF_SIZE);
2974                 len = SD_BUF_SIZE;
2975         }
2976         if (modepage == 0x3F && sdp->use_192_bytes_for_3f)
2977                 len = 192;
2978
2979         /* Get the data */
2980         if (len > first_len)
2981                 res = sd_do_mode_sense(sdkp, dbd, modepage, buffer, len,
2982                                 &data, &sshdr);
2983
2984         if (!res) {
2985                 int offset = data.header_length + data.block_descriptor_length;
2986
2987                 while (offset < len) {
2988                         u8 page_code = buffer[offset] & 0x3F;
2989                         u8 spf       = buffer[offset] & 0x40;
2990
2991                         if (page_code == 8 || page_code == 6) {
2992                                 /* We're interested only in the first 3 bytes.
2993                                  */
2994                                 if (len - offset <= 2) {
2995                                         sd_first_printk(KERN_ERR, sdkp,
2996                                                 "Incomplete mode parameter "
2997                                                         "data\n");
2998                                         goto defaults;
2999                                 } else {
3000                                         modepage = page_code;
3001                                         goto Page_found;
3002                                 }
3003                         } else {
3004                                 /* Go to the next page */
3005                                 if (spf && len - offset > 3)
3006                                         offset += 4 + (buffer[offset+2] << 8) +
3007                                                 buffer[offset+3];
3008                                 else if (!spf && len - offset > 1)
3009                                         offset += 2 + buffer[offset+1];
3010                                 else {
3011                                         sd_first_printk(KERN_ERR, sdkp,
3012                                                         "Incomplete mode "
3013                                                         "parameter data\n");
3014                                         goto defaults;
3015                                 }
3016                         }
3017                 }
3018
3019                 sd_first_printk(KERN_WARNING, sdkp,
3020                                 "No Caching mode page found\n");
3021                 goto defaults;
3022
3023         Page_found:
3024                 if (modepage == 8) {
3025                         sdkp->WCE = ((buffer[offset + 2] & 0x04) != 0);
3026                         sdkp->RCD = ((buffer[offset + 2] & 0x01) != 0);
3027                 } else {
3028                         sdkp->WCE = ((buffer[offset + 2] & 0x01) == 0);
3029                         sdkp->RCD = 0;
3030                 }
3031
3032                 sdkp->DPOFUA = (data.device_specific & 0x10) != 0;
3033                 if (sdp->broken_fua) {
3034                         sd_first_printk(KERN_NOTICE, sdkp, "Disabling FUA\n");
3035                         sdkp->DPOFUA = 0;
3036                 } else if (sdkp->DPOFUA && !sdkp->device->use_10_for_rw &&
3037                            !sdkp->device->use_16_for_rw) {
3038                         sd_first_printk(KERN_NOTICE, sdkp,
3039                                   "Uses READ/WRITE(6), disabling FUA\n");
3040                         sdkp->DPOFUA = 0;
3041                 }
3042
3043                 /* No cache flush allowed for write protected devices */
3044                 if (sdkp->WCE && sdkp->write_prot)
3045                         sdkp->WCE = 0;
3046
3047                 if (sdkp->first_scan || old_wce != sdkp->WCE ||
3048                     old_rcd != sdkp->RCD || old_dpofua != sdkp->DPOFUA)
3049                         sd_printk(KERN_NOTICE, sdkp,
3050                                   "Write cache: %s, read cache: %s, %s\n",
3051                                   sdkp->WCE ? "enabled" : "disabled",
3052                                   sdkp->RCD ? "disabled" : "enabled",
3053                                   sdkp->DPOFUA ? "supports DPO and FUA"
3054                                   : "doesn't support DPO or FUA");
3055
3056                 return;
3057         }
3058
3059 bad_sense:
3060         if (res == -EIO && scsi_sense_valid(&sshdr) &&
3061             sshdr.sense_key == ILLEGAL_REQUEST &&
3062             sshdr.asc == 0x24 && sshdr.ascq == 0x0)
3063                 /* Invalid field in CDB */
3064                 sd_first_printk(KERN_NOTICE, sdkp, "Cache data unavailable\n");
3065         else
3066                 sd_first_printk(KERN_ERR, sdkp,
3067                                 "Asking for cache data failed\n");
3068
3069 defaults:
3070         if (sdp->wce_default_on) {
3071                 sd_first_printk(KERN_NOTICE, sdkp,
3072                                 "Assuming drive cache: write back\n");
3073                 sdkp->WCE = 1;
3074         } else {
3075                 sd_first_printk(KERN_WARNING, sdkp,
3076                                 "Assuming drive cache: write through\n");
3077                 sdkp->WCE = 0;
3078         }
3079         sdkp->RCD = 0;
3080         sdkp->DPOFUA = 0;
3081 }
3082
3083 static bool sd_is_perm_stream(struct scsi_disk *sdkp, unsigned int stream_id)
3084 {
3085         u8 cdb[16] = { SERVICE_ACTION_IN_16, SAI_GET_STREAM_STATUS };
3086         struct {
3087                 struct scsi_stream_status_header h;
3088                 struct scsi_stream_status s;
3089         } buf;
3090         struct scsi_device *sdev = sdkp->device;
3091         struct scsi_sense_hdr sshdr;
3092         const struct scsi_exec_args exec_args = {
3093                 .sshdr = &sshdr,
3094         };
3095         int res;
3096
3097         put_unaligned_be16(stream_id, &cdb[4]);
3098         put_unaligned_be32(sizeof(buf), &cdb[10]);
3099
3100         res = scsi_execute_cmd(sdev, cdb, REQ_OP_DRV_IN, &buf, sizeof(buf),
3101                                SD_TIMEOUT, sdkp->max_retries, &exec_args);
3102         if (res < 0)
3103                 return false;
3104         if (scsi_status_is_check_condition(res) && scsi_sense_valid(&sshdr))
3105                 sd_print_sense_hdr(sdkp, &sshdr);
3106         if (res)
3107                 return false;
3108         if (get_unaligned_be32(&buf.h.len) < sizeof(struct scsi_stream_status))
3109                 return false;
3110         return buf.h.stream_status[0].perm;
3111 }
3112
3113 static void sd_read_io_hints(struct scsi_disk *sdkp, unsigned char *buffer)
3114 {
3115         struct scsi_device *sdp = sdkp->device;
3116         const struct scsi_io_group_descriptor *desc, *start, *end;
3117         u16 permanent_stream_count_old;
3118         struct scsi_sense_hdr sshdr;
3119         struct scsi_mode_data data;
3120         int res;
3121
3122         if (sdp->sdev_bflags & BLIST_SKIP_IO_HINTS)
3123                 return;
3124
3125         res = scsi_mode_sense(sdp, /*dbd=*/0x8, /*modepage=*/0x0a,
3126                               /*subpage=*/0x05, buffer, SD_BUF_SIZE, SD_TIMEOUT,
3127                               sdkp->max_retries, &data, &sshdr);
3128         if (res < 0)
3129                 return;
3130         start = (void *)buffer + data.header_length + 16;
3131         end = (void *)buffer + ALIGN_DOWN(data.header_length + data.length,
3132                                           sizeof(*end));
3133         /*
3134          * From "SBC-5 Constrained Streams with Data Lifetimes": Device severs
3135          * should assign the lowest numbered stream identifiers to permanent
3136          * streams.
3137          */
3138         for (desc = start; desc < end; desc++)
3139                 if (!desc->st_enble || !sd_is_perm_stream(sdkp, desc - start))
3140                         break;
3141         permanent_stream_count_old = sdkp->permanent_stream_count;
3142         sdkp->permanent_stream_count = desc - start;
3143         if (sdkp->rscs && sdkp->permanent_stream_count < 2)
3144                 sd_printk(KERN_INFO, sdkp,
3145                           "Unexpected: RSCS has been set and the permanent stream count is %u\n",
3146                           sdkp->permanent_stream_count);
3147         else if (sdkp->permanent_stream_count != permanent_stream_count_old)
3148                 sd_printk(KERN_INFO, sdkp, "permanent stream count = %d\n",
3149                           sdkp->permanent_stream_count);
3150 }
3151
3152 /*
3153  * The ATO bit indicates whether the DIF application tag is available
3154  * for use by the operating system.
3155  */
3156 static void sd_read_app_tag_own(struct scsi_disk *sdkp, unsigned char *buffer)
3157 {
3158         int res, offset;
3159         struct scsi_device *sdp = sdkp->device;
3160         struct scsi_mode_data data;
3161         struct scsi_sense_hdr sshdr;
3162
3163         if (sdp->type != TYPE_DISK && sdp->type != TYPE_ZBC)
3164                 return;
3165
3166         if (sdkp->protection_type == 0)
3167                 return;
3168
3169         res = scsi_mode_sense(sdp, 1, 0x0a, 0, buffer, 36, SD_TIMEOUT,
3170                               sdkp->max_retries, &data, &sshdr);
3171
3172         if (res < 0 || !data.header_length ||
3173             data.length < 6) {
3174                 sd_first_printk(KERN_WARNING, sdkp,
3175                           "getting Control mode page failed, assume no ATO\n");
3176
3177                 if (res == -EIO && scsi_sense_valid(&sshdr))
3178                         sd_print_sense_hdr(sdkp, &sshdr);
3179
3180                 return;
3181         }
3182
3183         offset = data.header_length + data.block_descriptor_length;
3184
3185         if ((buffer[offset] & 0x3f) != 0x0a) {
3186                 sd_first_printk(KERN_ERR, sdkp, "ATO Got wrong page\n");
3187                 return;
3188         }
3189
3190         if ((buffer[offset + 5] & 0x80) == 0)
3191                 return;
3192
3193         sdkp->ATO = 1;
3194
3195         return;
3196 }
3197
3198 /**
3199  * sd_read_block_limits - Query disk device for preferred I/O sizes.
3200  * @sdkp: disk to query
3201  */
3202 static void sd_read_block_limits(struct scsi_disk *sdkp)
3203 {
3204         struct scsi_vpd *vpd;
3205
3206         rcu_read_lock();
3207
3208         vpd = rcu_dereference(sdkp->device->vpd_pgb0);
3209         if (!vpd || vpd->len < 16)
3210                 goto out;
3211
3212         sdkp->min_xfer_blocks = get_unaligned_be16(&vpd->data[6]);
3213         sdkp->max_xfer_blocks = get_unaligned_be32(&vpd->data[8]);
3214         sdkp->opt_xfer_blocks = get_unaligned_be32(&vpd->data[12]);
3215
3216         if (vpd->len >= 64) {
3217                 unsigned int lba_count, desc_count;
3218
3219                 sdkp->max_ws_blocks = (u32)get_unaligned_be64(&vpd->data[36]);
3220
3221                 if (!sdkp->lbpme)
3222                         goto out;
3223
3224                 lba_count = get_unaligned_be32(&vpd->data[20]);
3225                 desc_count = get_unaligned_be32(&vpd->data[24]);
3226
3227                 if (lba_count && desc_count)
3228                         sdkp->max_unmap_blocks = lba_count;
3229
3230                 sdkp->unmap_granularity = get_unaligned_be32(&vpd->data[28]);
3231
3232                 if (vpd->data[32] & 0x80)
3233                         sdkp->unmap_alignment =
3234                                 get_unaligned_be32(&vpd->data[32]) & ~(1 << 31);
3235
3236                 if (!sdkp->lbpvpd) { /* LBP VPD page not provided */
3237
3238                         if (sdkp->max_unmap_blocks)
3239                                 sd_config_discard(sdkp, SD_LBP_UNMAP);
3240                         else
3241                                 sd_config_discard(sdkp, SD_LBP_WS16);
3242
3243                 } else {        /* LBP VPD page tells us what to use */
3244                         if (sdkp->lbpu && sdkp->max_unmap_blocks)
3245                                 sd_config_discard(sdkp, SD_LBP_UNMAP);
3246                         else if (sdkp->lbpws)
3247                                 sd_config_discard(sdkp, SD_LBP_WS16);
3248                         else if (sdkp->lbpws10)
3249                                 sd_config_discard(sdkp, SD_LBP_WS10);
3250                         else
3251                                 sd_config_discard(sdkp, SD_LBP_DISABLE);
3252                 }
3253         }
3254
3255  out:
3256         rcu_read_unlock();
3257 }
3258
3259 /* Parse the Block Limits Extension VPD page (0xb7) */
3260 static void sd_read_block_limits_ext(struct scsi_disk *sdkp)
3261 {
3262         struct scsi_vpd *vpd;
3263
3264         rcu_read_lock();
3265         vpd = rcu_dereference(sdkp->device->vpd_pgb7);
3266         if (vpd && vpd->len >= 2)
3267                 sdkp->rscs = vpd->data[5] & 1;
3268         rcu_read_unlock();
3269 }
3270
3271 /**
3272  * sd_read_block_characteristics - Query block dev. characteristics
3273  * @sdkp: disk to query
3274  */
3275 static void sd_read_block_characteristics(struct scsi_disk *sdkp)
3276 {
3277         struct request_queue *q = sdkp->disk->queue;
3278         struct scsi_vpd *vpd;
3279         u16 rot;
3280
3281         rcu_read_lock();
3282         vpd = rcu_dereference(sdkp->device->vpd_pgb1);
3283
3284         if (!vpd || vpd->len < 8) {
3285                 rcu_read_unlock();
3286                 return;
3287         }
3288
3289         rot = get_unaligned_be16(&vpd->data[4]);
3290         sdkp->zoned = (vpd->data[8] >> 4) & 3;
3291         rcu_read_unlock();
3292
3293         if (rot == 1) {
3294                 blk_queue_flag_set(QUEUE_FLAG_NONROT, q);
3295                 blk_queue_flag_clear(QUEUE_FLAG_ADD_RANDOM, q);
3296         }
3297
3298
3299 #ifdef CONFIG_BLK_DEV_ZONED /* sd_probe rejects ZBD devices early otherwise */
3300         if (sdkp->device->type == TYPE_ZBC) {
3301                 /*
3302                  * Host-managed.
3303                  */
3304                 disk_set_zoned(sdkp->disk);
3305
3306                 /*
3307                  * Per ZBC and ZAC specifications, writes in sequential write
3308                  * required zones of host-managed devices must be aligned to
3309                  * the device physical block size.
3310                  */
3311                 blk_queue_zone_write_granularity(q, sdkp->physical_block_size);
3312         } else {
3313                 /*
3314                  * Host-aware devices are treated as conventional.
3315                  */
3316                 WARN_ON_ONCE(blk_queue_is_zoned(q));
3317         }
3318 #endif /* CONFIG_BLK_DEV_ZONED */
3319
3320         if (!sdkp->first_scan)
3321                 return;
3322
3323         if (blk_queue_is_zoned(q))
3324                 sd_printk(KERN_NOTICE, sdkp, "Host-managed zoned block device\n");
3325         else if (sdkp->zoned == 1)
3326                 sd_printk(KERN_NOTICE, sdkp, "Host-aware SMR disk used as regular disk\n");
3327         else if (sdkp->zoned == 2)
3328                 sd_printk(KERN_NOTICE, sdkp, "Drive-managed SMR disk\n");
3329 }
3330
3331 /**
3332  * sd_read_block_provisioning - Query provisioning VPD page
3333  * @sdkp: disk to query
3334  */
3335 static void sd_read_block_provisioning(struct scsi_disk *sdkp)
3336 {
3337         struct scsi_vpd *vpd;
3338
3339         if (sdkp->lbpme == 0)
3340                 return;
3341
3342         rcu_read_lock();
3343         vpd = rcu_dereference(sdkp->device->vpd_pgb2);
3344
3345         if (!vpd || vpd->len < 8) {
3346                 rcu_read_unlock();
3347                 return;
3348         }
3349
3350         sdkp->lbpvpd    = 1;
3351         sdkp->lbpu      = (vpd->data[5] >> 7) & 1; /* UNMAP */
3352         sdkp->lbpws     = (vpd->data[5] >> 6) & 1; /* WRITE SAME(16) w/ UNMAP */
3353         sdkp->lbpws10   = (vpd->data[5] >> 5) & 1; /* WRITE SAME(10) w/ UNMAP */
3354         rcu_read_unlock();
3355 }
3356
3357 static void sd_read_write_same(struct scsi_disk *sdkp, unsigned char *buffer)
3358 {
3359         struct scsi_device *sdev = sdkp->device;
3360
3361         if (sdev->host->no_write_same) {
3362                 sdev->no_write_same = 1;
3363
3364                 return;
3365         }
3366
3367         if (scsi_report_opcode(sdev, buffer, SD_BUF_SIZE, INQUIRY, 0) < 0) {
3368                 struct scsi_vpd *vpd;
3369
3370                 sdev->no_report_opcodes = 1;
3371
3372                 /* Disable WRITE SAME if REPORT SUPPORTED OPERATION
3373                  * CODES is unsupported and the device has an ATA
3374                  * Information VPD page (SAT).
3375                  */
3376                 rcu_read_lock();
3377                 vpd = rcu_dereference(sdev->vpd_pg89);
3378                 if (vpd)
3379                         sdev->no_write_same = 1;
3380                 rcu_read_unlock();
3381         }
3382
3383         if (scsi_report_opcode(sdev, buffer, SD_BUF_SIZE, WRITE_SAME_16, 0) == 1)
3384                 sdkp->ws16 = 1;
3385
3386         if (scsi_report_opcode(sdev, buffer, SD_BUF_SIZE, WRITE_SAME, 0) == 1)
3387                 sdkp->ws10 = 1;
3388 }
3389
3390 static void sd_read_security(struct scsi_disk *sdkp, unsigned char *buffer)
3391 {
3392         struct scsi_device *sdev = sdkp->device;
3393
3394         if (!sdev->security_supported)
3395                 return;
3396
3397         if (scsi_report_opcode(sdev, buffer, SD_BUF_SIZE,
3398                         SECURITY_PROTOCOL_IN, 0) == 1 &&
3399             scsi_report_opcode(sdev, buffer, SD_BUF_SIZE,
3400                         SECURITY_PROTOCOL_OUT, 0) == 1)
3401                 sdkp->security = 1;
3402 }
3403
3404 static inline sector_t sd64_to_sectors(struct scsi_disk *sdkp, u8 *buf)
3405 {
3406         return logical_to_sectors(sdkp->device, get_unaligned_be64(buf));
3407 }
3408
3409 /**
3410  * sd_read_cpr - Query concurrent positioning ranges
3411  * @sdkp:       disk to query
3412  */
3413 static void sd_read_cpr(struct scsi_disk *sdkp)
3414 {
3415         struct blk_independent_access_ranges *iars = NULL;
3416         unsigned char *buffer = NULL;
3417         unsigned int nr_cpr = 0;
3418         int i, vpd_len, buf_len = SD_BUF_SIZE;
3419         u8 *desc;
3420
3421         /*
3422          * We need to have the capacity set first for the block layer to be
3423          * able to check the ranges.
3424          */
3425         if (sdkp->first_scan)
3426                 return;
3427
3428         if (!sdkp->capacity)
3429                 goto out;
3430
3431         /*
3432          * Concurrent Positioning Ranges VPD: there can be at most 256 ranges,
3433          * leading to a maximum page size of 64 + 256*32 bytes.
3434          */
3435         buf_len = 64 + 256*32;
3436         buffer = kmalloc(buf_len, GFP_KERNEL);
3437         if (!buffer || scsi_get_vpd_page(sdkp->device, 0xb9, buffer, buf_len))
3438                 goto out;
3439
3440         /* We must have at least a 64B header and one 32B range descriptor */
3441         vpd_len = get_unaligned_be16(&buffer[2]) + 4;
3442         if (vpd_len > buf_len || vpd_len < 64 + 32 || (vpd_len & 31)) {
3443                 sd_printk(KERN_ERR, sdkp,
3444                           "Invalid Concurrent Positioning Ranges VPD page\n");
3445                 goto out;
3446         }
3447
3448         nr_cpr = (vpd_len - 64) / 32;
3449         if (nr_cpr == 1) {
3450                 nr_cpr = 0;
3451                 goto out;
3452         }
3453
3454         iars = disk_alloc_independent_access_ranges(sdkp->disk, nr_cpr);
3455         if (!iars) {
3456                 nr_cpr = 0;
3457                 goto out;
3458         }
3459
3460         desc = &buffer[64];
3461         for (i = 0; i < nr_cpr; i++, desc += 32) {
3462                 if (desc[0] != i) {
3463                         sd_printk(KERN_ERR, sdkp,
3464                                 "Invalid Concurrent Positioning Range number\n");
3465                         nr_cpr = 0;
3466                         break;
3467                 }
3468
3469                 iars->ia_range[i].sector = sd64_to_sectors(sdkp, desc + 8);
3470                 iars->ia_range[i].nr_sectors = sd64_to_sectors(sdkp, desc + 16);
3471         }
3472
3473 out:
3474         disk_set_independent_access_ranges(sdkp->disk, iars);
3475         if (nr_cpr && sdkp->nr_actuators != nr_cpr) {
3476                 sd_printk(KERN_NOTICE, sdkp,
3477                           "%u concurrent positioning ranges\n", nr_cpr);
3478                 sdkp->nr_actuators = nr_cpr;
3479         }
3480
3481         kfree(buffer);
3482 }
3483
3484 static bool sd_validate_min_xfer_size(struct scsi_disk *sdkp)
3485 {
3486         struct scsi_device *sdp = sdkp->device;
3487         unsigned int min_xfer_bytes =
3488                 logical_to_bytes(sdp, sdkp->min_xfer_blocks);
3489
3490         if (sdkp->min_xfer_blocks == 0)
3491                 return false;
3492
3493         if (min_xfer_bytes & (sdkp->physical_block_size - 1)) {
3494                 sd_first_printk(KERN_WARNING, sdkp,
3495                                 "Preferred minimum I/O size %u bytes not a " \
3496                                 "multiple of physical block size (%u bytes)\n",
3497                                 min_xfer_bytes, sdkp->physical_block_size);
3498                 sdkp->min_xfer_blocks = 0;
3499                 return false;
3500         }
3501
3502         sd_first_printk(KERN_INFO, sdkp, "Preferred minimum I/O size %u bytes\n",
3503                         min_xfer_bytes);
3504         return true;
3505 }
3506
3507 /*
3508  * Determine the device's preferred I/O size for reads and writes
3509  * unless the reported value is unreasonably small, large, not a
3510  * multiple of the physical block size, or simply garbage.
3511  */
3512 static bool sd_validate_opt_xfer_size(struct scsi_disk *sdkp,
3513                                       unsigned int dev_max)
3514 {
3515         struct scsi_device *sdp = sdkp->device;
3516         unsigned int opt_xfer_bytes =
3517                 logical_to_bytes(sdp, sdkp->opt_xfer_blocks);
3518         unsigned int min_xfer_bytes =
3519                 logical_to_bytes(sdp, sdkp->min_xfer_blocks);
3520
3521         if (sdkp->opt_xfer_blocks == 0)
3522                 return false;
3523
3524         if (sdkp->opt_xfer_blocks > dev_max) {
3525                 sd_first_printk(KERN_WARNING, sdkp,
3526                                 "Optimal transfer size %u logical blocks " \
3527                                 "> dev_max (%u logical blocks)\n",
3528                                 sdkp->opt_xfer_blocks, dev_max);
3529                 return false;
3530         }
3531
3532         if (sdkp->opt_xfer_blocks > SD_DEF_XFER_BLOCKS) {
3533                 sd_first_printk(KERN_WARNING, sdkp,
3534                                 "Optimal transfer size %u logical blocks " \
3535                                 "> sd driver limit (%u logical blocks)\n",
3536                                 sdkp->opt_xfer_blocks, SD_DEF_XFER_BLOCKS);
3537                 return false;
3538         }
3539
3540         if (opt_xfer_bytes < PAGE_SIZE) {
3541                 sd_first_printk(KERN_WARNING, sdkp,
3542                                 "Optimal transfer size %u bytes < " \
3543                                 "PAGE_SIZE (%u bytes)\n",
3544                                 opt_xfer_bytes, (unsigned int)PAGE_SIZE);
3545                 return false;
3546         }
3547
3548         if (min_xfer_bytes && opt_xfer_bytes % min_xfer_bytes) {
3549                 sd_first_printk(KERN_WARNING, sdkp,
3550                                 "Optimal transfer size %u bytes not a " \
3551                                 "multiple of preferred minimum block " \
3552                                 "size (%u bytes)\n",
3553                                 opt_xfer_bytes, min_xfer_bytes);
3554                 return false;
3555         }
3556
3557         if (opt_xfer_bytes & (sdkp->physical_block_size - 1)) {
3558                 sd_first_printk(KERN_WARNING, sdkp,
3559                                 "Optimal transfer size %u bytes not a " \
3560                                 "multiple of physical block size (%u bytes)\n",
3561                                 opt_xfer_bytes, sdkp->physical_block_size);
3562                 return false;
3563         }
3564
3565         sd_first_printk(KERN_INFO, sdkp, "Optimal transfer size %u bytes\n",
3566                         opt_xfer_bytes);
3567         return true;
3568 }
3569
3570 static void sd_read_block_zero(struct scsi_disk *sdkp)
3571 {
3572         struct scsi_device *sdev = sdkp->device;
3573         unsigned int buf_len = sdev->sector_size;
3574         u8 *buffer, cmd[16] = { };
3575
3576         buffer = kmalloc(buf_len, GFP_KERNEL);
3577         if (!buffer)
3578                 return;
3579
3580         if (sdev->use_16_for_rw) {
3581                 cmd[0] = READ_16;
3582                 put_unaligned_be64(0, &cmd[2]); /* Logical block address 0 */
3583                 put_unaligned_be32(1, &cmd[10]);/* Transfer 1 logical block */
3584         } else {
3585                 cmd[0] = READ_10;
3586                 put_unaligned_be32(0, &cmd[2]); /* Logical block address 0 */
3587                 put_unaligned_be16(1, &cmd[7]); /* Transfer 1 logical block */
3588         }
3589
3590         scsi_execute_cmd(sdkp->device, cmd, REQ_OP_DRV_IN, buffer, buf_len,
3591                          SD_TIMEOUT, sdkp->max_retries, NULL);
3592         kfree(buffer);
3593 }
3594
3595 /**
3596  *      sd_revalidate_disk - called the first time a new disk is seen,
3597  *      performs disk spin up, read_capacity, etc.
3598  *      @disk: struct gendisk we care about
3599  **/
3600 static int sd_revalidate_disk(struct gendisk *disk)
3601 {
3602         struct scsi_disk *sdkp = scsi_disk(disk);
3603         struct scsi_device *sdp = sdkp->device;
3604         struct request_queue *q = sdkp->disk->queue;
3605         sector_t old_capacity = sdkp->capacity;
3606         unsigned char *buffer;
3607         unsigned int dev_max, rw_max;
3608
3609         SCSI_LOG_HLQUEUE(3, sd_printk(KERN_INFO, sdkp,
3610                                       "sd_revalidate_disk\n"));
3611
3612         /*
3613          * If the device is offline, don't try and read capacity or any
3614          * of the other niceties.
3615          */
3616         if (!scsi_device_online(sdp))
3617                 goto out;
3618
3619         buffer = kmalloc(SD_BUF_SIZE, GFP_KERNEL);
3620         if (!buffer) {
3621                 sd_printk(KERN_WARNING, sdkp, "sd_revalidate_disk: Memory "
3622                           "allocation failure.\n");
3623                 goto out;
3624         }
3625
3626         sd_spinup_disk(sdkp);
3627
3628         /*
3629          * Without media there is no reason to ask; moreover, some devices
3630          * react badly if we do.
3631          */
3632         if (sdkp->media_present) {
3633                 sd_read_capacity(sdkp, buffer);
3634                 /*
3635                  * Some USB/UAS devices return generic values for mode pages
3636                  * until the media has been accessed. Trigger a READ operation
3637                  * to force the device to populate mode pages.
3638                  */
3639                 if (sdp->read_before_ms)
3640                         sd_read_block_zero(sdkp);
3641                 /*
3642                  * set the default to rotational.  All non-rotational devices
3643                  * support the block characteristics VPD page, which will
3644                  * cause this to be updated correctly and any device which
3645                  * doesn't support it should be treated as rotational.
3646                  */
3647                 blk_queue_flag_clear(QUEUE_FLAG_NONROT, q);
3648                 blk_queue_flag_set(QUEUE_FLAG_ADD_RANDOM, q);
3649
3650                 if (scsi_device_supports_vpd(sdp)) {
3651                         sd_read_block_provisioning(sdkp);
3652                         sd_read_block_limits(sdkp);
3653                         sd_read_block_limits_ext(sdkp);
3654                         sd_read_block_characteristics(sdkp);
3655                         sd_zbc_read_zones(sdkp, buffer);
3656                         sd_read_cpr(sdkp);
3657                 }
3658
3659                 sd_print_capacity(sdkp, old_capacity);
3660
3661                 sd_read_write_protect_flag(sdkp, buffer);
3662                 sd_read_cache_type(sdkp, buffer);
3663                 sd_read_io_hints(sdkp, buffer);
3664                 sd_read_app_tag_own(sdkp, buffer);
3665                 sd_read_write_same(sdkp, buffer);
3666                 sd_read_security(sdkp, buffer);
3667                 sd_config_protection(sdkp);
3668         }
3669
3670         /*
3671          * We now have all cache related info, determine how we deal
3672          * with flush requests.
3673          */
3674         sd_set_flush_flag(sdkp);
3675
3676         /* Initial block count limit based on CDB TRANSFER LENGTH field size. */
3677         dev_max = sdp->use_16_for_rw ? SD_MAX_XFER_BLOCKS : SD_DEF_XFER_BLOCKS;
3678
3679         /* Some devices report a maximum block count for READ/WRITE requests. */
3680         dev_max = min_not_zero(dev_max, sdkp->max_xfer_blocks);
3681         q->limits.max_dev_sectors = logical_to_sectors(sdp, dev_max);
3682
3683         if (sd_validate_min_xfer_size(sdkp))
3684                 blk_queue_io_min(sdkp->disk->queue,
3685                                  logical_to_bytes(sdp, sdkp->min_xfer_blocks));
3686         else
3687                 blk_queue_io_min(sdkp->disk->queue, 0);
3688
3689         if (sd_validate_opt_xfer_size(sdkp, dev_max)) {
3690                 q->limits.io_opt = logical_to_bytes(sdp, sdkp->opt_xfer_blocks);
3691                 rw_max = logical_to_sectors(sdp, sdkp->opt_xfer_blocks);
3692         } else {
3693                 q->limits.io_opt = 0;
3694                 rw_max = min_not_zero(logical_to_sectors(sdp, dev_max),
3695                                       (sector_t)BLK_DEF_MAX_SECTORS_CAP);
3696         }
3697
3698         /*
3699          * Limit default to SCSI host optimal sector limit if set. There may be
3700          * an impact on performance for when the size of a request exceeds this
3701          * host limit.
3702          */
3703         rw_max = min_not_zero(rw_max, sdp->host->opt_sectors);
3704
3705         /* Do not exceed controller limit */
3706         rw_max = min(rw_max, queue_max_hw_sectors(q));
3707
3708         /*
3709          * Only update max_sectors if previously unset or if the current value
3710          * exceeds the capabilities of the hardware.
3711          */
3712         if (sdkp->first_scan ||
3713             q->limits.max_sectors > q->limits.max_dev_sectors ||
3714             q->limits.max_sectors > q->limits.max_hw_sectors) {
3715                 q->limits.max_sectors = rw_max;
3716                 q->limits.max_user_sectors = rw_max;
3717         }
3718
3719         sdkp->first_scan = 0;
3720
3721         set_capacity_and_notify(disk, logical_to_sectors(sdp, sdkp->capacity));
3722         sd_config_write_same(sdkp);
3723         kfree(buffer);
3724
3725         /*
3726          * For a zoned drive, revalidating the zones can be done only once
3727          * the gendisk capacity is set. So if this fails, set back the gendisk
3728          * capacity to 0.
3729          */
3730         if (sd_zbc_revalidate_zones(sdkp))
3731                 set_capacity_and_notify(disk, 0);
3732
3733  out:
3734         return 0;
3735 }
3736
3737 /**
3738  *      sd_unlock_native_capacity - unlock native capacity
3739  *      @disk: struct gendisk to set capacity for
3740  *
3741  *      Block layer calls this function if it detects that partitions
3742  *      on @disk reach beyond the end of the device.  If the SCSI host
3743  *      implements ->unlock_native_capacity() method, it's invoked to
3744  *      give it a chance to adjust the device capacity.
3745  *
3746  *      CONTEXT:
3747  *      Defined by block layer.  Might sleep.
3748  */
3749 static void sd_unlock_native_capacity(struct gendisk *disk)
3750 {
3751         struct scsi_device *sdev = scsi_disk(disk)->device;
3752
3753         if (sdev->host->hostt->unlock_native_capacity)
3754                 sdev->host->hostt->unlock_native_capacity(sdev);
3755 }
3756
3757 /**
3758  *      sd_format_disk_name - format disk name
3759  *      @prefix: name prefix - ie. "sd" for SCSI disks
3760  *      @index: index of the disk to format name for
3761  *      @buf: output buffer
3762  *      @buflen: length of the output buffer
3763  *
3764  *      SCSI disk names starts at sda.  The 26th device is sdz and the
3765  *      27th is sdaa.  The last one for two lettered suffix is sdzz
3766  *      which is followed by sdaaa.
3767  *
3768  *      This is basically 26 base counting with one extra 'nil' entry
3769  *      at the beginning from the second digit on and can be
3770  *      determined using similar method as 26 base conversion with the
3771  *      index shifted -1 after each digit is computed.
3772  *
3773  *      CONTEXT:
3774  *      Don't care.
3775  *
3776  *      RETURNS:
3777  *      0 on success, -errno on failure.
3778  */
3779 static int sd_format_disk_name(char *prefix, int index, char *buf, int buflen)
3780 {
3781         const int base = 'z' - 'a' + 1;
3782         char *begin = buf + strlen(prefix);
3783         char *end = buf + buflen;
3784         char *p;
3785         int unit;
3786
3787         p = end - 1;
3788         *p = '\0';
3789         unit = base;
3790         do {
3791                 if (p == begin)
3792                         return -EINVAL;
3793                 *--p = 'a' + (index % unit);
3794                 index = (index / unit) - 1;
3795         } while (index >= 0);
3796
3797         memmove(begin, p, end - p);
3798         memcpy(buf, prefix, strlen(prefix));
3799
3800         return 0;
3801 }
3802
3803 /**
3804  *      sd_probe - called during driver initialization and whenever a
3805  *      new scsi device is attached to the system. It is called once
3806  *      for each scsi device (not just disks) present.
3807  *      @dev: pointer to device object
3808  *
3809  *      Returns 0 if successful (or not interested in this scsi device 
3810  *      (e.g. scanner)); 1 when there is an error.
3811  *
3812  *      Note: this function is invoked from the scsi mid-level.
3813  *      This function sets up the mapping between a given 
3814  *      <host,channel,id,lun> (found in sdp) and new device name 
3815  *      (e.g. /dev/sda). More precisely it is the block device major 
3816  *      and minor number that is chosen here.
3817  *
3818  *      Assume sd_probe is not re-entrant (for time being)
3819  *      Also think about sd_probe() and sd_remove() running coincidentally.
3820  **/
3821 static int sd_probe(struct device *dev)
3822 {
3823         struct scsi_device *sdp = to_scsi_device(dev);
3824         struct scsi_disk *sdkp;
3825         struct gendisk *gd;
3826         int index;
3827         int error;
3828
3829         scsi_autopm_get_device(sdp);
3830         error = -ENODEV;
3831         if (sdp->type != TYPE_DISK &&
3832             sdp->type != TYPE_ZBC &&
3833             sdp->type != TYPE_MOD &&
3834             sdp->type != TYPE_RBC)
3835                 goto out;
3836
3837         if (!IS_ENABLED(CONFIG_BLK_DEV_ZONED) && sdp->type == TYPE_ZBC) {
3838                 sdev_printk(KERN_WARNING, sdp,
3839                             "Unsupported ZBC host-managed device.\n");
3840                 goto out;
3841         }
3842
3843         SCSI_LOG_HLQUEUE(3, sdev_printk(KERN_INFO, sdp,
3844                                         "sd_probe\n"));
3845
3846         error = -ENOMEM;
3847         sdkp = kzalloc(sizeof(*sdkp), GFP_KERNEL);
3848         if (!sdkp)
3849                 goto out;
3850
3851         gd = blk_mq_alloc_disk_for_queue(sdp->request_queue,
3852                                          &sd_bio_compl_lkclass);
3853         if (!gd)
3854                 goto out_free;
3855
3856         index = ida_alloc(&sd_index_ida, GFP_KERNEL);
3857         if (index < 0) {
3858                 sdev_printk(KERN_WARNING, sdp, "sd_probe: memory exhausted.\n");
3859                 goto out_put;
3860         }
3861
3862         error = sd_format_disk_name("sd", index, gd->disk_name, DISK_NAME_LEN);
3863         if (error) {
3864                 sdev_printk(KERN_WARNING, sdp, "SCSI disk (sd) name length exceeded.\n");
3865                 goto out_free_index;
3866         }
3867
3868         sdkp->device = sdp;
3869         sdkp->disk = gd;
3870         sdkp->index = index;
3871         sdkp->max_retries = SD_MAX_RETRIES;
3872         atomic_set(&sdkp->openers, 0);
3873         atomic_set(&sdkp->device->ioerr_cnt, 0);
3874
3875         if (!sdp->request_queue->rq_timeout) {
3876                 if (sdp->type != TYPE_MOD)
3877                         blk_queue_rq_timeout(sdp->request_queue, SD_TIMEOUT);
3878                 else
3879                         blk_queue_rq_timeout(sdp->request_queue,
3880                                              SD_MOD_TIMEOUT);
3881         }
3882
3883         device_initialize(&sdkp->disk_dev);
3884         sdkp->disk_dev.parent = get_device(dev);
3885         sdkp->disk_dev.class = &sd_disk_class;
3886         dev_set_name(&sdkp->disk_dev, "%s", dev_name(dev));
3887
3888         error = device_add(&sdkp->disk_dev);
3889         if (error) {
3890                 put_device(&sdkp->disk_dev);
3891                 goto out;
3892         }
3893
3894         dev_set_drvdata(dev, sdkp);
3895
3896         gd->major = sd_major((index & 0xf0) >> 4);
3897         gd->first_minor = ((index & 0xf) << 4) | (index & 0xfff00);
3898         gd->minors = SD_MINORS;
3899
3900         gd->fops = &sd_fops;
3901         gd->private_data = sdkp;
3902
3903         /* defaults, until the device tells us otherwise */
3904         sdp->sector_size = 512;
3905         sdkp->capacity = 0;
3906         sdkp->media_present = 1;
3907         sdkp->write_prot = 0;
3908         sdkp->cache_override = 0;
3909         sdkp->WCE = 0;
3910         sdkp->RCD = 0;
3911         sdkp->ATO = 0;
3912         sdkp->first_scan = 1;
3913         sdkp->max_medium_access_timeouts = SD_MAX_MEDIUM_TIMEOUTS;
3914
3915         sd_revalidate_disk(gd);
3916
3917         if (sdp->removable) {
3918                 gd->flags |= GENHD_FL_REMOVABLE;
3919                 gd->events |= DISK_EVENT_MEDIA_CHANGE;
3920                 gd->event_flags = DISK_EVENT_FLAG_POLL | DISK_EVENT_FLAG_UEVENT;
3921         }
3922
3923         blk_pm_runtime_init(sdp->request_queue, dev);
3924         if (sdp->rpm_autosuspend) {
3925                 pm_runtime_set_autosuspend_delay(dev,
3926                         sdp->host->rpm_autosuspend_delay);
3927         }
3928
3929         error = device_add_disk(dev, gd, NULL);
3930         if (error) {
3931                 device_unregister(&sdkp->disk_dev);
3932                 put_disk(gd);
3933                 goto out;
3934         }
3935
3936         if (sdkp->security) {
3937                 sdkp->opal_dev = init_opal_dev(sdkp, &sd_sec_submit);
3938                 if (sdkp->opal_dev)
3939                         sd_printk(KERN_NOTICE, sdkp, "supports TCG Opal\n");
3940         }
3941
3942         sd_printk(KERN_NOTICE, sdkp, "Attached SCSI %sdisk\n",
3943                   sdp->removable ? "removable " : "");
3944         scsi_autopm_put_device(sdp);
3945
3946         return 0;
3947
3948  out_free_index:
3949         ida_free(&sd_index_ida, index);
3950  out_put:
3951         put_disk(gd);
3952  out_free:
3953         kfree(sdkp);
3954  out:
3955         scsi_autopm_put_device(sdp);
3956         return error;
3957 }
3958
3959 /**
3960  *      sd_remove - called whenever a scsi disk (previously recognized by
3961  *      sd_probe) is detached from the system. It is called (potentially
3962  *      multiple times) during sd module unload.
3963  *      @dev: pointer to device object
3964  *
3965  *      Note: this function is invoked from the scsi mid-level.
3966  *      This function potentially frees up a device name (e.g. /dev/sdc)
3967  *      that could be re-used by a subsequent sd_probe().
3968  *      This function is not called when the built-in sd driver is "exit-ed".
3969  **/
3970 static int sd_remove(struct device *dev)
3971 {
3972         struct scsi_disk *sdkp = dev_get_drvdata(dev);
3973
3974         scsi_autopm_get_device(sdkp->device);
3975
3976         device_del(&sdkp->disk_dev);
3977         del_gendisk(sdkp->disk);
3978         if (!sdkp->suspended)
3979                 sd_shutdown(dev);
3980
3981         put_disk(sdkp->disk);
3982         return 0;
3983 }
3984
3985 static void scsi_disk_release(struct device *dev)
3986 {
3987         struct scsi_disk *sdkp = to_scsi_disk(dev);
3988
3989         ida_free(&sd_index_ida, sdkp->index);
3990         put_device(&sdkp->device->sdev_gendev);
3991         free_opal_dev(sdkp->opal_dev);
3992
3993         kfree(sdkp);
3994 }
3995
3996 static int sd_start_stop_device(struct scsi_disk *sdkp, int start)
3997 {
3998         unsigned char cmd[6] = { START_STOP };  /* START_VALID */
3999         struct scsi_sense_hdr sshdr;
4000         const struct scsi_exec_args exec_args = {
4001                 .sshdr = &sshdr,
4002                 .req_flags = BLK_MQ_REQ_PM,
4003         };
4004         struct scsi_device *sdp = sdkp->device;
4005         int res;
4006
4007         if (start)
4008                 cmd[4] |= 1;    /* START */
4009
4010         if (sdp->start_stop_pwr_cond)
4011                 cmd[4] |= start ? 1 << 4 : 3 << 4;      /* Active or Standby */
4012
4013         if (!scsi_device_online(sdp))
4014                 return -ENODEV;
4015
4016         res = scsi_execute_cmd(sdp, cmd, REQ_OP_DRV_IN, NULL, 0, SD_TIMEOUT,
4017                                sdkp->max_retries, &exec_args);
4018         if (res) {
4019                 sd_print_result(sdkp, "Start/Stop Unit failed", res);
4020                 if (res > 0 && scsi_sense_valid(&sshdr)) {
4021                         sd_print_sense_hdr(sdkp, &sshdr);
4022                         /* 0x3a is medium not present */
4023                         if (sshdr.asc == 0x3a)
4024                                 res = 0;
4025                 }
4026         }
4027
4028         /* SCSI error codes must not go to the generic layer */
4029         if (res)
4030                 return -EIO;
4031
4032         return 0;
4033 }
4034
4035 /*
4036  * Send a SYNCHRONIZE CACHE instruction down to the device through
4037  * the normal SCSI command structure.  Wait for the command to
4038  * complete.
4039  */
4040 static void sd_shutdown(struct device *dev)
4041 {
4042         struct scsi_disk *sdkp = dev_get_drvdata(dev);
4043
4044         if (!sdkp)
4045                 return;         /* this can happen */
4046
4047         if (pm_runtime_suspended(dev))
4048                 return;
4049
4050         if (sdkp->WCE && sdkp->media_present) {
4051                 sd_printk(KERN_NOTICE, sdkp, "Synchronizing SCSI cache\n");
4052                 sd_sync_cache(sdkp);
4053         }
4054
4055         if ((system_state != SYSTEM_RESTART &&
4056              sdkp->device->manage_system_start_stop) ||
4057             (system_state == SYSTEM_POWER_OFF &&
4058              sdkp->device->manage_shutdown)) {
4059                 sd_printk(KERN_NOTICE, sdkp, "Stopping disk\n");
4060                 sd_start_stop_device(sdkp, 0);
4061         }
4062 }
4063
4064 static inline bool sd_do_start_stop(struct scsi_device *sdev, bool runtime)
4065 {
4066         return (sdev->manage_system_start_stop && !runtime) ||
4067                 (sdev->manage_runtime_start_stop && runtime);
4068 }
4069
4070 static int sd_suspend_common(struct device *dev, bool runtime)
4071 {
4072         struct scsi_disk *sdkp = dev_get_drvdata(dev);
4073         int ret = 0;
4074
4075         if (!sdkp)      /* E.g.: runtime suspend following sd_remove() */
4076                 return 0;
4077
4078         if (sdkp->WCE && sdkp->media_present) {
4079                 if (!sdkp->device->silence_suspend)
4080                         sd_printk(KERN_NOTICE, sdkp, "Synchronizing SCSI cache\n");
4081                 ret = sd_sync_cache(sdkp);
4082                 /* ignore OFFLINE device */
4083                 if (ret == -ENODEV)
4084                         return 0;
4085
4086                 if (ret)
4087                         return ret;
4088         }
4089
4090         if (sd_do_start_stop(sdkp->device, runtime)) {
4091                 if (!sdkp->device->silence_suspend)
4092                         sd_printk(KERN_NOTICE, sdkp, "Stopping disk\n");
4093                 /* an error is not worth aborting a system sleep */
4094                 ret = sd_start_stop_device(sdkp, 0);
4095                 if (!runtime)
4096                         ret = 0;
4097         }
4098
4099         if (!ret)
4100                 sdkp->suspended = true;
4101
4102         return ret;
4103 }
4104
4105 static int sd_suspend_system(struct device *dev)
4106 {
4107         if (pm_runtime_suspended(dev))
4108                 return 0;
4109
4110         return sd_suspend_common(dev, false);
4111 }
4112
4113 static int sd_suspend_runtime(struct device *dev)
4114 {
4115         return sd_suspend_common(dev, true);
4116 }
4117
4118 static int sd_resume(struct device *dev)
4119 {
4120         struct scsi_disk *sdkp = dev_get_drvdata(dev);
4121
4122         sd_printk(KERN_NOTICE, sdkp, "Starting disk\n");
4123
4124         if (opal_unlock_from_suspend(sdkp->opal_dev)) {
4125                 sd_printk(KERN_NOTICE, sdkp, "OPAL unlock failed\n");
4126                 return -EIO;
4127         }
4128
4129         return 0;
4130 }
4131
4132 static int sd_resume_common(struct device *dev, bool runtime)
4133 {
4134         struct scsi_disk *sdkp = dev_get_drvdata(dev);
4135         int ret;
4136
4137         if (!sdkp)      /* E.g.: runtime resume at the start of sd_probe() */
4138                 return 0;
4139
4140         if (!sd_do_start_stop(sdkp->device, runtime)) {
4141                 sdkp->suspended = false;
4142                 return 0;
4143         }
4144
4145         sd_printk(KERN_NOTICE, sdkp, "Starting disk\n");
4146         ret = sd_start_stop_device(sdkp, 1);
4147         if (!ret) {
4148                 sd_resume(dev);
4149                 sdkp->suspended = false;
4150         }
4151
4152         return ret;
4153 }
4154
4155 static int sd_resume_system(struct device *dev)
4156 {
4157         if (pm_runtime_suspended(dev)) {
4158                 struct scsi_disk *sdkp = dev_get_drvdata(dev);
4159                 struct scsi_device *sdp = sdkp ? sdkp->device : NULL;
4160
4161                 if (sdp && sdp->force_runtime_start_on_system_start)
4162                         pm_request_resume(dev);
4163
4164                 return 0;
4165         }
4166
4167         return sd_resume_common(dev, false);
4168 }
4169
4170 static int sd_resume_runtime(struct device *dev)
4171 {
4172         struct scsi_disk *sdkp = dev_get_drvdata(dev);
4173         struct scsi_device *sdp;
4174
4175         if (!sdkp)      /* E.g.: runtime resume at the start of sd_probe() */
4176                 return 0;
4177
4178         sdp = sdkp->device;
4179
4180         if (sdp->ignore_media_change) {
4181                 /* clear the device's sense data */
4182                 static const u8 cmd[10] = { REQUEST_SENSE };
4183                 const struct scsi_exec_args exec_args = {
4184                         .req_flags = BLK_MQ_REQ_PM,
4185                 };
4186
4187                 if (scsi_execute_cmd(sdp, cmd, REQ_OP_DRV_IN, NULL, 0,
4188                                      sdp->request_queue->rq_timeout, 1,
4189                                      &exec_args))
4190                         sd_printk(KERN_NOTICE, sdkp,
4191                                   "Failed to clear sense data\n");
4192         }
4193
4194         return sd_resume_common(dev, true);
4195 }
4196
4197 static const struct dev_pm_ops sd_pm_ops = {
4198         .suspend                = sd_suspend_system,
4199         .resume                 = sd_resume_system,
4200         .poweroff               = sd_suspend_system,
4201         .restore                = sd_resume_system,
4202         .runtime_suspend        = sd_suspend_runtime,
4203         .runtime_resume         = sd_resume_runtime,
4204 };
4205
4206 static struct scsi_driver sd_template = {
4207         .gendrv = {
4208                 .name           = "sd",
4209                 .probe          = sd_probe,
4210                 .probe_type     = PROBE_PREFER_ASYNCHRONOUS,
4211                 .remove         = sd_remove,
4212                 .shutdown       = sd_shutdown,
4213                 .pm             = &sd_pm_ops,
4214         },
4215         .rescan                 = sd_rescan,
4216         .resume                 = sd_resume,
4217         .init_command           = sd_init_command,
4218         .uninit_command         = sd_uninit_command,
4219         .done                   = sd_done,
4220         .eh_action              = sd_eh_action,
4221         .eh_reset               = sd_eh_reset,
4222 };
4223
4224 /**
4225  *      init_sd - entry point for this driver (both when built in or when
4226  *      a module).
4227  *
4228  *      Note: this function registers this driver with the scsi mid-level.
4229  **/
4230 static int __init init_sd(void)
4231 {
4232         int majors = 0, i, err;
4233
4234         SCSI_LOG_HLQUEUE(3, printk("init_sd: sd driver entry point\n"));
4235
4236         for (i = 0; i < SD_MAJORS; i++) {
4237                 if (__register_blkdev(sd_major(i), "sd", sd_default_probe))
4238                         continue;
4239                 majors++;
4240         }
4241
4242         if (!majors)
4243                 return -ENODEV;
4244
4245         err = class_register(&sd_disk_class);
4246         if (err)
4247                 goto err_out;
4248
4249         sd_page_pool = mempool_create_page_pool(SD_MEMPOOL_SIZE, 0);
4250         if (!sd_page_pool) {
4251                 printk(KERN_ERR "sd: can't init discard page pool\n");
4252                 err = -ENOMEM;
4253                 goto err_out_class;
4254         }
4255
4256         err = scsi_register_driver(&sd_template.gendrv);
4257         if (err)
4258                 goto err_out_driver;
4259
4260         return 0;
4261
4262 err_out_driver:
4263         mempool_destroy(sd_page_pool);
4264 err_out_class:
4265         class_unregister(&sd_disk_class);
4266 err_out:
4267         for (i = 0; i < SD_MAJORS; i++)
4268                 unregister_blkdev(sd_major(i), "sd");
4269         return err;
4270 }
4271
4272 /**
4273  *      exit_sd - exit point for this driver (when it is a module).
4274  *
4275  *      Note: this function unregisters this driver from the scsi mid-level.
4276  **/
4277 static void __exit exit_sd(void)
4278 {
4279         int i;
4280
4281         SCSI_LOG_HLQUEUE(3, printk("exit_sd: exiting sd driver\n"));
4282
4283         scsi_unregister_driver(&sd_template.gendrv);
4284         mempool_destroy(sd_page_pool);
4285
4286         class_unregister(&sd_disk_class);
4287
4288         for (i = 0; i < SD_MAJORS; i++)
4289                 unregister_blkdev(sd_major(i), "sd");
4290 }
4291
4292 module_init(init_sd);
4293 module_exit(exit_sd);
4294
4295 void sd_print_sense_hdr(struct scsi_disk *sdkp, struct scsi_sense_hdr *sshdr)
4296 {
4297         scsi_print_sense_hdr(sdkp->device,
4298                              sdkp->disk ? sdkp->disk->disk_name : NULL, sshdr);
4299 }
4300
4301 void sd_print_result(const struct scsi_disk *sdkp, const char *msg, int result)
4302 {
4303         const char *hb_string = scsi_hostbyte_string(result);
4304
4305         if (hb_string)
4306                 sd_printk(KERN_INFO, sdkp,
4307                           "%s: Result: hostbyte=%s driverbyte=%s\n", msg,
4308                           hb_string ? hb_string : "invalid",
4309                           "DRIVER_OK");
4310         else
4311                 sd_printk(KERN_INFO, sdkp,
4312                           "%s: Result: hostbyte=0x%02x driverbyte=%s\n",
4313                           msg, host_byte(result), "DRIVER_OK");
4314 }
This page took 0.335264 seconds and 4 git commands to generate.