Skip to content

Commit af99538

Browse files
committed
Merge tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi
Pull more SCSI updates from James Bottomley: "The set of core changes here is Christoph's submission path cleanups. These introduced a couple of regressions when first proposed so they got held over from the initial merge window pull request to give more testing time, which they've now had and Syzbot has confirmed the regression it detected is fixed. The other main changes are two driver updates (arcmsr, pm80xx) and assorted minor clean ups" * tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi: (38 commits) scsi: qla2xxx: Fix return of uninitialized value in rval scsi: core: Set sc_data_direction to DMA_NONE for no-transfer commands scsi: sr: Initialize ->cmd_len scsi: arcmsr: Update driver version to v1.50.00.02-20200819 scsi: arcmsr: Add support for ARC-1886 series RAID controllers scsi: arcmsr: Fix device hot-plug monitoring timer stop scsi: arcmsr: Remove unnecessary syntax scsi: pm80xx: Driver version update scsi: pm80xx: Increase the number of outstanding I/O supported to 1024 scsi: pm80xx: Remove DMA memory allocation for ccb and device structures scsi: pm80xx: Increase number of supported queues scsi: sym53c8xx_2: Fix sizeof() mismatch scsi: isci: Fix a typo in a comment scsi: qla4xxx: Fix inconsistent format argument type scsi: myrb: Fix inconsistent format argument types scsi: myrb: Remove redundant assignment to variable timeout scsi: bfa: Fix error return in bfad_pci_init() scsi: fcoe: Simplify the return expression of fcoe_sysfs_setup() scsi: snic: Simplify the return expression of svnic_cq_alloc() scsi: fnic: Simplify the return expression of vnic_wq_copy_alloc() ...
2 parents bd7e8c9 + 1ef16a4 commit af99538

29 files changed

Lines changed: 818 additions & 584 deletions

drivers/scsi/53c700.c

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1506,10 +1506,8 @@ NCR_700_intr(int irq, void *dev_id)
15061506
__u8 sstat0 = 0, dstat = 0;
15071507
__u32 dsp;
15081508
struct scsi_cmnd *SCp = hostdata->cmd;
1509-
enum NCR_700_Host_State state;
15101509

15111510
handled = 1;
1512-
state = hostdata->state;
15131511
SCp = hostdata->cmd;
15141512

