mirror of
https://github.com/linux-msm/laptops-kernel.git
synced 2026-08-13 14:19:53 -07:00
Merge tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi
Pull SCSI updates from James Bottomley: "Usual driver updates (qla2xxx, mpi3mr, mpt3sas, ufs) plus assorted cleanups and fixes. The biggest core change is the massive code motion in the sd driver to remove forward declarations and the most significant change is to enumify the queuecommand return" * tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi: (78 commits) scsi: csiostor: Fix dereference of null pointer rn scsi: buslogic: Reduce stack usage scsi: ufs: host: mediatek: Require CONFIG_PM scsi: ufs: mediatek: Fix page faults in ufs_mtk_clk_scale() trace event scsi: smartpqi: Fix memory leak in pqi_report_phys_luns() scsi: mpi3mr: Make driver probing asynchronous scsi: ufs: core: Flush exception handling work when RPM level is zero scsi: efct: Use IRQF_ONESHOT and default primary handler scsi: ufs: core: Use a host-wide tagset in SDB mode scsi: qla2xxx: target: Add WQ_PERCPU to alloc_workqueue() users scsi: qla2xxx: Add WQ_PERCPU to alloc_workqueue() users scsi: qla4xxx: Add WQ_PERCPU to alloc_workqueue() users scsi: mpi3mr: Driver version update to 8.17.0.3.50 scsi: mpi3mr: Fixed the W=1 compilation warning scsi: mpi3mr: Record and report controller firmware faults scsi: mpi3mr: Update MPI Headers to revision 39 scsi: mpi3mr: Use negotiated link rate from DevicePage0 scsi: mpi3mr: Avoid redundant diag-fault resets scsi: mpi3mr: Rename log data save helper to reflect threaded/BH context scsi: mpi3mr: Add module parameter to control threaded IRQ polling ...
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/ufs/qcom,sa8255p-ufshc.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Qualcomm SA8255P UFS Host Controller
|
||||
|
||||
maintainers:
|
||||
- Ram Kumar Dwivedi <ram.dwivedi@oss.qualcomm.com>
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: qcom,sa8255p-ufshc
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
iommus:
|
||||
maxItems: 1
|
||||
|
||||
dma-coherent: true
|
||||
|
||||
power-domains:
|
||||
maxItems: 1
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- interrupts
|
||||
- power-domains
|
||||
- iommus
|
||||
- dma-coherent
|
||||
|
||||
allOf:
|
||||
- $ref: ufs-common.yaml
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
|
||||
ufshc@1d84000 {
|
||||
compatible = "qcom,sa8255p-ufshc";
|
||||
reg = <0x01d84000 0x3000>;
|
||||
interrupts = <GIC_SPI 265 IRQ_TYPE_LEVEL_HIGH>;
|
||||
lanes-per-direction = <2>;
|
||||
|
||||
iommus = <&apps_smmu 0x100 0x0>;
|
||||
power-domains = <&scmi3_pd 0>;
|
||||
dma-coherent;
|
||||
};
|
||||
@@ -903,7 +903,8 @@ Details::
|
||||
*
|
||||
* Defined in: LLD
|
||||
**/
|
||||
int queuecommand(struct Scsi_Host *shost, struct scsi_cmnd * scp)
|
||||
enum scsi_qc_status queuecommand(struct Scsi_Host *shost,
|
||||
struct scsi_cmnd *scp)
|
||||
|
||||
|
||||
/**
|
||||
|
||||
+1
-1
@@ -27063,7 +27063,7 @@ M: Manivannan Sadhasivam <mani@kernel.org>
|
||||
L: linux-arm-msm@vger.kernel.org
|
||||
L: linux-scsi@vger.kernel.org
|
||||
S: Maintained
|
||||
F: Documentation/devicetree/bindings/ufs/qcom,ufs.yaml
|
||||
F: Documentation/devicetree/bindings/ufs/qcom*
|
||||
F: drivers/ufs/host/ufs-qcom*
|
||||
|
||||
UNIVERSAL FLASH STORAGE HOST CONTROLLER DRIVER RENESAS HOOKS
|
||||
|
||||
@@ -4309,7 +4309,8 @@ static inline ata_xlat_func_t ata_get_xlat_func(struct ata_device *dev, u8 cmd)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
int __ata_scsi_queuecmd(struct scsi_cmnd *scmd, struct ata_device *dev)
|
||||
enum scsi_qc_status __ata_scsi_queuecmd(struct scsi_cmnd *scmd,
|
||||
struct ata_device *dev)
|
||||
{
|
||||
struct ata_port *ap = dev->link->ap;
|
||||
u8 scsi_op = scmd->cmnd[0];
|
||||
@@ -4383,12 +4384,13 @@ int __ata_scsi_queuecmd(struct scsi_cmnd *scmd, struct ata_device *dev)
|
||||
* Return value from __ata_scsi_queuecmd() if @cmd can be queued,
|
||||
* 0 otherwise.
|
||||
*/
|
||||
int ata_scsi_queuecmd(struct Scsi_Host *shost, struct scsi_cmnd *cmd)
|
||||
enum scsi_qc_status ata_scsi_queuecmd(struct Scsi_Host *shost,
|
||||
struct scsi_cmnd *cmd)
|
||||
{
|
||||
struct ata_port *ap;
|
||||
struct ata_device *dev;
|
||||
struct scsi_device *scsidev = cmd->device;
|
||||
int rc = 0;
|
||||
enum scsi_qc_status rc = 0;
|
||||
unsigned long irq_flags;
|
||||
|
||||
ap = ata_shost_to_port(shost);
|
||||
|
||||
@@ -164,7 +164,8 @@ extern int ata_scsi_user_scan(struct Scsi_Host *shost, unsigned int channel,
|
||||
void ata_scsi_sdev_config(struct scsi_device *sdev);
|
||||
int ata_scsi_dev_config(struct scsi_device *sdev, struct queue_limits *lim,
|
||||
struct ata_device *dev);
|
||||
int __ata_scsi_queuecmd(struct scsi_cmnd *scmd, struct ata_device *dev);
|
||||
enum scsi_qc_status __ata_scsi_queuecmd(struct scsi_cmnd *scmd,
|
||||
struct ata_device *dev);
|
||||
|
||||
/* libata-eh.c */
|
||||
extern unsigned int ata_internal_cmd_timeout(struct ata_device *dev, u8 cmd);
|
||||
|
||||
@@ -165,6 +165,12 @@ static int transport_add_class_device(struct attribute_container *cont,
|
||||
goto err_del;
|
||||
}
|
||||
|
||||
if (tcont->encryption) {
|
||||
error = sysfs_create_group(&classdev->kobj, tcont->encryption);
|
||||
if (error)
|
||||
goto err_del;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
err_del:
|
||||
@@ -240,6 +246,8 @@ static int transport_remove_classdev(struct attribute_container *cont,
|
||||
if (tclass->remove != anon_transport_dummy_function) {
|
||||
if (tcont->statistics)
|
||||
sysfs_remove_group(&classdev->kobj, tcont->statistics);
|
||||
if (tcont->encryption)
|
||||
sysfs_remove_group(&classdev->kobj, tcont->encryption);
|
||||
attribute_container_class_device_del(classdev);
|
||||
}
|
||||
|
||||
|
||||
@@ -1440,13 +1440,14 @@ static int sbp2_map_scatterlist(struct sbp2_command_orb *orb,
|
||||
|
||||
/* SCSI stack integration */
|
||||
|
||||
static int sbp2_scsi_queuecommand(struct Scsi_Host *shost,
|
||||
struct scsi_cmnd *cmd)
|
||||
static enum scsi_qc_status sbp2_scsi_queuecommand(struct Scsi_Host *shost,
|
||||
struct scsi_cmnd *cmd)
|
||||
{
|
||||
struct sbp2_logical_unit *lu = cmd->device->hostdata;
|
||||
struct fw_device *device = target_parent_device(lu->tgt);
|
||||
enum scsi_qc_status retval = SCSI_MLQUEUE_HOST_BUSY;
|
||||
struct sbp2_command_orb *orb;
|
||||
int generation, retval = SCSI_MLQUEUE_HOST_BUSY;
|
||||
int generation;
|
||||
|
||||
orb = kzalloc(sizeof(*orb), GFP_ATOMIC);
|
||||
if (orb == NULL)
|
||||
|
||||
@@ -2149,7 +2149,8 @@ static void srp_handle_qp_err(struct ib_cq *cq, struct ib_wc *wc,
|
||||
target->qp_in_error = true;
|
||||
}
|
||||
|
||||
static int srp_queuecommand(struct Scsi_Host *shost, struct scsi_cmnd *scmnd)
|
||||
static enum scsi_qc_status srp_queuecommand(struct Scsi_Host *shost,
|
||||
struct scsi_cmnd *scmnd)
|
||||
{
|
||||
struct request *rq = scsi_cmd_to_rq(scmnd);
|
||||
struct srp_target_port *target = host_to_target(shost);
|
||||
|
||||
@@ -97,7 +97,8 @@ static u8 mptfcInternalCtx = MPT_MAX_PROTOCOL_DRIVERS;
|
||||
|
||||
static int mptfc_target_alloc(struct scsi_target *starget);
|
||||
static int mptfc_sdev_init(struct scsi_device *sdev);
|
||||
static int mptfc_qcmd(struct Scsi_Host *shost, struct scsi_cmnd *SCpnt);
|
||||
static enum scsi_qc_status mptfc_qcmd(struct Scsi_Host *shost,
|
||||
struct scsi_cmnd *SCpnt);
|
||||
static void mptfc_target_destroy(struct scsi_target *starget);
|
||||
static void mptfc_set_rport_loss_tmo(struct fc_rport *rport, uint32_t timeout);
|
||||
static void mptfc_remove(struct pci_dev *pdev);
|
||||
@@ -676,8 +677,8 @@ mptfc_sdev_init(struct scsi_device *sdev)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
mptfc_qcmd(struct Scsi_Host *shost, struct scsi_cmnd *SCpnt)
|
||||
static enum scsi_qc_status mptfc_qcmd(struct Scsi_Host *shost,
|
||||
struct scsi_cmnd *SCpnt)
|
||||
{
|
||||
struct mptfc_rport_info *ri;
|
||||
struct fc_rport *rport = starget_to_rport(scsi_target(SCpnt->device));
|
||||
|
||||
@@ -1920,8 +1920,8 @@ mptsas_sdev_init(struct scsi_device *sdev)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
mptsas_qcmd(struct Scsi_Host *shost, struct scsi_cmnd *SCpnt)
|
||||
static enum scsi_qc_status mptsas_qcmd(struct Scsi_Host *shost,
|
||||
struct scsi_cmnd *SCpnt)
|
||||
{
|
||||
MPT_SCSI_HOST *hd;
|
||||
MPT_ADAPTER *ioc;
|
||||
|
||||
@@ -1309,8 +1309,7 @@ int mptscsih_show_info(struct seq_file *m, struct Scsi_Host *host)
|
||||
*
|
||||
* Returns 0. (rtn value discarded by linux scsi mid-layer)
|
||||
*/
|
||||
int
|
||||
mptscsih_qcmd(struct scsi_cmnd *SCpnt)
|
||||
enum scsi_qc_status mptscsih_qcmd(struct scsi_cmnd *SCpnt)
|
||||
{
|
||||
MPT_SCSI_HOST *hd;
|
||||
MPT_FRAME_HDR *mf;
|
||||
|
||||
@@ -113,7 +113,7 @@ extern int mptscsih_resume(struct pci_dev *pdev);
|
||||
#endif
|
||||
extern int mptscsih_show_info(struct seq_file *, struct Scsi_Host *);
|
||||
extern const char * mptscsih_info(struct Scsi_Host *SChost);
|
||||
extern int mptscsih_qcmd(struct scsi_cmnd *SCpnt);
|
||||
extern enum scsi_qc_status mptscsih_qcmd(struct scsi_cmnd *SCpnt);
|
||||
extern int mptscsih_IssueTaskMgmt(MPT_SCSI_HOST *hd, u8 type, u8 channel,
|
||||
u8 id, u64 lun, int ctx2abort, ulong timeout);
|
||||
extern void mptscsih_sdev_destroy(struct scsi_device *device);
|
||||
|
||||
@@ -774,8 +774,8 @@ static int mptspi_sdev_configure(struct scsi_device *sdev,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
mptspi_qcmd(struct Scsi_Host *shost, struct scsi_cmnd *SCpnt)
|
||||
static enum scsi_qc_status mptspi_qcmd(struct Scsi_Host *shost,
|
||||
struct scsi_cmnd *SCpnt)
|
||||
{
|
||||
struct _MPT_SCSI_HOST *hd = shost_priv(shost);
|
||||
VirtDevice *vdevice = SCpnt->device->hostdata;
|
||||
|
||||
@@ -63,8 +63,8 @@ static void zfcp_scsi_command_fail(struct scsi_cmnd *scpnt, int result)
|
||||
scsi_done(scpnt);
|
||||
}
|
||||
|
||||
static
|
||||
int zfcp_scsi_queuecommand(struct Scsi_Host *shost, struct scsi_cmnd *scpnt)
|
||||
static enum scsi_qc_status zfcp_scsi_queuecommand(struct Scsi_Host *shost,
|
||||
struct scsi_cmnd *scpnt)
|
||||
{
|
||||
struct zfcp_scsi_dev *zfcp_sdev = sdev_to_zfcp(scpnt->device);
|
||||
struct fc_rport *rport = starget_to_rport(scsi_target(scpnt->device));
|
||||
|
||||
@@ -1746,7 +1746,7 @@ out:
|
||||
} /* End twa_scsi_eh_reset() */
|
||||
|
||||
/* This is the main scsi queue function to handle scsi opcodes */
|
||||
static int twa_scsi_queue_lck(struct scsi_cmnd *SCpnt)
|
||||
static enum scsi_qc_status twa_scsi_queue_lck(struct scsi_cmnd *SCpnt)
|
||||
{
|
||||
void (*done)(struct scsi_cmnd *) = scsi_done;
|
||||
int request_id, retval;
|
||||
|
||||
@@ -1453,11 +1453,13 @@ out:
|
||||
} /* End twl_scsi_eh_reset() */
|
||||
|
||||
/* This is the main scsi queue function to handle scsi opcodes */
|
||||
static int twl_scsi_queue_lck(struct scsi_cmnd *SCpnt)
|
||||
static enum scsi_qc_status twl_scsi_queue_lck(struct scsi_cmnd *SCpnt)
|
||||
{
|
||||
TW_Device_Extension *tw_dev =
|
||||
(TW_Device_Extension *)SCpnt->device->host->hostdata;
|
||||
void (*done)(struct scsi_cmnd *) = scsi_done;
|
||||
int request_id, retval;
|
||||
TW_Device_Extension *tw_dev = (TW_Device_Extension *)SCpnt->device->host->hostdata;
|
||||
enum scsi_qc_status retval;
|
||||
int request_id;
|
||||
|
||||
/* If we are resetting due to timed out ioctl, report as busy */
|
||||
if (test_bit(TW_IN_RESET, &tw_dev->flags)) {
|
||||
|
||||
@@ -1920,7 +1920,7 @@ static int tw_scsiop_test_unit_ready_complete(TW_Device_Extension *tw_dev, int r
|
||||
} /* End tw_scsiop_test_unit_ready_complete() */
|
||||
|
||||
/* This is the main scsi queue function to handle scsi opcodes */
|
||||
static int tw_scsi_queue_lck(struct scsi_cmnd *SCpnt)
|
||||
static enum scsi_qc_status tw_scsi_queue_lck(struct scsi_cmnd *SCpnt)
|
||||
{
|
||||
void (*done)(struct scsi_cmnd *) = scsi_done;
|
||||
unsigned char *command = SCpnt->cmnd;
|
||||
|
||||
@@ -152,8 +152,8 @@ MODULE_LICENSE("GPL");
|
||||
/* This is the script */
|
||||
#include "53c700_d.h"
|
||||
|
||||
|
||||
STATIC int NCR_700_queuecommand(struct Scsi_Host *h, struct scsi_cmnd *);
|
||||
STATIC enum scsi_qc_status NCR_700_queuecommand(struct Scsi_Host *h,
|
||||
struct scsi_cmnd *);
|
||||
STATIC int NCR_700_abort(struct scsi_cmnd * SCpnt);
|
||||
STATIC int NCR_700_host_reset(struct scsi_cmnd * SCpnt);
|
||||
STATIC void NCR_700_chip_setup(struct Scsi_Host *host);
|
||||
@@ -1751,7 +1751,7 @@ NCR_700_intr(int irq, void *dev_id)
|
||||
return IRQ_RETVAL(handled);
|
||||
}
|
||||
|
||||
static int NCR_700_queuecommand_lck(struct scsi_cmnd *SCp)
|
||||
static enum scsi_qc_status NCR_700_queuecommand_lck(struct scsi_cmnd *SCp)
|
||||
{
|
||||
struct NCR_700_Host_Parameters *hostdata =
|
||||
(struct NCR_700_Host_Parameters *)SCp->device->host->hostdata[0];
|
||||
|
||||
@@ -920,7 +920,8 @@ static int __init blogic_init_fp_probeinfo(struct blogic_adapter *adapter)
|
||||
a particular probe order.
|
||||
*/
|
||||
|
||||
static void __init blogic_init_probeinfo_list(struct blogic_adapter *adapter)
|
||||
static noinline_for_stack void __init
|
||||
blogic_init_probeinfo_list(struct blogic_adapter *adapter)
|
||||
{
|
||||
/*
|
||||
If a PCI BIOS is present, interrogate it for MultiMaster and
|
||||
@@ -1690,7 +1691,8 @@ common:
|
||||
blogic_reportconfig reports the configuration of Host Adapter.
|
||||
*/
|
||||
|
||||
static bool __init blogic_reportconfig(struct blogic_adapter *adapter)
|
||||
static noinline_for_stack bool __init
|
||||
blogic_reportconfig(struct blogic_adapter *adapter)
|
||||
{
|
||||
unsigned short alltgt_mask = (1 << adapter->maxdev) - 1;
|
||||
unsigned short sync_ok, fast_ok;
|
||||
@@ -2877,7 +2879,7 @@ static int blogic_hostreset(struct scsi_cmnd *SCpnt)
|
||||
Outgoing Mailbox for execution by the associated Host Adapter.
|
||||
*/
|
||||
|
||||
static int blogic_qcmd_lck(struct scsi_cmnd *command)
|
||||
static enum scsi_qc_status blogic_qcmd_lck(struct scsi_cmnd *command)
|
||||
{
|
||||
void (*comp_cb)(struct scsi_cmnd *) = scsi_done;
|
||||
struct blogic_adapter *adapter =
|
||||
|
||||
@@ -1272,7 +1272,8 @@ static inline void blogic_incszbucket(unsigned int *cmdsz_buckets,
|
||||
*/
|
||||
|
||||
static const char *blogic_drvr_info(struct Scsi_Host *);
|
||||
static int blogic_qcmd(struct Scsi_Host *h, struct scsi_cmnd *);
|
||||
static enum scsi_qc_status blogic_qcmd(struct Scsi_Host *h,
|
||||
struct scsi_cmnd *command);
|
||||
static int blogic_diskparam(struct scsi_device *, struct gendisk *, sector_t, int *);
|
||||
static int blogic_sdev_configure(struct scsi_device *,
|
||||
struct queue_limits *lim);
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user