Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c5b0079c authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6: (22 commits)
  [SCSI] ibmvfc: Driver version 1.0.2
  [SCSI] ibmvfc: Add details to async event log
  [SCSI] ibmvfc: Sanitize response lengths
  [SCSI] ibmvfc: Fix for lost async events
  [SCSI] ibmvfc: Fixup host state during reinit
  [SCSI] ibmvfc: Fix another hang on module removal
  [SCSI] ibmvscsi: Fixup desired DMA value for shared memory partitions
  [SCSI] megaraid_sas: remove sysfs dbg_lvl world writeable permissions
  [SCSI] qla2xxx: Update version number to 8.02.01-k7.
  [SCSI] qla2xxx: Explicitly tear-down vports during PCI remove_one().
  [SCSI] qla2xxx: Reference proper ha during SBR handling.
  [SCSI] qla2xxx: Set npiv_supported flag for FCoE HBAs.
  [SCSI] qla2xxx: Don't leak SG-DMA mappings while aborting commands.
  [SCSI] qla2xxx: Correct vport-state management issues during ISP-ABORT.
  [SCSI] qla2xxx: Correct synchronization of software/firmware fcport states.
  [SCSI] scsi_dh: Initialize lun_state in check_ownership()
  [SCSI] scsi_dh: Do not use scsilun in rdac hardware handler
  [SCSI] megaraid_sas: version and Documentation Update
  [SCSI] megaraid_sas: add new controllers (0x78 0x79)
  [SCSI] megaraid_sas: add the shutdown DCMD cmd to driver shutdown routine
  ...
parents 5f22ca9b 7d0e367a
Loading
Loading
Loading
Loading
+23 −0
Original line number Diff line number Diff line

1 Release Date    : Thur.July. 24 11:41:51 PST 2008 -
                       (emaild-id:megaraidlinux@lsi.com)
                       Sumant Patro
                       Bo Yang

2 Current Version : 00.00.04.01
3 Older Version   : 00.00.03.22

1. Add the new controller (0078, 0079) support to the driver
       Those controllers are LSI's next generatation(gen2) SAS controllers.

1 Release Date    : Mon.June. 23 10:12:45 PST 2008 -
                       (emaild-id:megaraidlinux@lsi.com)
                       Sumant Patro
                       Bo Yang

2 Current Version : 00.00.03.22
3 Older Version   : 00.00.03.20

1. Add shutdown DCMD cmd to the shutdown routine to make FW shutdown proper.
2. Unexpected interrupt occurs in HWR Linux driver, add the dumy readl pci flush will fix this issue.

1 Release Date    : Mon. March 10 11:02:31 PDT 2008 -
			(emaild-id:megaraidlinux@lsi.com)
			Sumant Patro