15151513
if(istat & SCSI_INT_PENDING) {
@@ -1760,7 +1758,6 @@ NCR_700_queuecommand_lck(struct scsi_cmnd *SCp, void (*done)(struct scsi_cmnd *)
17601758
struct NCR_700_Host_Parameters *hostdata =
17611759
(struct NCR_700_Host_Parameters *)SCp->device->host->hostdata[0];
17621760
__u32 move_ins;
1763-
enum dma_data_direction direction;
17641761
struct NCR_700_command_slot *slot;
17651762

17661763
if(hostdata->command_slot_count >= NCR_700_COMMAND_SLOTS_PER_HOST) {
@@ -1877,7 +1874,6 @@ NCR_700_queuecommand_lck(struct scsi_cmnd *SCp, void (*done)(struct scsi_cmnd *)
18771874
}
18781875

18791876
/* now build the scatter gather list */
1880-
direction = SCp->sc_data_direction;
18811877
if(move_ins != 0) {
18821878
int i;
18831879
int sg_count;

drivers/scsi/arcmsr/arcmsr.h

Lines changed: 99 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ struct device_attribute;
4949
#define ARCMSR_MAX_OUTSTANDING_CMD 1024
5050
#define ARCMSR_DEFAULT_OUTSTANDING_CMD 128
5151
#define ARCMSR_MIN_OUTSTANDING_CMD 32
52-
#define ARCMSR_DRIVER_VERSION "v1.40.00.10-20190116"
52+
#define ARCMSR_DRIVER_VERSION "v1.50.00.02-20200819"
5353
#define ARCMSR_SCSI_INITIATOR_ID 255
5454
#define ARCMSR_MAX_XFER_SECTORS 512
5555
#define ARCMSR_MAX_XFER_SECTORS_B 4096
@@ -80,6 +80,7 @@ struct device_attribute;
8080
#ifndef PCI_DEVICE_ID_ARECA_1884
8181
#define PCI_DEVICE_ID_ARECA_1884 0x1884
8282
#endif
83+
#define PCI_DEVICE_ID_ARECA_1886 0x188A
8384
#define ARCMSR_HOURS (1000 * 60 * 60 * 4)
8485
#define ARCMSR_MINUTES (1000 * 60 * 60)
8586
/*
@@ -436,6 +437,21 @@ struct FIRMWARE_INFO
436437
#define ARCMSR_HBEMU_DOORBELL_SYNC 0x100
437438
#define ARCMSR_ARC188X_RESET_ADAPTER 0x00000004
438439
#define ARCMSR_ARC1884_DiagWrite_ENABLE 0x00000080
440+
441+
/*
442+
*******************************************************************************
443+
** SPEC. for Areca Type F adapter
444+
*******************************************************************************
445+
*/
446+
#define ARCMSR_SIGNATURE_1886 0x188617D3
447+
// Doorbell and interrupt definition are same as Type E adapter
448+
/* ARC-1886 doorbell sync */
449+
#define ARCMSR_HBFMU_DOORBELL_SYNC 0x100
450+
//set host rw buffer physical address at inbound message 0, 1 (low,high)
451+
#define ARCMSR_HBFMU_DOORBELL_SYNC1 0x300
452+
#define ARCMSR_HBFMU_MESSAGE_FIRMWARE_OK 0x80000000
453+
#define ARCMSR_HBFMU_MESSAGE_NO_VOLUME_CHANGE 0x20000000
454+
439455
/*
440456
*******************************************************************************
441457
** ARECA SCSI COMMAND DESCRIPTOR BLOCK size 0x1F8 (504)
@@ -720,6 +736,80 @@ struct MessageUnit_E{
720736
uint32_t msgcode_rwbuffer[256]; /*2200 23FF*/
721737
};
722738

739+
/*
740+
*********************************************************************
741+
** Messaging Unit (MU) of Type F processor(LSI)
742+
*********************************************************************
743+
*/
744+
struct MessageUnit_F {
745+
uint32_t iobound_doorbell; /*0000 0003*/
746+
uint32_t write_sequence_3xxx; /*0004 0007*/
747+
uint32_t host_diagnostic_3xxx; /*0008 000B*/
748+
uint32_t posted_outbound_doorbell; /*000C 000F*/
749+
uint32_t master_error_attribute; /*0010 0013*/
750+
uint32_t master_error_address_low; /*0014 0017*/
751+
uint32_t master_error_address_high; /*0018 001B*/
752+
uint32_t hcb_size; /*001C 001F*/
753+
uint32_t inbound_doorbell; /*0020 0023*/
754+
uint32_t diagnostic_rw_data; /*0024 0027*/
755+
uint32_t diagnostic_rw_address_low; /*0028 002B*/
756+
uint32_t diagnostic_rw_address_high; /*002C 002F*/
757+
uint32_t host_int_status; /*0030 0033*/
758+
uint32_t host_int_mask; /*0034 0037*/
759+
uint32_t dcr_data; /*0038 003B*/
760+
uint32_t dcr_address; /*003C 003F*/
761+
uint32_t inbound_queueport; /*0040 0043*/
762+
uint32_t outbound_queueport; /*0044 0047*/
763+
uint32_t hcb_pci_address_low; /*0048 004B*/
764+
uint32_t hcb_pci_address_high; /*004C 004F*/
765+
uint32_t iop_int_status; /*0050 0053*/
766+
uint32_t iop_int_mask; /*0054 0057*/
767+
uint32_t iop_inbound_queue_port; /*0058 005B*/
768+
uint32_t iop_outbound_queue_port; /*005C 005F*/
769+
uint32_t inbound_free_list_index; /*0060 0063*/
770+
uint32_t inbound_post_list_index; /*0064 0067*/
771+
uint32_t reply_post_producer_index; /*0068 006B*/
772+
uint32_t reply_post_consumer_index; /*006C 006F*/
773+
uint32_t inbound_doorbell_clear; /*0070 0073*/
774+
uint32_t i2o_message_unit_control; /*0074 0077*/
775+
uint32_t last_used_message_source_address_low; /*0078 007B*/
776+
uint32_t last_used_message_source_address_high; /*007C 007F*/
777+
uint32_t pull_mode_data_byte_count[4]; /*0080 008F*/
778+
uint32_t message_dest_address_index; /*0090 0093*/
779+
uint32_t done_queue_not_empty_int_counter_timer; /*0094 0097*/
780+
uint32_t utility_A_int_counter_timer; /*0098 009B*/
781+
uint32_t outbound_doorbell; /*009C 009F*/
782+
uint32_t outbound_doorbell_clear; /*00A0 00A3*/
783+
uint32_t message_source_address_index; /*00A4 00A7*/
784+
uint32_t message_done_queue_index; /*00A8 00AB*/
785+
uint32_t reserved0; /*00AC 00AF*/
786+
uint32_t inbound_msgaddr0; /*00B0 00B3*/
787+
uint32_t inbound_msgaddr1; /*00B4 00B7*/
788+
uint32_t outbound_msgaddr0; /*00B8 00BB*/
789+
uint32_t outbound_msgaddr1; /*00BC 00BF*/
790+
uint32_t inbound_queueport_low; /*00C0 00C3*/
791+
uint32_t inbound_queueport_high; /*00C4 00C7*/
792+
uint32_t outbound_queueport_low; /*00C8 00CB*/
793+
uint32_t outbound_queueport_high; /*00CC 00CF*/
794+
uint32_t iop_inbound_queue_port_low; /*00D0 00D3*/
795+
uint32_t iop_inbound_queue_port_high; /*00D4 00D7*/
796+
uint32_t iop_outbound_queue_port_low; /*00D8 00DB*/
797+
uint32_t iop_outbound_queue_port_high; /*00DC 00DF*/
798+
uint32_t message_dest_queue_port_low; /*00E0 00E3*/
799+
uint32_t message_dest_queue_port_high; /*00E4 00E7*/
800+
uint32_t last_used_message_dest_address_low; /*00E8 00EB*/
801+
uint32_t last_used_message_dest_address_high; /*00EC 00EF*/
802+
uint32_t message_done_queue_base_address_low; /*00F0 00F3*/
803+
uint32_t message_done_queue_base_address_high; /*00F4 00F7*/
804+
uint32_t host_diagnostic; /*00F8 00FB*/
805+
uint32_t write_sequence; /*00FC 00FF*/
806+
uint32_t reserved1[46]; /*0100 01B7*/
807+
uint32_t reply_post_producer_index1; /*01B8 01BB*/
808+
uint32_t reply_post_consumer_index1; /*01BC 01BF*/
809+
};
810+
811+
#define MESG_RW_BUFFER_SIZE (256 * 3)
812+
723813
typedef struct deliver_completeQ {
724814
uint16_t cmdFlag;
725815
uint16_t cmdSMID;
@@ -739,6 +829,7 @@ struct AdapterControlBlock
739829
#define ACB_ADAPTER_TYPE_C 0x00000002 /* hbc L IOP */
740830
#define ACB_ADAPTER_TYPE_D 0x00000003 /* hbd M IOP */
741831
#define ACB_ADAPTER_TYPE_E 0x00000004 /* hba L IOP */
832+
#define ACB_ADAPTER_TYPE_F 0x00000005 /* hba L IOP */
742833
u32 ioqueue_size;
743834
struct pci_dev * pdev;
744835
struct Scsi_Host * host;
@@ -760,10 +851,16 @@ struct AdapterControlBlock
760851
struct MessageUnit_C __iomem *pmuC;
761852
struct MessageUnit_D *pmuD;
762853
struct MessageUnit_E __iomem *pmuE;
854+
struct MessageUnit_F __iomem *pmuF;
763855
};
764856
/* message unit ATU inbound base address0 */
765857
void __iomem *mem_base0;
766858
void __iomem *mem_base1;
859+
//0x000 - COMPORT_IN (Host sent to ROC)
860+
uint32_t *message_wbuffer;
861+
//0x100 - COMPORT_OUT (ROC sent to Host)
862+
uint32_t *message_rbuffer;
863+
uint32_t *msgcode_rwbuffer; //0x200 - BIOS_AREA
767864
uint32_t acb_flags;
768865
u16 dev_id;
769866
uint8_t adapter_index;
@@ -836,8 +933,6 @@ struct AdapterControlBlock
836933
#define FW_NORMAL 0x0000
837934
#define FW_BOG 0x0001
838935
#define FW_DEADLOCK 0x0010
839-
atomic_t rq_map_token;
840-
atomic_t ante_token_value;
841936
uint32_t maxOutstanding;
842937
int vector_count;
843938
uint32_t maxFreeCCB;
@@ -848,6 +943,7 @@ struct AdapterControlBlock
848943
uint32_t out_doorbell;
849944
uint32_t completionQ_entry;
850945
pCompletion_Q pCompletionQ;
946+
uint32_t completeQ_size;
851947
};/* HW_DEVICE_EXTENSION */
852948
/*
853949
*******************************************************************************

0 commit comments

Comments
 (0)