Pull SCSI updates from James Bottomley: "This consists of the usual driver updates (ufs, qla2xxx, tcmu, lpfc, hpsa, zfcp, scsi_debug) and minor bug fixes. We also have a huge docbook fix update like most other subsystems and no major update to the core (the few non trivial updates are either minor fixes or removing an unused feature [scsi_sdb_cache])" * tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi: (307 commits) scsi: scsi_transport_srp: Sanitize scsi_target_block/unblock sequences scsi: ufs-mediatek: Apply DELAY_AFTER_LPM quirk to Micron devices scsi: ufs: Introduce device quirk "DELAY_AFTER_LPM" scsi: virtio-scsi: Correctly handle the case where all LUNs are unplugged scsi: scsi_debug: Implement tur_ms_to_ready parameter scsi: scsi_debug: Fix request sense scsi: lpfc: Fix typo in comment for ULP scsi: ufs-mediatek: Prevent LPM operation on undeclared VCC scsi: iscsi: Do not put host in iscsi_set_flashnode_param() scsi: hpsa: Correct ctrl queue depth scsi: target: tcmu: Make TMR notification optional scsi: target: tcmu: Implement tmr_notify callback scsi: target: tcmu: Fix and simplify timeout handling scsi: target: tcmu: Factor out new helper ring_insert_padding scsi: target: tcmu: Do not queue aborted commands scsi: target: tcmu: Use priv pointer in se_cmd scsi: target: Add tmr_notify backend function scsi: target: Modify core_tmr_abort_task() scsi: target: iscsi: Fix inconsistent debug message scsi: target: iscsi: Fix login error when receiving ...
Showing the changes to include (10 of 221 files). Show all
Unified · Split
| @@ -44,6 +44,13 @@ enum qcom_scm_sec_dev_id { · 43 unmodified lines | ||
| 44 | 44 | QCOM_SCM_ICE_DEV_ID = 20, |
| 45 | 45 | }; |
| 46 | 46 | |
| 47 | +enum qcom_scm_ice_cipher { | |
| 48 | + QCOM_SCM_ICE_CIPHER_AES_128_XTS = 0, | |
| 49 | + QCOM_SCM_ICE_CIPHER_AES_128_CBC = 1, | |
| 50 | + QCOM_SCM_ICE_CIPHER_AES_256_XTS = 3, | |
| 51 | + QCOM_SCM_ICE_CIPHER_AES_256_CBC = 4, | |
| 52 | +}; | |
| 53 | + | |
| 47 | 54 | #define QCOM_SCM_VMID_HLOS 0x3 |
| 48 | 55 | #define QCOM_SCM_VMID_MSS_MSA 0xF |
| 49 | 56 | #define QCOM_SCM_VMID_WLAN 0x18 |
| @@ -88,6 +95,12 @@ extern int qcom_scm_ocmem_lock(enum qcom_scm_ocmem_client id, u32 offset, · 38 unmodified lines | ||
| 88 | 95 | extern int qcom_scm_ocmem_unlock(enum qcom_scm_ocmem_client id, u32 offset, |
| 89 | 96 | u32 size); |
| 90 | 97 | |
| 98 | +extern bool qcom_scm_ice_available(void); | |
| 99 | +extern int qcom_scm_ice_invalidate_key(u32 index); | |
| 100 | +extern int qcom_scm_ice_set_key(u32 index, const u8 *key, u32 key_size, | |
| 101 | + enum qcom_scm_ice_cipher cipher, | |
| 102 | + u32 data_unit_size); | |
| 103 | + | |
| 91 | 104 | extern bool qcom_scm_hdcp_available(void); |
| 92 | 105 | extern int qcom_scm_hdcp_req(struct qcom_scm_hdcp_req *req, u32 req_cnt, |
| 93 | 106 | u32 *resp); |
| @@ -138,6 +151,12 @@ static inline int qcom_scm_ocmem_lock(enum qcom_scm_ocmem_client id, u32 offset, · 44 unmodified lines | ||
| 138 | 151 | static inline int qcom_scm_ocmem_unlock(enum qcom_scm_ocmem_client id, |
| 139 | 152 | u32 offset, u32 size) { return -ENODEV; } |
| 140 | 153 | |
| 154 | +static inline bool qcom_scm_ice_available(void) { return false; } | |
| 155 | +static inline int qcom_scm_ice_invalidate_key(u32 index) { return -ENODEV; } | |
| 156 | +static inline int qcom_scm_ice_set_key(u32 index, const u8 *key, u32 key_size, | |
| 157 | + enum qcom_scm_ice_cipher cipher, | |
| 158 | + u32 data_unit_size) { return -ENODEV; } | |
| 159 | + | |
| 141 | 160 | static inline bool qcom_scm_hdcp_available(void) { return false; } |
| 142 | 161 | static inline int qcom_scm_hdcp_req(struct qcom_scm_hdcp_req *req, u32 req_cnt, |
| 143 | 162 | u32 *resp) { return -ENODEV; } |
| @@ -63,8 +63,8 @@ enum fc_fdmi_hba_attr_type { · 62 unmodified lines | ||
| 63 | 63 | * HBA Attribute Length |
| 64 | 64 | */ |
| 65 | 65 | #define FC_FDMI_HBA_ATTR_NODENAME_LEN 8 |
| 66 | −#define FC_FDMI_HBA_ATTR_MANUFACTURER_LEN 64 | |
| 67 | −#define FC_FDMI_HBA_ATTR_SERIALNUMBER_LEN 64 | |
| 66 | +#define FC_FDMI_HBA_ATTR_MANUFACTURER_LEN 80 | |
| 67 | +#define FC_FDMI_HBA_ATTR_SERIALNUMBER_LEN 80 | |
| 68 | 68 | #define FC_FDMI_HBA_ATTR_MODEL_LEN 256 |
| 69 | 69 | #define FC_FDMI_HBA_ATTR_MODELDESCR_LEN 256 |
| 70 | 70 | #define FC_FDMI_HBA_ATTR_HARDWAREVERSION_LEN 256 |
| @@ -34,7 +34,7 @@ static inline struct scsi_cmnd *scsi_host_find_tag(struct Scsi_Host *shost, · 33 unmodified lines | ||
| 34 | 34 | blk_mq_unique_tag_to_tag(tag)); |
| 35 | 35 | } |
| 36 | 36 | |
| 37 | − if (!req) | |
| 37 | + if (!req || !blk_mq_request_started(req)) | |
| 38 | 38 | return NULL; |
| 39 | 39 | return blk_mq_rq_to_pdu(req); |
| 40 | 40 | } |
| @@ -57,7 +57,7 @@ struct iscsi_bus_flash_conn; · 56 unmodified lines | ||
| 57 | 57 | * When not offloading the data path, this is called |
| 58 | 58 | * from the scsi work queue without the session lock. |
| 59 | 59 | * @xmit_task Requests LLD to transfer cmd task. Returns 0 or the |
| 60 | − * the number of bytes transferred on success, and -Exyz | |
| 60 | + * number of bytes transferred on success, and -Exyz | |
| 61 | 61 | * value on error. When offloading the data path, this |
| 62 | 62 | * is called from queuecommand with the session lock, or |
| 63 | 63 | * from the iscsi_conn_send_pdu context with the session |
| @@ -556,10 +556,11 @@ struct iscsi_conn { · 555 unmodified lines | ||
| 556 | 556 | struct socket *sock; |
| 557 | 557 | void (*orig_data_ready)(struct sock *); |
| 558 | 558 | void (*orig_state_change)(struct sock *); |
| 559 | −#define LOGIN_FLAGS_READ_ACTIVE 1 | |
| 560 | −#define LOGIN_FLAGS_CLOSED 2 | |
| 561 | −#define LOGIN_FLAGS_READY 4 | |
| 562 | −#define LOGIN_FLAGS_INITIAL_PDU 8 | |
| 559 | +#define LOGIN_FLAGS_READY 0 | |
| 560 | +#define LOGIN_FLAGS_INITIAL_PDU 1 | |
| 561 | +#define LOGIN_FLAGS_READ_ACTIVE 2 | |
| 562 | +#define LOGIN_FLAGS_WRITE_ACTIVE 3 | |
| 563 | +#define LOGIN_FLAGS_CLOSED 4 | |
| 563 | 564 | unsigned long login_flags; |
| 564 | 565 | struct delayed_work login_work; |
| 565 | 566 | struct iscsi_login *login; |
| @@ -40,6 +40,8 @@ struct target_backend_ops { · 39 unmodified lines | ||
| 40 | 40 | ssize_t (*show_configfs_dev_params)(struct se_device *, char *); |
| 41 | 41 | |
| 42 | 42 | sense_reason_t (*parse_cdb)(struct se_cmd *cmd); |
| 43 | + void (*tmr_notify)(struct se_device *se_dev, enum tcm_tmreq_table, | |
| 44 | + struct list_head *aborted_cmds); | |
| 43 | 45 | u32 (*get_device_type)(struct se_device *); |
| 44 | 46 | sector_t (*get_blocks)(struct se_device *); |
| 45 | 47 | sector_t (*get_alignment_offset_lbas)(struct se_device *); |
| @@ -207,6 +207,7 @@ enum tcm_tmreq_table { · 206 unmodified lines | ||
| 207 | 207 | TMR_LUN_RESET = 5, |
| 208 | 208 | TMR_TARGET_WARM_RESET = 6, |
| 209 | 209 | TMR_TARGET_COLD_RESET = 7, |
| 210 | + TMR_LUN_RESET_PRO = 0x80, | |
| 210 | 211 | TMR_UNKNOWN = 0xff, |
| 211 | 212 | }; |
| 212 | 213 | |
| @@ -249,6 +249,37 @@ TRACE_EVENT(ufshcd_command, · 248 unmodified lines | ||
| 249 | 249 | ) |
| 250 | 250 | ); |
| 251 | 251 | |
| 252 | +TRACE_EVENT(ufshcd_uic_command, | |
| 253 | + TP_PROTO(const char *dev_name, const char *str, u32 cmd, | |
| 254 | + u32 arg1, u32 arg2, u32 arg3), | |
| 255 | + | |
| 256 | + TP_ARGS(dev_name, str, cmd, arg1, arg2, arg3), | |
| 257 | + | |
| 258 | + TP_STRUCT__entry( | |
| 259 | + __string(dev_name, dev_name) | |
| 260 | + __string(str, str) | |
| 261 | + __field(u32, cmd) | |
| 262 | + __field(u32, arg1) | |
| 263 | + __field(u32, arg2) | |
| 264 | + __field(u32, arg3) | |
| 265 | + ), | |
| 266 | + | |
| 267 | + TP_fast_assign( | |
| 268 | + __assign_str(dev_name, dev_name); | |
| 269 | + __assign_str(str, str); | |
| 270 | + __entry->cmd = cmd; | |
| 271 | + __entry->arg1 = arg1; | |
| 272 | + __entry->arg2 = arg2; | |
| 273 | + __entry->arg3 = arg3; | |
| 274 | + ), | |
| 275 | + | |
| 276 | + TP_printk( | |
| 277 | + "%s: %s: cmd: 0x%x, arg1: 0x%x, arg2: 0x%x, arg3: 0x%x", | |
| 278 | + __get_str(str), __get_str(dev_name), __entry->cmd, | |
| 279 | + __entry->arg1, __entry->arg2, __entry->arg3 | |
| 280 | + ) | |
| 281 | +); | |
| 282 | + | |
| 252 | 283 | TRACE_EVENT(ufshcd_upiu, |
| 253 | 284 | TP_PROTO(const char *dev_name, const char *str, void *hdr, void *tsf), |
| 254 | 285 | |
| @@ -45,6 +45,7 @@ · 44 unmodified lines | ||
| 45 | 45 | #define ALIGN_SIZE 64 /* Should be enough for most CPUs */ |
| 46 | 46 | #define TCMU_MAILBOX_FLAG_CAP_OOOC (1 << 0) /* Out-of-order completions */ |
| 47 | 47 | #define TCMU_MAILBOX_FLAG_CAP_READ_LEN (1 << 1) /* Read data length */ |
| 48 | +#define TCMU_MAILBOX_FLAG_CAP_TMR (1 << 2) /* TMR notifications */ | |
| 48 | 49 | |
| 49 | 50 | struct tcmu_mailbox { |
| 50 | 51 | __u16 version; |
| @@ -62,6 +63,7 @@ struct tcmu_mailbox { · 11 unmodified lines | ||
| 62 | 63 | enum tcmu_opcode { |
| 63 | 64 | TCMU_OP_PAD = 0, |
| 64 | 65 | TCMU_OP_CMD, |
| 66 | + TCMU_OP_TMR, | |
| 65 | 67 | }; |
| 66 | 68 | |
| 67 | 69 | /* |
| @@ -128,6 +130,29 @@ struct tcmu_cmd_entry { · 60 unmodified lines | ||
| 128 | 130 | |
| 129 | 131 | } __packed; |
| 130 | 132 | |
| 133 | +struct tcmu_tmr_entry { | |
| 134 | + struct tcmu_cmd_entry_hdr hdr; | |
| 135 | + | |
| 136 | +#define TCMU_TMR_UNKNOWN 0 | |
| 137 | +#define TCMU_TMR_ABORT_TASK 1 | |
| 138 | +#define TCMU_TMR_ABORT_TASK_SET 2 | |
| 139 | +#define TCMU_TMR_CLEAR_ACA 3 | |
| 140 | +#define TCMU_TMR_CLEAR_TASK_SET 4 | |
| 141 | +#define TCMU_TMR_LUN_RESET 5 | |
| 142 | +#define TCMU_TMR_TARGET_WARM_RESET 6 | |
| 143 | +#define TCMU_TMR_TARGET_COLD_RESET 7 | |
| 144 | +/* Pseudo reset due to received PR OUT */ | |
| 145 | +#define TCMU_TMR_LUN_RESET_PRO 128 | |
| 146 | + __u8 tmr_type; | |
| 147 | + | |
| 148 | + __u8 __pad1; | |
| 149 | + __u16 __pad2; | |
| 150 | + __u32 cmd_cnt; | |
| 151 | + __u64 __pad3; | |
| 152 | + __u64 __pad4; | |
| 153 | + __u16 cmd_ids[0]; | |
| 154 | +} __packed; | |
| 155 | + | |
| 131 | 156 | #define TCMU_OP_ALIGN_SIZE sizeof(__u64) |
| 132 | 157 | |
| 133 | 158 | enum tcmu_genl_cmd { |
| @@ -41,6 +41,7 @@ enum fc_els_cmd { · 40 unmodified lines | ||
| 41 | 41 | ELS_REC = 0x13, /* read exchange concise */ |
| 42 | 42 | ELS_SRR = 0x14, /* sequence retransmission request */ |
| 43 | 43 | ELS_FPIN = 0x16, /* Fabric Performance Impact Notification */ |
| 44 | + ELS_RDP = 0x18, /* Read Diagnostic Parameters */ | |
| 44 | 45 | ELS_RDF = 0x19, /* Register Diagnostic Functions */ |
| 45 | 46 | ELS_PRLI = 0x20, /* process login */ |
| 46 | 47 | ELS_PRLO = 0x21, /* process logout */ |
| @@ -110,6 +111,7 @@ enum fc_els_cmd { · 63 unmodified lines | ||
| 110 | 111 | [ELS_REC] = "REC", \ |
| 111 | 112 | [ELS_SRR] = "SRR", \ |
| 112 | 113 | [ELS_FPIN] = "FPIN", \ |
| 114 | + [ELS_RDP] = "RDP", \ | |
| 113 | 115 | [ELS_RDF] = "RDF", \ |
| 114 | 116 | [ELS_PRLI] = "PRLI", \ |
| 115 | 117 | [ELS_PRLO] = "PRLO", \ |