+2 −1
Original line number Diff line number Diff line
@@ -376,7 +376,7 @@ static int get_lun(struct scsi_device *sdev, struct rdac_dh_data *h)
		if (inqp->page_id[0] != 'e' || inqp->page_id[1] != 'd' ||
		    inqp->page_id[2] != 'i' || inqp->page_id[3] != 'd')
			return SCSI_DH_NOSYS;
		h->lun = scsilun_to_int((struct scsi_lun *)inqp->lun);
		h->lun = inqp->lun[7]; /* Uses only the last byte */
	}
	return err;
}
@@ -386,6 +386,7 @@ static int check_ownership(struct scsi_device *sdev, struct rdac_dh_data *h)
	int err;
	struct c9_inquiry *inqp;

	h->lun_state = RDAC_LUN_UNOWNED;
	err = submit_inquiry(sdev, 0xC9, sizeof(struct c9_inquiry), h);
	if (err == SCSI_DH_OK) {
		inqp = &h->inq.c9;
+22 −15
Original line number Diff line number Diff line
@@ -556,11 +556,12 @@ static void ibmvfc_link_down(struct ibmvfc_host *vhost,
/**
 * ibmvfc_init_host - Start host initialization
 * @vhost:		ibmvfc host struct
 * @relogin:	is this a re-login?
 *
 * Return value:
 *	nothing
 **/
static void ibmvfc_init_host(struct ibmvfc_host *vhost)
static void ibmvfc_init_host(struct ibmvfc_host *vhost, int relogin)
{
	struct ibmvfc_target *tgt;

@@ -574,6 +575,11 @@ static void ibmvfc_init_host(struct ibmvfc_host *vhost)
	}

	if (!ibmvfc_set_host_state(vhost, IBMVFC_INITIALIZING)) {
		if (!relogin) {
			memset(vhost->async_crq.msgs, 0, PAGE_SIZE);
			vhost->async_crq.cur = 0;
		}

		list_for_each_entry(tgt, &vhost->targets, queue)
			tgt->need_login = 1;
		scsi_block_requests(vhost->host);
@@ -1059,9 +1065,10 @@ static void ibmvfc_get_starget_port_id(struct scsi_target *starget)
static int ibmvfc_wait_while_resetting(struct ibmvfc_host *vhost)
{
	long timeout = wait_event_timeout(vhost->init_wait_q,
					  (vhost->state == IBMVFC_ACTIVE ||
					  ((vhost->state == IBMVFC_ACTIVE ||
					    vhost->state == IBMVFC_HOST_OFFLINE ||
					   vhost->state == IBMVFC_LINK_DEAD),
					    vhost->state == IBMVFC_LINK_DEAD) &&
					   vhost->action == IBMVFC_HOST_ACTION_NONE),
					  (init_timeout * HZ));

	return timeout ? 0 : -EIO;
@@ -1450,8 +1457,8 @@ static void ibmvfc_scsi_done(struct ibmvfc_event *evt)
	struct ibmvfc_cmd *vfc_cmd = &evt->xfer_iu->cmd;
	struct ibmvfc_fcp_rsp *rsp = &vfc_cmd->rsp;
	struct scsi_cmnd *cmnd = evt->cmnd;
	int rsp_len = 0;
	int sense_len = rsp->fcp_sense_len;
	u32 rsp_len = 0;
	u32 sense_len = rsp->fcp_sense_len;

	if (cmnd) {
		if (vfc_cmd->response_flags & IBMVFC_ADAPTER_RESID_VALID)
@@ -1468,7 +1475,7 @@ static void ibmvfc_scsi_done(struct ibmvfc_event *evt)
				rsp_len = rsp->fcp_rsp_len;
			if ((sense_len + rsp_len) > SCSI_SENSE_BUFFERSIZE)
				sense_len = SCSI_SENSE_BUFFERSIZE - rsp_len;
			if ((rsp->flags & FCP_SNS_LEN_VALID) && rsp->fcp_sense_len)
			if ((rsp->flags & FCP_SNS_LEN_VALID) && rsp->fcp_sense_len && rsp_len <= 8)
				memcpy(cmnd->sense_buffer, rsp->data.sense + rsp_len, sense_len);

			ibmvfc_log_error(evt);
@@ -2077,17 +2084,18 @@ static void ibmvfc_handle_async(struct ibmvfc_async_crq *crq,
{
	const char *desc = ibmvfc_get_ae_desc(crq->event);

	ibmvfc_log(vhost, 3, "%s event received\n", desc);
	ibmvfc_log(vhost, 3, "%s event received. scsi_id: %lx, wwpn: %lx,"
		   " node_name: %lx\n", desc, crq->scsi_id, crq->wwpn, crq->node_name);

	switch (crq->event) {
	case IBMVFC_AE_LINK_UP:
	case IBMVFC_AE_RESUME:
		vhost->events_to_log |= IBMVFC_AE_LINKUP;
		ibmvfc_init_host(vhost);
		ibmvfc_init_host(vhost, 1);
		break;
	case IBMVFC_AE_SCN_FABRIC:
		vhost->events_to_log |= IBMVFC_AE_RSCN;
		ibmvfc_init_host(vhost);
		ibmvfc_init_host(vhost, 1);
		break;
	case IBMVFC_AE_SCN_NPORT:
	case IBMVFC_AE_SCN_GROUP:
@@ -2133,13 +2141,13 @@ static void ibmvfc_handle_crq(struct ibmvfc_crq *crq, struct ibmvfc_host *vhost)
			/* Send back a response */
			rc = ibmvfc_send_crq_init_complete(vhost);
			if (rc == 0)
				ibmvfc_init_host(vhost);
				ibmvfc_init_host(vhost, 0);
			else
				dev_err(vhost->dev, "Unable to send init rsp. rc=%ld\n", rc);
			break;
		case IBMVFC_CRQ_INIT_COMPLETE:
			dev_info(vhost->dev, "Partner initialization complete\n");
			ibmvfc_init_host(vhost);
			ibmvfc_init_host(vhost, 0);
			break;
		default:
			dev_err(vhost->dev, "Unknown crq message type: %d\n", crq->format);
@@ -3357,8 +3365,6 @@ static void ibmvfc_npiv_login(struct ibmvfc_host *vhost)
	mad->buffer.va = vhost->login_buf_dma;
	mad->buffer.len = sizeof(*vhost->login_buf);

	memset(vhost->async_crq.msgs, 0, PAGE_SIZE);
	vhost->async_crq.cur = 0;
	ibmvfc_set_host_action(vhost, IBMVFC_HOST_ACTION_INIT_WAIT);

	if (!ibmvfc_send_event(evt, vhost, default_timeout))
@@ -3601,8 +3607,9 @@ static void ibmvfc_do_work(struct ibmvfc_host *vhost)
			}
		}

		if (vhost->reinit) {
		if (vhost->reinit && !ibmvfc_set_host_state(vhost, IBMVFC_INITIALIZING)) {
			vhost->reinit = 0;
			scsi_block_requests(vhost->host);
			ibmvfc_set_host_action(vhost, IBMVFC_HOST_ACTION_QUERY);
		} else {
			ibmvfc_set_host_action(vhost, IBMVFC_HOST_ACTION_NONE);
+2 −2
Original line number Diff line number Diff line
@@ -29,8 +29,8 @@
#include "viosrp.h"

#define IBMVFC_NAME	"ibmvfc"
#define IBMVFC_DRIVER_VERSION		"1.0.1"
#define IBMVFC_DRIVER_DATE		"(July 11, 2008)"
#define IBMVFC_DRIVER_VERSION		"1.0.2"
#define IBMVFC_DRIVER_DATE		"(August 14, 2008)"

#define IBMVFC_DEFAULT_TIMEOUT	15
#define IBMVFC_INIT_TIMEOUT		30
+1 −1
Original line number Diff line number Diff line
@@ -1636,7 +1636,7 @@ static unsigned long ibmvscsi_get_desired_dma(struct vio_dev *vdev)
	unsigned long desired_io = max_requests * sizeof(union viosrp_iu);

	/* add io space for sg data */
	desired_io += (IBMVSCSI_MAX_SECTORS_DEFAULT *
	desired_io += (IBMVSCSI_MAX_SECTORS_DEFAULT * 512 *
	                     IBMVSCSI_CMDS_PER_LUN_DEFAULT);

	return desired_io;
Loading