Commit cae8da04 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull SCSI updates from James Bottomley:
 "This pull includes driver updates from the usual suspects (stex, hpsa,
  ncr5380, scsi_dh, qla2xxx, be2iscsi, hisi_sas, cxlflash, aacraid,
  mp3sas, megaraid_sas, ibmvscsi, ufs) plus an assortment of
  miscellaneous fixes.

  The major user visible change of this pull is that we've moved from
  monotonically increasing host number to an ida allocated one (meaning
  the numbers get re-used) because someone managed to wrap the count in
  an iscsi system.  We don't believe there will be any adverse
  consequences of this"

* tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi: (230 commits)
  MAINTAINERS: use new email address for James Bottomley
  mpt3sas: Remove unnecessary synchronize_irq() before free_irq()
  sg: fix dxferp in from_to case
  cxlflash: Increase cmd_per_lun for better throughput
  cxlflash: Fix to avoid unnecessary scan with internal LUNs
  cxlflash: Reorder user context initialization
  cxlflash: Simplify attach path error cleanup
  cxlflash: Split out context initialization
  cxlflash: Unmap problem state area before detaching master context
  cxlflash: Simplify PCI registration
  scsi: storvsc: fix SRB_STATUS_ABORTED handling
  be2iscsi: set the boot_kset pointer to NULL in case of failure
  sd: Fix discard granularity when LBPRZ=1
  be2iscsi: Remove unnecessary synchronize_irq() before free_irq()
  scsi_sysfs: call 'device_add' after attaching device handler
  scsi_dh_emc: update 'access_state' field
  scsi_dh_rdac: update 'access_state' field
  scsi_dh_alua: update 'access_state' field
  scsi_dh_alua: use common definitions for ALUA state
  scsi: Add 'access_state' and 'preferred_path' attribute
  ...
parents 7bb7a748 a7dee8f4
Loading
Loading
Loading
Loading
+20 −1
Original line number Diff line number Diff line
@@ -5,6 +5,7 @@ The HiSilicon SAS controller supports SAS/SATA.
Main node required properties:
  - compatible : value should be as follows:
	(a) "hisilicon,hip05-sas-v1" for v1 hw in hip05 chipset
	(b) "hisilicon,hip06-sas-v2" for v2 hw in hip06 chipset
  - sas-addr : array of 8 bytes for host SAS address
  - reg : Address and length of the SAS register
  - hisilicon,sas-syscon: phandle of syscon used for sas control
@@ -13,7 +14,7 @@ Main node required properties:
  - ctrl-clock-ena-reg : offset to controller clock enable register in ctrl reg
  - queue-count : number of delivery and completion queues in the controller
  - phy-count : number of phys accessible by the controller
  - interrupts : Interrupts for phys, completion queues, and fatal
  - interrupts : For v1 hw: Interrupts for phys, completion queues, and fatal
		sources; the interrupts are ordered in 3 groups, as follows:
			- Phy interrupts
			- Completion queue interrupts
@@ -30,6 +31,24 @@ Main node required properties:
		Fatal interrupts : the fatal interrupts are ordered as follows:
			- ECC
			- AXI bus
		For v2 hw: Interrupts for phys, Sata, and completion queues;
		the interrupts are ordered in 3 groups, as follows:
			- Phy interrupts
			- Sata interrupts
			- Completion queue interrupts
		Phy interrupts : Each controller has 2 phy interrupts:
			- phy up/down
			- channel interrupt
		Sata interrupts : Each phy on the controller has 1 Sata
			interrupt. The interrupts are ordered in increasing
			order.
		Completion queue interrupts : each completion queue has 1
			interrupt source. The interrupts are ordered in
			increasing order.

Optional main node properties:
 - hip06-sas-v2-quirk-amt : when set, indicates that the v2 controller has the
			    "am-max-transmissions" limitation.

Example:
	sas0: sas@c1000000 {
+10 −5
Original line number Diff line number Diff line
@@ -2,7 +2,7 @@ This file contains brief information about the SCSI tape driver.
The driver is currently maintained by Kai Mäkisara (email
Kai.Makisara@kolumbus.fi)

Last modified: Sun Aug 29 18:25:47 2010 by kai.makisara
Last modified: Tue Feb  9 21:54:16 2016 by kai.makisara


BASICS
@@ -408,10 +408,15 @@ MTSETPART Moves the tape to the partition given by the argument at the
	specified by MTSEEK. MTSETPART is inactive unless
	MT_ST_CAN_PARTITIONS set.
MTMKPART Formats the tape with one partition (argument zero) or two
	partitions (the argument gives in megabytes the size of
	partition 1 that is physically the first partition of the
	tape). The drive has to support partitions with size specified
	by the initiator. Inactive unless MT_ST_CAN_PARTITIONS set.
	partitions (argument non-zero). If the argument is positive,
	it specifies the size of partition 1 in megabytes. For DDS
	drives and several early drives this is the physically first
	partition of the tape. If the argument is negative, its absolute
	value specifies the size of partition 0 in megabytes. This is
	the physically first partition of many later drives, like the
	LTO drives from LTO-5 upwards. The drive has to support partitions
	with size specified by the initiator. Inactive unless
	MT_ST_CAN_PARTITIONS set.
MTSETDRVBUFFER
	Is used for several purposes. The command is obtained from count
        with mask MT_SET_OPTIONS, the low order bits are used as argument.
+8 −9
Original line number Diff line number Diff line
@@ -5007,9 +5007,9 @@ F: Documentation/blockdev/cpqarray.txt
F:	drivers/block/cpqarray.*

HEWLETT-PACKARD SMART ARRAY RAID DRIVER (hpsa)
M:	Don Brace <don.brace@pmcs.com>
M:	Don Brace <don.brace@microsemi.com>
L:	iss_storagedev@hp.com
L:	storagedev@pmcs.com
L:	esc.storagedev@microsemi.com
L:	linux-scsi@vger.kernel.org
S:	Supported
F:	Documentation/scsi/hpsa.txt
@@ -6682,13 +6682,12 @@ S: Maintained
F:	arch/arm/mach-lpc32xx/

LSILOGIC MPT FUSION DRIVERS (FC/SAS/SPI)
M:	Nagalakshmi Nandigama <nagalakshmi.nandigama@avagotech.com>
M:	Praveen Krishnamoorthy <praveen.krishnamoorthy@avagotech.com>
M:	Sreekanth Reddy <sreekanth.reddy@avagotech.com>
M:	Abhijit Mahajan <abhijit.mahajan@avagotech.com>
L:	MPT-FusionLinux.pdl@avagotech.com
M:	Sathya Prakash <sathya.prakash@broadcom.com>
M:	Chaitra P B <chaitra.basappa@broadcom.com>
M:	Suganath Prabu Subramani <suganath-prabu.subramani@broadcom.com>
L:	MPT-FusionLinux.pdl@broadcom.com
L:	linux-scsi@vger.kernel.org
W:	http://www.lsilogic.com/support
W:	http://www.avagotech.com/support/
S:	Supported
F:	drivers/message/fusion/
F:	drivers/scsi/mpt2sas/
@@ -9691,7 +9690,7 @@ F: drivers/scsi/sg.c
F:	include/scsi/sg.h

SCSI SUBSYSTEM
M:	"James E.J. Bottomley" <JBottomley@odin.com>
M:	"James E.J. Bottomley" <jejb@linux.vnet.ibm.com>
T:	git git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi.git
M:	"Martin K. Petersen" <martin.petersen@oracle.com>
T:	git git://git.kernel.org/pub/scm/linux/kernel/git/mkp/scsi.git
+35 −7
Original line number Diff line number Diff line
@@ -1801,8 +1801,7 @@ mpt_attach(struct pci_dev *pdev, const struct pci_device_id *id)

	ioc->pcidev = pdev;
	if (mpt_mapresources(ioc)) {
		kfree(ioc);
		return r;
		goto out_free_ioc;
	}

	/*
@@ -1871,9 +1870,8 @@ mpt_attach(struct pci_dev *pdev, const struct pci_device_id *id)
	if (!ioc->reset_work_q) {
		printk(MYIOC_s_ERR_FMT "Insufficient memory to add adapter!\n",
		    ioc->name);
		pci_release_selected_regions(pdev, ioc->bars);
		kfree(ioc);
		return -ENOMEM;
		r = -ENOMEM;
		goto out_unmap_resources;
	}

	dinitprintk(ioc, printk(MYIOC_s_INFO_FMT "facts @ %p, pfacts[0] @ %p\n",
@@ -1995,16 +1993,27 @@ mpt_attach(struct pci_dev *pdev, const struct pci_device_id *id)
	spin_lock_init(&ioc->fw_event_lock);
	snprintf(ioc->fw_event_q_name, MPT_KOBJ_NAME_LEN, "mpt/%d", ioc->id);
	ioc->fw_event_q = create_singlethread_workqueue(ioc->fw_event_q_name);
	if (!ioc->fw_event_q) {
		printk(MYIOC_s_ERR_FMT "Insufficient memory to add adapter!\n",
		    ioc->name);
		r = -ENOMEM;
		goto out_remove_ioc;
	}

	if ((r = mpt_do_ioc_recovery(ioc, MPT_HOSTEVENT_IOC_BRINGUP,
	    CAN_SLEEP)) != 0){
		printk(MYIOC_s_ERR_FMT "didn't initialize properly! (%d)\n",
		    ioc->name, r);

		destroy_workqueue(ioc->fw_event_q);
		ioc->fw_event_q = NULL;

		list_del(&ioc->list);
		if (ioc->alt_ioc)
			ioc->alt_ioc->alt_ioc = NULL;
		iounmap(ioc->memmap);
		if (pci_is_enabled(pdev))
			pci_disable_device(pdev);
		if (r != -5)
			pci_release_selected_regions(pdev, ioc->bars);

@@ -2012,7 +2021,6 @@ mpt_attach(struct pci_dev *pdev, const struct pci_device_id *id)
		ioc->reset_work_q = NULL;

		kfree(ioc);
		pci_set_drvdata(pdev, NULL);
		return r;
	}

@@ -2040,6 +2048,24 @@ mpt_attach(struct pci_dev *pdev, const struct pci_device_id *id)
			msecs_to_jiffies(MPT_POLLING_INTERVAL));

	return 0;

out_remove_ioc:
	list_del(&ioc->list);
	if (ioc->alt_ioc)
		ioc->alt_ioc->alt_ioc = NULL;

	destroy_workqueue(ioc->reset_work_q);
	ioc->reset_work_q = NULL;

out_unmap_resources:
	iounmap(ioc->memmap);
	pci_disable_device(pdev);
	pci_release_selected_regions(pdev, ioc->bars);

out_free_ioc:
	kfree(ioc);

	return r;
}

/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
@@ -6848,6 +6874,7 @@ mpt_print_ioc_summary(MPT_ADAPTER *ioc, char *buffer, int *size, int len, int sh
	*size = y;
}

#ifdef CONFIG_PROC_FS
static void seq_mpt_print_ioc_summary(MPT_ADAPTER *ioc, struct seq_file *m, int showlan)
{
	char expVer[32];
@@ -6879,6 +6906,7 @@ static void seq_mpt_print_ioc_summary(MPT_ADAPTER *ioc, struct seq_file *m, int

	seq_putc(m, '\n');
}
#endif

/**
 *	mpt_set_taskmgmt_in_progress_flag - set flags associated with task management
+1 −0
Original line number Diff line number Diff line
@@ -596,6 +596,7 @@ config XEN_SCSI_FRONTEND
config HYPERV_STORAGE
	tristate "Microsoft Hyper-V virtual storage driver"
	depends on SCSI && HYPERV
	depends on m || SCSI_FC_ATTRS != m
	default HYPERV
	help
	  Select this option to enable the Hyper-V virtual storage driver.
Loading