GitHub/exynos8895/android_kernel_samsung_universal8895.git
12 years ago[SCSI] lpfc 8.3.31: Fix driver crash during back-to-back ramp events
James Smart [Thu, 10 May 2012 01:18:40 +0000 (21:18 -0400)]
[SCSI] lpfc 8.3.31: Fix driver crash during back-to-back ramp events

Signed-off-by: Alex Iannicelli <alex.iannicelli@emulex.com>
Signed-off-by: James Smart <james.smart@emulex.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] lpfc 8.3.31: Fix log message for Mailbox command when no error is detected
James Smart [Thu, 10 May 2012 01:18:30 +0000 (21:18 -0400)]
[SCSI] lpfc 8.3.31: Fix log message for Mailbox command when no error is detected

Signed-off-by: Alex Iannicelli <alex.iannicelli@emulex.com>
Signed-off-by: James Smart <james.smart@emulex.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] lpfc 8.3.31: Revise FCP LOG for easier Finisar trace correlation
James Smart [Thu, 10 May 2012 01:18:20 +0000 (21:18 -0400)]
[SCSI] lpfc 8.3.31: Revise FCP LOG for easier Finisar trace correlation

Signed-off-by: Alex Iannicelli <alex.iannicelli@emulex.com>
Signed-off-by: James Smart <james.smart@emulex.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] lpfc 8.3.31: Fix build warnings when debugfs is not defined
James Smart [Thu, 10 May 2012 01:18:12 +0000 (21:18 -0400)]
[SCSI] lpfc 8.3.31: Fix build warnings when debugfs is not defined

Signed-off-by: Alex Iannicelli <alex.iannicelli@emulex.com>
Signed-off-by: James Smart <james.smart@emulex.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] lpfc 8.3.31: Fix kernel panic when going into to sleep state
James Smart [Thu, 10 May 2012 01:17:43 +0000 (21:17 -0400)]
[SCSI] lpfc 8.3.31: Fix kernel panic when going into to sleep state

Signed-off-by: Alex Iannicelli <alex.iannicelli@emulex.com>
Signed-off-by: James Smart <james.smart@emulex.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] lpfc 8.3.31: Fix error message displayed even when not an error
James Smart [Thu, 10 May 2012 01:17:37 +0000 (21:17 -0400)]
[SCSI] lpfc 8.3.31: Fix error message displayed even when not an error

Signed-off-by: Alex Iannicelli <alex.iannicelli@emulex.com>
Signed-off-by: James Smart <james.smart@emulex.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] lpfc 8.3.31: Fix Read Link status data
James Smart [Thu, 10 May 2012 01:17:16 +0000 (21:17 -0400)]
[SCSI] lpfc 8.3.31: Fix Read Link status data

Signed-off-by: Alex Iannicelli <alex.iannicelli@emulex.com>
Signed-off-by: James Smart <james.smart@emulex.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] lpfc 8.3.31: Fixed system panic due to midlayer abort and driver complete...
James Smart [Thu, 10 May 2012 01:17:07 +0000 (21:17 -0400)]
[SCSI] lpfc 8.3.31: Fixed system panic due to midlayer abort and driver complete race on SCSI cmd

Signed-off-by: Alex Iannicelli <alex.iannicelli@emulex.com>
Signed-off-by: James Smart <james.smart@emulex.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] lpfc 8.3.31: Fix unable to create vports on FCoE SLI4 adapter
James Smart [Thu, 10 May 2012 01:16:50 +0000 (21:16 -0400)]
[SCSI] lpfc 8.3.31: Fix unable to create vports on FCoE SLI4 adapter

Signed-off-by: Alex Iannicelli <alex.iannicelli@emulex.com>
Signed-off-by: James Smart <james.smart@emulex.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] lpfc 8.3.31: Fix initiator sending flogi after acking flogi from target
James Smart [Thu, 10 May 2012 01:16:42 +0000 (21:16 -0400)]
[SCSI] lpfc 8.3.31: Fix initiator sending flogi after acking flogi from target

Signed-off-by: Alex Iannicelli <alex.iannicelli@emulex.com>
Signed-off-by: James Smart <james.smart@emulex.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] lpfc 8.3.31: Fix bug with driver not supporting the get controller attributes...
James Smart [Thu, 10 May 2012 01:16:24 +0000 (21:16 -0400)]
[SCSI] lpfc 8.3.31: Fix bug with driver not supporting the get controller attributes command

Signed-off-by: Alex Iannicelli <alex.iannicelli@emulex.com>
Signed-off-by: James Smart <james.smart@emulex.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] lpfc 8.3.31: Correct handling of SLI4-port XRI resource-provisioning profile...
James Smart [Thu, 10 May 2012 01:16:12 +0000 (21:16 -0400)]
[SCSI] lpfc 8.3.31: Correct handling of SLI4-port XRI resource-provisioning profile change

Signed-off-by: Alex Iannicelli <alex.iannicelli@emulex.com>
Signed-off-by: James Smart <james.smart@emulex.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] lpfc 8.3.31: Fix bug with driver unload leaving a scsi host for a vport around
James Smart [Thu, 10 May 2012 01:16:03 +0000 (21:16 -0400)]
[SCSI] lpfc 8.3.31: Fix bug with driver unload leaving a scsi host for a vport around

Signed-off-by: Alex Iannicelli <alex.iannicelli@emulex.com>
Signed-off-by: James Smart <james.smart@emulex.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] sg: constify sg_proc_leaf_arr
Jörn Engel [Thu, 12 Apr 2012 21:35:25 +0000 (17:35 -0400)]
[SCSI] sg: constify sg_proc_leaf_arr

Signed-off-by: Joern Engel <joern@logfs.org>
Acked-by: Douglas Gilbert <dgilbert@interlog.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] sg: remove sg_mutex
Jörn Engel [Thu, 12 Apr 2012 21:35:05 +0000 (17:35 -0400)]
[SCSI] sg: remove sg_mutex

With the exception of the detached field, sg_mutex no longer adds any
locking.  detached handling has been broken before and is still broken
and this patch does not seem to make things worse than they were to
begin with.

However, I have observed cases of tasks being blocked for >200s waiting
for sg_mutex.  So the removal clearly adds value for very little cost.

Signed-off-by: Joern Engel <joern@logfs.org>
Acked-by: Douglas Gilbert <dgilbert@interlog.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] sg: completely protect sfds
Jörn Engel [Wed, 25 Apr 2012 15:17:29 +0000 (11:17 -0400)]
[SCSI] sg: completely protect sfds

sfds is protected by sg_index_lock - except for sg_open(), where it
isn't.  Change that and add some documentation.

Signed-off-by: Joern Engel <joern@logfs.org>
Acked-by: Douglas Gilbert <dgilbert@interlog.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] sg: protect sdp->exclude
Jörn Engel [Tue, 24 Apr 2012 20:13:11 +0000 (16:13 -0400)]
[SCSI] sg: protect sdp->exclude

Changes since v1: set_exclude now returns the new value, which gets
rid of the comma expression and the operator precedence bug.  Thanks
to Douglas for spotting it.

sdp->exclude was previously protected by the BKL.  The sg_mutex, which
replaced the BKL, only semi-protected it, as it was missing from
sg_release() and sg_proc_seq_show_debug().  Take an explicit spinlock
for it.

Signed-off-by: Joern Engel <joern@logfs.org>
Acked-by: Douglas Gilbert <dgilbert@interlog.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] sg: prevent unwoken sleep
Jörn Engel [Thu, 12 Apr 2012 21:33:58 +0000 (17:33 -0400)]
[SCSI] sg: prevent unwoken sleep

srp->done is protected by sfp->rq_list_lock everywhere, except for this
one case.  Result can be that the wake-up happens before the cacheline
with the changed srp->done has arrived, so the waiter can go back to
sleep and never be woken up again.

The wait_event_interruptible() means that anyone trying to debug this
unlikely race will likely notice everything working fine again, as the
next signal will unwedge things.  Evil.

Signed-off-by: Joern Engel <joern@logfs.org>
Acked-by: Douglas Gilbert <dgilbert@interlog.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] sg: remove closed flag
Jörn Engel [Thu, 12 Apr 2012 21:33:39 +0000 (17:33 -0400)]
[SCSI] sg: remove closed flag

After sg_release() has been called, noone should be able to actually use
that filedescriptor anymore.  So if closed ever made a difference in the
past five years or so, it would have meant a bug.  Remove it.

Signed-off-by: Joern Engel <joern@logfs.org>
Acked-by: Douglas Gilbert <dgilbert@interlog.com>
[jejb: fix up checkpatch warnings]
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] sg: use wait_event_interruptible()
Jörn Engel [Thu, 12 Apr 2012 21:33:25 +0000 (17:33 -0400)]
[SCSI] sg: use wait_event_interruptible()

Afaics the use of __wait_event_interruptible() as opposed to
wait_event_interruptible() is purely historic.  So let's follow the rest
of the kernel and check the condition before prepare_to_wait() - and
also make the code a bit nicer.

Signed-off-by: Joern Engel <joern@logfs.org>
Acked-by: Douglas Gilbert <dgilbert@interlog.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] sg: remove while (1) non-loop
Jörn Engel [Thu, 12 Apr 2012 21:32:48 +0000 (17:32 -0400)]
[SCSI] sg: remove while (1) non-loop

The while (1) construct isn't actually a loop at all.  So let's not
pretent and obfuscate the code.

Signed-off-by: Joern Engel <joern@logfs.org>
Acked-by: Douglas Gilbert <dgilbert@interlog.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] sg: remove unnecessary indentation
Jörn Engel [Thu, 12 Apr 2012 21:32:17 +0000 (17:32 -0400)]
[SCSI] sg: remove unnecessary indentation

blocking is de-facto a constant and the now-removed comment wasn't all
that useful either.  Without them and the resulting indentation the code
is a bit nicer to read.

Signed-off-by: Joern Engel <joern@logfs.org>
Acked-by: Douglas Gilbert <dgilbert@interlog.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] sd: limit the scope of the async probe domain
Dan Williams [Fri, 23 Mar 2012 00:05:11 +0000 (17:05 -0700)]
[SCSI] sd: limit the scope of the async probe domain

sd injects and synchronizes probe work on the global kernel-wide domain.
This runs into conflict with PM that wants to perform resume actions in
async context:

[  494.237079] INFO: task kworker/u:3:554 blocked for more than 120 seconds.
[  494.294396] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[  494.360809] kworker/u:3     D 0000000000000000     0   554      2 0x00000000
[  494.420739]  ffff88012e4d3af0 0000000000000046 ffff88013200c160 ffff88012e4d3fd8
[  494.484392]  ffff88012e4d3fd8 0000000000012500 ffff8801394ea0b0 ffff88013200c160
[  494.548038]  ffff88012e4d3ae0 00000000000001e3 ffffffff81a249e0 ffff8801321c5398
[  494.611685] Call Trace:
[  494.632649]  [<ffffffff8149dd25>] schedule+0x5a/0x5c
[  494.674687]  [<ffffffff8104b968>] async_synchronize_cookie_domain+0xb6/0x112
[  494.734177]  [<ffffffff810461ff>] ? __init_waitqueue_head+0x50/0x50
[  494.787134]  [<ffffffff8131a224>] ? scsi_remove_target+0x48/0x48
[  494.837900]  [<ffffffff8104b9d9>] async_synchronize_cookie+0x15/0x17
[  494.891567]  [<ffffffff8104ba49>] async_synchronize_full+0x54/0x70  <-- here we wait for async contexts to complete
[  494.943783]  [<ffffffff8104b9f5>] ? async_synchronize_full_domain+0x1a/0x1a
[  495.002547]  [<ffffffffa00114b1>] sd_remove+0x2c/0xa2 [sd_mod]
[  495.051861]  [<ffffffff812fe94f>] __device_release_driver+0x86/0xcf
[  495.104807]  [<ffffffff812fe9bd>] device_release_driver+0x25/0x32  <-- here we take device_lock()

[  853.511341] INFO: task kworker/u:4:549 blocked for more than 120 seconds.
[  853.568693] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[  853.635119] kworker/u:4     D ffff88013097b5d0     0   549      2 0x00000000
[  853.695129]  ffff880132773c40 0000000000000046 ffff880130790000 ffff880132773fd8
[  853.758990]  ffff880132773fd8 0000000000012500 ffff88013288a0b0 ffff880130790000
[  853.822796]  0000000000000246 0000000000000040 ffff88013097b5c8 ffff880130790000
[  853.886633] Call Trace:
[  853.907631]  [<ffffffff8149dd25>] schedule+0x5a/0x5c
[  853.949670]  [<ffffffff8149cc44>] __mutex_lock_common+0x220/0x351
[  854.001225]  [<ffffffff81304bd7>] ? device_resume+0x58/0x1c4
[  854.049082]  [<ffffffff81304bd7>] ? device_resume+0x58/0x1c4
[  854.097011]  [<ffffffff8149ce48>] mutex_lock_nested+0x2f/0x36   <-- here we wait for device_lock()
[  854.145591]  [<ffffffff81304bd7>] device_resume+0x58/0x1c4
[  854.192066]  [<ffffffff81304d61>] async_resume+0x1e/0x45
[  854.237019]  [<ffffffff8104bc93>] async_run_entry_fn+0xc6/0x173  <-- ...while running in async context

Provide a 'scsi_sd_probe_domain' so that async probe actions actions can
be flushed without regard for the state of PM, and allow for the resume
path to handle devices that have transitioned from SDEV_QUIESCE to
SDEV_DEL prior to resume.

Acked-by: Alan Stern <stern@rowland.harvard.edu>
[alan: uplevel scsi_sd_probe_domain, clarify scsi_device_resume]
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
[jejb: remove unneeded config guards in include file]
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] hpsa: dial down lockup detection during firmware flash
Stephen M. Cameron [Tue, 1 May 2012 16:43:42 +0000 (11:43 -0500)]
[SCSI] hpsa: dial down lockup detection during firmware flash

Dial back the aggressiveness of the controller lockup detection thread.
Currently it will declare the controller to be locked up if it goes
for 10 seconds with no interrupts and no change in the heartbeat
register.  Dial back this to 30 seconds with no heartbeat change, and
also snoop the ioctl path and if a firmware flash command is detected,
dial it back further to 4 minutes until the firmware flash command
completes.  The reason for this is that during the firmware flash
operation, the controller apparently doesn't update the heartbeat
register as frequently as it is supposed to, and we can get a false
positive.

Signed-off-by: Stephen M. Cameron <scameron@beardog.cce.hp.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] hpsa: removed unused member maxQsinceinit
Stephen M. Cameron [Tue, 1 May 2012 16:43:37 +0000 (11:43 -0500)]
[SCSI] hpsa: removed unused member maxQsinceinit

Signed-off-by: Stephen M. Cameron <scameron@beardog.cce.hp.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] hpsa: add new RAID level "1(ADM)"
Mike Miller [Tue, 1 May 2012 16:43:32 +0000 (11:43 -0500)]
[SCSI] hpsa: add new RAID level "1(ADM)"

Signed-off-by: Mike Miller <mikem@beardog.cce.hp.com>
Signed-off-by: Stephen M. Cameron <scameron@beardog.cce.hp.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] hpsa: factor out hpsa_free_irqs_and_disable_msix
Stephen M. Cameron [Tue, 1 May 2012 16:43:21 +0000 (11:43 -0500)]
[SCSI] hpsa: factor out hpsa_free_irqs_and_disable_msix

Signed-off-by: Stephen M. Cameron <scameron@beardog.cce.hp.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] hpsa: refine interrupt handler locking for greater concurrency
Matt Gates [Tue, 1 May 2012 16:43:11 +0000 (11:43 -0500)]
[SCSI] hpsa: refine interrupt handler locking for greater concurrency

Use spinlocks with finer granularity in the submission and
completion paths to allow concurrent execution for multiple
reply queues.  In particular, do not hold a spin lock while
submitting a request to the device, nor during most of the
interrupt handler.

Signed-off-by: Matt Gates <matthew.gates@hp.com>
Signed-off-by: Stephen M. Cameron <scameron@beardog.cce.hp.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] hpsa: use multiple reply queues
Matt Gates [Tue, 1 May 2012 16:43:06 +0000 (11:43 -0500)]
[SCSI] hpsa: use multiple reply queues

Smart Arrays can support multiple reply queues onto which command
completions may be deposited.  It can help performance quite a bit
to arrange for command completions to be processed on the same CPU
from which they were submitted to increase the likelihood of cache
hits.

Signed-off-by: Matt Gates <matthew.gates@hp.com>
Signed-off-by: Stephen M. Cameron <scameron@beardog.cce.hp.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] hpsa: factor out tail calls to next_command() in process_(non)indexed_cmd()
Stephen M. Cameron [Tue, 1 May 2012 16:43:01 +0000 (11:43 -0500)]
[SCSI] hpsa: factor out tail calls to next_command() in process_(non)indexed_cmd()

This is in order to smooth the way for upcoming changes to allow use of
multiple reply queues for command completions.

Signed-off-by: Stephen M. Cameron <scameron@beardog.cce.hp.com>
Signed-off-by: Matt Gates <matthew.gates@hp.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] hpsa: do aborts two ways
Stephen M. Cameron [Tue, 1 May 2012 16:42:56 +0000 (11:42 -0500)]
[SCSI] hpsa: do aborts two ways

When aborting a command, the tag is supposed to be
specified as 64-bit little endian.  However, some smart
arrays expect the tag of the command to be aborted to be
specified in a strange byte order.  How to tell which sort
of Smart Array firmware we're dealing with is not obvious.
However, because of the way we construct our tags, the values
of any outstanding tag when specified with the "strange" byte
order will not collide with the value specified in the correct
order.  That means we can safely attempt the abort both ways.

Signed-off-by: Stephen M. Cameron <stephenmcameron@gmail.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] hpsa: add abort error handler function
Stephen M. Cameron [Tue, 1 May 2012 16:42:51 +0000 (11:42 -0500)]
[SCSI] hpsa: add abort error handler function

Signed-off-by: Stephen M. Cameron <scameron@beardog.cce.hp.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] hpsa: remove unused parameter from finish_cmd
Stephen M. Cameron [Tue, 1 May 2012 16:42:46 +0000 (11:42 -0500)]
[SCSI] hpsa: remove unused parameter from finish_cmd

Signed-off-by: Stephen M. Cameron <scameron@beardog.cce.hp.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] hpsa: do not give up retry of driver cmds after only 3 retries
Stephen M. Cameron [Tue, 1 May 2012 16:42:40 +0000 (11:42 -0500)]
[SCSI] hpsa: do not give up retry of driver cmds after only 3 retries

Instead of giving up after 3 immediate retries of driver initiated
commands, back off the rate of retries and retry a bunch more times.

Signed-off-by: Stephen M. Cameron <scameron@beardog.cce.hp.com>
Reviewed-by: Andi Shyti <andi.shyti@gmail.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] hpsa: retry driver initiated commands on busy status
Matt Bondurant [Tue, 1 May 2012 16:42:35 +0000 (11:42 -0500)]
[SCSI] hpsa: retry driver initiated commands on busy status

In shared SAS configurations we might get a busy status
during driver initiated commands (e.g. during rescan for
devices).  We should retry the command in such cases rather
than giving up.

Signed-off-by: Matt Bondurant <Matthew.dav.bondurant@hp.com>
Signed-off-by: Stephen M. Cameron <scameron@beardog.cce.hp.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] hpsa: do not read from controller unnecessarily in completion code
Stephen M. Cameron [Tue, 1 May 2012 16:42:30 +0000 (11:42 -0500)]
[SCSI] hpsa: do not read from controller unnecessarily in completion code

MSI/MSI-X interrupts can't race the DMA completion they are communicating
so no need to read from controller to flush the DMA to the host if
MSI or MSI-X interrupts are being used.

Signed-off-by: Stephen M. Cameron <scameron@beardog.cce.hp.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] hpsa: suppress excessively chatty error messages
Stephen M. Cameron [Tue, 1 May 2012 16:42:25 +0000 (11:42 -0500)]
[SCSI] hpsa: suppress excessively chatty error messages

Default behavior for any CHECK CONDITION excepting a few special cases is to
print out certain parts of the sense buffer and the CDB.  Default behavior
should be to print nothing and let the upper layers or applications decide what
to do about these.  The same information is already available by setting the
appropriate bits of the scsi_logging_level kernel parameter or via
/proc/sys/dev/scsi/logging_level.

Signed-off-by: Stephen M. Cameron <scameron@beardog.cce.hp.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] hpsa: enable bus master bit after pci_enable_device
Stephen M. Cameron [Tue, 1 May 2012 16:42:20 +0000 (11:42 -0500)]
[SCSI] hpsa: enable bus master bit after pci_enable_device

pci_disable_device() disables the bus master bit and pci_enable_device does
not re-enable it.  It needs to be enabled.

Signed-off-by: Stephen M. Cameron <scameron@beardog.cce.hp.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] hpsa: do not skip disabled devices
Stephen M. Cameron [Tue, 1 May 2012 16:42:14 +0000 (11:42 -0500)]
[SCSI] hpsa: do not skip disabled devices

There was code to skip "disabled" devices which was intended to
skip devices disabled in the BIOS, but it really just checks to
see if the device can write to host memory, which this is disabled
by pci_disable_device on driver unload, so this check has the effect
of preventing subsequent load of the driver.  And devices disabled in
the BIOS don't show up at all anyway, so this check never made any
sense to begin with, and should be removed.

Signed-off-by: Stephen M. Cameron <scameron@beardog.cce.hp.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] hpsa: call pci_disable_device on driver unload
Stephen M. Cameron [Tue, 1 May 2012 16:42:09 +0000 (11:42 -0500)]
[SCSI] hpsa: call pci_disable_device on driver unload

As Jenx Axboe explained to me: "In earlier times (2.6.18 and pre, iirc), Linux
disabled IO and mem bars on pci_disable_device(). Now in newer kernel it does
not. And in the newer kernels you run into problems if you DON'T disable the
device on exit, since when it later loads the device is already in the enabled
state - and pci_enable_device() then does nothing. This typically screws
MSI/MSI-X." This is what the big scary comment that says pci_disable_device
does "something nasty" to smart arrays was evidently referring to.

If pci_disable_device is not called on driver rmmod, subsequently insmod'ing
the driver may in result in some cases fail to be able to receive interrupts,
esp.  if other drivers are loaded between unloading and loading hpsa.

Signed-off-by: Stephen M. Cameron <scameron@beardog.cce.hp.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] scsi_transport_spi: fix for unbalanced reference counting
Mike Maslenkin [Sat, 28 Apr 2012 01:32:14 +0000 (05:32 +0400)]
[SCSI] scsi_transport_spi: fix for unbalanced reference counting

Check the domain validation flag on the given device before referencing
scsi_device instance, otherwise if the flag is already set we return without
decrementing the reference count.

Signed-off-by: Mike Maslenkin <mihailm@parallels.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] bnx2i: Updated version and copyright year
Eddie Wai [Wed, 25 Apr 2012 22:08:37 +0000 (15:08 -0700)]
[SCSI] bnx2i: Updated version and copyright year

Old version: 2.7.0.3
New version: 2.7.2.2

Signed-off-by: Eddie Wai <eddie.wai@broadcom.com>
Reviewed-by: Mike Christie <michaelc@cs.wisc.edu>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] bnx2i: Added the setting of target can_queue via target_alloc
Eddie Wai [Wed, 25 Apr 2012 22:03:45 +0000 (15:03 -0700)]
[SCSI] bnx2i: Added the setting of target can_queue via target_alloc

This will set the target can_queue limit to the number of preallocated
session tasks set during creation.

"Could not send nopout" messages were observed without this when the
iSCSI connection experiences dropped frames under heavy I/O stress.

Signed-off-by: Eddie Wai <eddie.wai@broadcom.com>
Reviewed-by: Mike Christie <michaelc@cs.wisc.edu>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] pm8001: raise host can queue
Mark Salyzyn [Wed, 25 Apr 2012 17:02:04 +0000 (13:02 -0400)]
[SCSI] pm8001: raise host can queue

This is a followup to a patch provided by Jack Wang on September 21 2011.

After increasing the CAN_QUEUE to 510 in pm8001 we discovered some performance
degredation from time to time. We needed to increase the MPI queue to
compensate and ensure we never hit that limit. We also needed to double
the margin to support event and administrivial commands that take from
the pool resulting in an occasional largely unproductive command completion
with soft error to the caller when the command pool is overloaded temporarily.

Signed-off-by: Mark Salyzyn <mark_salyzyn@xyratex.com>
Acked-by: Jack Wang <jack_wang@usish.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] ufs: Assign UTRLBAU = upper_32_ bits(UTRLD base address)
Santosh Yaraganavi [Mon, 23 Apr 2012 13:22:11 +0000 (18:52 +0530)]
[SCSI] ufs: Assign UTRLBAU = upper_32_ bits(UTRLD base address)

UTP Transfer request list base registers UTRLBA and UTRLBAU
must be assigned, lower-32 and upper-32 bits of UTRLD list
physical base addresses respectively.

Currently UTRLBAU is being assigned lower-32 bits of UTRLD
physical base address. This will cause an issue with
controllers that can support 64-bit addressing.

This patch correctly assigns upper-32 bits of UTRLD physical
base address to UTRLBAU.

Reported-by: Rene De Jong <rene.dejong@arm.com>
Signed-off-by: Santosh Yaraganavi <santoshsy@gmail.com>
Reviewed-by: Vinayak Holikatti <vinholikatti@gmail.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] fcoe: remove a stray unlock
Dan Carpenter [Fri, 20 Apr 2012 19:16:54 +0000 (12:16 -0700)]
[SCSI] fcoe: remove a stray unlock

We moved the locking in dd060e74fb "[SCSI] fcoe: remove frame dropping
code from fcoe_percpu_clean" but this unlock was missed.

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Robert Love <robert.w.love@intel.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] libfcoe: fix VN2VN N_Port_ID Beacon source MAC
Yi Zou [Fri, 20 Apr 2012 19:16:49 +0000 (12:16 -0700)]
[SCSI] libfcoe: fix VN2VN N_Port_ID Beacon source MAC

FC-BB-6 v1.04 7.9.8.14 N_Port_ID Beacon:

"A N_Port_ID Beacon is multicast and uses the VN_Port MAC address as source
address."

Currently, libfcoe is using ENode MAC, this seems ok and functionality wise
not a problem in my back to back testing setup, however, just fix this to
make libfcoe VN2VN support more spec compliant.

Signed-off-by: Yi Zou <yi.zou@intel.com>
Signed-off-by: Robert Love <robert.w.love@intel.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] fcoe: Don't hold rtnl_mutex in fcoe_update_src_mac
Robert Love [Fri, 20 Apr 2012 19:16:43 +0000 (12:16 -0700)]
[SCSI] fcoe: Don't hold rtnl_mutex in fcoe_update_src_mac

The rtnl_mutex was held to protect calls to dev_uc_add
and dev_uc_del. Holding rtnl is not required as those
functions make use of the netif_addr_lock* API to
protect the MAC changing.

This change fixes the following regression by removing
the rtnl usage when fcoe_update_src_mac is called.

https://bugzilla.kernel.org/show_bug.cgi?id=42918

the existing dependency chain (in reverse order) is:

-> #1 (&fip->ctlr_mutex){+.+...}:
       [<c1091f70>] lock_acquire+0x80/0x1b0
       [<c147655d>] mutex_lock_nested+0x6d/0x340
       [<f8970c32>] fcoe_ctlr_link_up+0x22/0x180 [libfcoe]
       [<f894620e>] fcoe_create+0x47e/0x6e0 [fcoe]
       [<f8973dd3>] fcoe_transport_create+0x143/0x250 [libfcoe]
       [<c10527e0>] param_attr_store+0x30/0x60
       [<c1052696>] module_attr_store+0x26/0x40
       [<c11a201e>] sysfs_write_file+0xae/0x100
       [<c11449df>] vfs_write+0x8f/0x160
       [<c1144cbd>] sys_write+0x3d/0x70
       [<c147a0c4>] syscall_call+0x7/0xb

-> #0 (rtnl_mutex){+.+.+.}:
       [<c109164b>] __lock_acquire+0x140b/0x1720
       [<c1091f70>] lock_acquire+0x80/0x1b0
       [<c147655d>] mutex_lock_nested+0x6d/0x340
       [<c13a10c4>] rtnl_lock+0x14/0x20
       [<f89445ac>] fcoe_update_src_mac+0x2c/0xb0 [fcoe]
       [<f8971712>] fcoe_ctlr_timer_work+0x712/0xb60 [libfcoe]
       [<c104fb69>] process_one_work+0x179/0x5d0
       [<c10502f1>] worker_thread+0x121/0x2d0
       [<c10550ed>] kthread+0x7d/0x90
       [<c1481a82>] kernel_thread_helper+0x6/0x10

other info that might help us debug this:

 Possible unsafe locking scenario:

       CPU0                    CPU1
       ----                    ----
  lock(&fip->ctlr_mutex);
                               lock(rtnl_mutex);
                               lock(&fip->ctlr_mutex);
  lock(rtnl_mutex);

 *** DEADLOCK ***

Signed-off-by: Robert Love <robert.w.love@intel.com>
Tested-by: Bart Van Assche <bvanassche@acm.org>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] libfc: defer releasing master lport until complete fcoe interface cleanuped up
Vasu Dev [Fri, 20 Apr 2012 19:16:38 +0000 (12:16 -0700)]
[SCSI] libfc: defer releasing master lport until complete fcoe interface cleanuped up

The fcoe controller has back references, therefore defer
releasing master lport which gets freed along scsi_host_put
and then free it once fcoe interface is fully cleaned.

Signed-off-by: Vasu Dev <vasu.dev@intel.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
Tested-by: Ross Brattain <ross.b.brattain@intel.com>
Signed-off-by: Robert Love <robert.w.love@intel.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] libfc: flush lport worker after its disabled
Vasu Dev [Fri, 20 Apr 2012 19:16:32 +0000 (12:16 -0700)]
[SCSI] libfc: flush lport worker after its disabled

The lport could get timeout armed while its getting disabled,
so flush lport worker after its disabled and ignore lport
retry in that case instead of WARN_ON.

 [13192.936858] WARNING: at drivers/scsi/libfc/fc_lport.c:1573 fc_lport_timeout+0x53/0xa9 [libfc]()
 [13192.938026] Hardware name: Bochs
 [13192.938620] Modules linked in: fcoe libfcoe libfc scsi_transport_fc scsi_tgt fuse 8021q garp stp llc sunrpc ipv6 uinput microcode joydev pcspkr ixgbe e1000 i2c_piix4 i2c_core virtio_balloon dca mdio virtio_blk virtio_pci virtio_ring virtio floppy [last unloaded: speedstep_lib]
 [13192.942589] Pid: 23605, comm: kworker/0:6 Tainted: G        W    3.2.0+ #71
 [13192.943587] Call Trace:
 [13192.944052]  [<ffffffff810403f4>] warn_slowpath_common+0x85/0x9d
 [13192.944940]  [<ffffffff81040426>] warn_slowpath_null+0x1a/0x1c
 [13192.945734]  [<ffffffffa02746eb>] fc_lport_timeout+0x53/0xa9 [libfc]
 [13192.946665]  [<ffffffff81058d88>] process_one_work+0x20c/0x3ad
 [13192.947541]  [<ffffffff81058cbe>] ? process_one_work+0x142/0x3ad
 [13192.948423]  [<ffffffffa0274698>] ? fc_lport_enter_ns+0x178/0x178 [libfc]
 [13192.949363]  [<ffffffff8105a313>] worker_thread+0xfd/0x181
 [13192.950191]  [<ffffffff8105a216>] ? manage_workers.clone.15+0x173/0x173
 [13192.951100]  [<ffffffff8105e19b>] kthread+0xa4/0xac
 [13192.951755]  [<ffffffff814edbb4>] kernel_thread_helper+0x4/0x10
 [13192.952520]  [<ffffffff814e5cb4>] ? retint_restore_args+0x13/0x13
 [13192.953398]  [<ffffffff8105e0f7>] ? __init_kthread_worker+0x5b/0x5b
 [13192.954278]  [<ffffffff814edbb0>] ? gs_change+0x13/0x13
 [13192.954911] ---[ end trace 9763213b95bbd803 ]---

Signed-off-by: Vasu Dev <vasu.dev@intel.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
Tested-by: Ross Brattain <ross.b.brattain@intel.com>
Signed-off-by: Robert Love <robert.w.love@intel.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] fcoe: remove lport from net device before doing per cpu rx thread cleanup
Vasu Dev [Fri, 20 Apr 2012 19:16:27 +0000 (12:16 -0700)]
[SCSI] fcoe: remove lport from net device before doing per cpu rx thread cleanup

Remove lport from net device and then do synchronize net device to flush
inflight rx frames for the lport before doing fcoe_percpu_clean.

In case of master lport, remove all rx packet handlers completely and
then only do fcoe_percpu_clean. This required splitting fcoe_interface_cleanup
to do remove part separately and for that added func fcoe_interface_remove
and then  call it from fcoe_if_destory before doing fcoe_percpu_clean.
However if fcoe_interface_remove() is already called then
don't call again from fcoe_interface_cleanup() to preserve its
existing flows.

This patch along with Neil's other patch to avoid soft irq context
on ingress will avoid passing up frames on disabled lport as
discussed in this mail thread:-
http://lists.open-fcoe.org/pipermail/devel/2012-February/011947.html

Signed-off-by: Vasu Dev <vasu.dev@intel.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
Tested-by: Ross Brattain <ross.b.brattain@intel.com>
Signed-off-by: Robert Love <robert.w.love@intel.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] ufs: Update MAINTAINERS
Vinayak Holikatti [Fri, 20 Apr 2012 08:41:50 +0000 (14:11 +0530)]
[SCSI] ufs: Update MAINTAINERS

Add myself and Santosh Y as maintainers for drivers/scsi/ufs/

Signed-off-by: Vinayak Holikatti <vinholikatti@gmail.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] ufs: Fix evaluation of UTP task completion code
Venkatraman S [Thu, 19 Apr 2012 06:16:22 +0000 (11:46 +0530)]
[SCSI] ufs: Fix evaluation of UTP task completion code

While interpreting the result of UTP task completion status,
by using boolean &&, the evaluation would fail when the
UPIU_TASK_MANAGEMENT_FUNC_SUCCEEDED was received.

Either UPIU_TASK_MANAGEMENT_FUNC_COMPL or
UPIU_TASK_MANAGEMENT_FUNC_SUCCEEDED should be
considered as a success result.

Reported-by: Joe Perches <joe@perches.com>
Signed-off-by: Venkatraman S <svenkatr@ti.com>
Reviewed-by: Namjae Jeon <linkinjeon@gmail.com>
Acked-by: Santosh Y <santoshsy@gmail.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] mpt2sas: move the scsi_host_put to the right place
Tomas Henzl [Tue, 17 Apr 2012 13:24:48 +0000 (15:24 +0200)]
[SCSI] mpt2sas: move the scsi_host_put to the right place

When scsi_add_host fails the scsi_host_put should be called.

Signed-off-by: Tomas Henzl <thenzl@redhat.com>
Acked-by: "Nandigama, Nagalakshmi" <Nagalakshmi.Nandigama@lsi.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] fc class: fix scanning when devs are offline
Mike Christie [Mon, 16 Apr 2012 02:47:50 +0000 (21:47 -0500)]
[SCSI] fc class: fix scanning when devs are offline

When a rport is added back or the role is changed the fc class
will queue a scan and then call scsi_target_unblock. The problem
with this is if the devices are in the SDEV_OFFLINE state and
the scan is run before the scsi_target_unblock, then the scan
will see LUN0 as offline and the scan will fail. This patch moves
the unblock call to before the scan, so we know the device state
will be set correctly when the scan is run.

Signed-off-by: Mike Christie <michaelc@cs.wisc.edu>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] st: fix memory leak with >1MB tape I/O
David Jeffery [Wed, 11 Apr 2012 16:14:25 +0000 (12:14 -0400)]
[SCSI] st: fix memory leak with >1MB tape I/O

There is a memory leak in the st driver when sending large enough reads or
writes using st's direct I/O path.  As part of mapping the application's
memory, a buffer to hold page pointers is allocated and the count of mapped
pages is stored in field do_dio.  A non-zero do_dio marks that direct I/O is
in use.

But do_dio is only 1 byte in size.  Mapping 256 4k pages overflows
do_dio and causes it to be set to 0, like direct I/O option was not
used.  When the I/O completes, the buffer to hold the page pointers is
not freed, and the page counts of the mapped pages are not reduced.
Every I/O of this size then leaks memory.

The size of do_dio needs to be increased to prevent it wrapping around.

Signed-off-by: David Jeffery <djeffery@redhat.com>
Acked-by: Kai Mäkisara <kai.makisara@kolumbus.fi>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] bfa: Update the MAINTAINERS file.
Krishna Gudipati [Tue, 10 Apr 2012 01:41:43 +0000 (18:41 -0700)]
[SCSI] bfa: Update the MAINTAINERS file.

Signed-off-by: Krishna Gudipati <kgudipat@brocade.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] bfa: Fix bfa logging for Logical port state change notification
Krishna Gudipati [Tue, 10 Apr 2012 01:41:18 +0000 (18:41 -0700)]
[SCSI] bfa: Fix bfa logging for Logical port state change notification

Made changes to have the same logging level for Logical port
online and offline events, to display these events in pairs.

Signed-off-by: Krishna Gudipati <kgudipat@brocade.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] bfa: sysfs model description fix.
Krishna Gudipati [Tue, 10 Apr 2012 01:40:43 +0000 (18:40 -0700)]
[SCSI] bfa: sysfs model description fix.

Make changes to remove unsupported model numbers from the sysfs
model description routine.

Signed-off-by: Krishna Gudipati <kgudipat@brocade.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] bfa: Fix to defer vport delete handler invocation till firmware logo response.
Krishna Gudipati [Tue, 10 Apr 2012 01:40:01 +0000 (18:40 -0700)]
[SCSI] bfa: Fix to defer vport delete handler invocation till firmware logo response.

Made changes to avoid queuing the vport delete work to IM driver
work queue in the bfa_fcb_lport_delete() - since at this stage we
are not completely done with using the vport structure as we are
still waiting for the LOGO response from the fw in online state or
just doing some cleanup. Since queuing up the vport delete work at
this stage will result in the FC transport layer to clean up the vport
before we get the response from firmware.
Made changes to queue the port delete work to the IM driver work queue -
from the bfa_fcs_vport_free() function since at this state we are done
with using the vport data structure and the FCS state machine is completely
cleaned up.

Signed-off-by: Krishna Gudipati <kgudipat@brocade.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] storvsc: Properly handle errors from the host
K. Y. Srinivasan [Thu, 5 Apr 2012 19:26:52 +0000 (12:26 -0700)]
[SCSI] storvsc: Properly handle errors from the host

Hyper-V cannot process some commands like ATA_12 and ATA_16. It also returns a
very generic error when this happens (SRB_STATUS_ERROR).  Most of the time we
treat SRB_STATUS_ERROR as DID_TARGET_FAILURE which causes error handler retry,
but in the case of pass through commands, they'll never succeed (and the error
handler will offline the device), so put a discriminating block in the command
completion routing and send the SRB_STATUS_ERROR upwards with DID_PASSTHROUGH
for commands we know should not be retried.

Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
Reviewed-by: Haiyang Zhang <haiyangz@microsoft.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] be2iscsi: Get Port State and Speed of the Adapter
John Soni Jose [Wed, 4 Apr 2012 04:41:52 +0000 (23:41 -0500)]
[SCSI] be2iscsi: Get Port State and Speed of the Adapter

Implement ISCSI_HOST_PARAM_PORT_STATE and ISCSI_HOST_PARAM_PORT_SPEED
to get the Adapter port state and port name

Signed-off-by: John Soni Jose <sony.john-n@emulex.com>
Signed-off-by: Jayamohan Kallickal <jayamohan.kallickal@emulex.com>
Signed-off-by: Mike Christie <michaelc@cs.wisc.edu>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] be2iscsi: adding functionality to change network settings using iscsiadm
Mike Christie [Wed, 4 Apr 2012 04:41:51 +0000 (23:41 -0500)]
[SCSI] be2iscsi: adding functionality to change network settings using iscsiadm

This patch allows iscsiadm to set/ delete static IP and enable /disable
DHCP.

Signed-off-by: Mike Christie <michaelc@cs.wisc.edu>
Signed-off-by: Jayamohan Kallickal <jayamohan.kallickal@emulex.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] be2iscsi: Adding bsg interface for be2iscsi
Jayamohan Kallickal [Wed, 4 Apr 2012 04:41:50 +0000 (23:41 -0500)]
[SCSI] be2iscsi: Adding bsg interface for be2iscsi

Signed-off-by: Jayamohan Kallickal <jayamohan.kallickal@emulex.com>
Signed-off-by: Mike Christie <michaelc@cs.wisc.edu>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] be2iscsi: Get Initiator Name for the iSCSI_Host
John Soni Jose [Wed, 4 Apr 2012 04:41:49 +0000 (23:41 -0500)]
[SCSI] be2iscsi: Get Initiator Name for the iSCSI_Host

Implement the ISCSI_HOST_PARAM_INITIATOR_NAME for .get_host_param

Signed-off-by: John Soni Jose <sony.john-n@emulex.com>
Signed-off-by: Jayamohan Kallickal <jayamohan.kallickal@emulex.com>
Signed-off-by: Mike Christie <michaelc@cs.wisc.edu>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] be2iscsi: Return async handle of unknown opcode to free list.
Jayamohan Kallickal [Wed, 4 Apr 2012 04:41:48 +0000 (23:41 -0500)]
[SCSI] be2iscsi: Return async handle of unknown opcode to free list.

The async handle corresponding to unknown Opcode was not freed
earlier. This code does the fix for that.

Signed-off-by: John Soni Jose <sony.john-n@emulex.com>
Signed-off-by: Jayamohan Kallickal <jayamohan.kallickal@emulex.com>
Signed-off-by: Mike Christie <michaelc@cs.wisc.edu>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] be2iscsi: Check ASYNC PDU Handle corresponds to HDR/DATA Handle
Jayamohan Kallickal [Wed, 4 Apr 2012 04:41:47 +0000 (23:41 -0500)]
[SCSI] be2iscsi: Check ASYNC PDU Handle corresponds to HDR/DATA Handle

For each ASYNC PDU received there is an HDR and DATA handle for it.
There will be only 1 HDR ASYNC Handle, but DATA Handle can be more
than 1 for each ASYNC PDU received. Checking if the ASYNC Handle
correspongs to HDR or DATA while returning the Handle to the free list.
hwi_free_async_msg just return the handles to the free list. No return
values are needed so changing the return type to void.

Signed-off-by: John Soni Jose <sony.john-n@emulex.com>
Signed-off-by: Jayamohan Kallickal <jayamohan.kallickal@emulex.com>
Signed-off-by: Mike Christie <michaelc@cs.wisc.edu>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] be2iscsi: Bump the driver Version
Jayamohan Kallickal [Wed, 4 Apr 2012 04:41:46 +0000 (23:41 -0500)]
[SCSI] be2iscsi: Bump the driver Version

Signed-off-by: Minh Tran <MinhDuc.Tran@Emulex.Com>
Signed-off-by: Jayamohan Kallickal <jayamohan.kallickal@emulex.com>
Signed-off-by: Mike Christie <michaelc@cs.wisc.edu>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] be2iscsi: Update external Branding to Emulex
Jayamohan Kallickal [Wed, 4 Apr 2012 04:41:45 +0000 (23:41 -0500)]
[SCSI] be2iscsi: Update external Branding to Emulex

Change MODULE_AUTHOR, driver name and other external print strings from
Serverengines to Emulex.

Signed-off-by: Minh Tran <MinhDuc.Tran@Emulex.Com>
Signed-off-by: Jayamohan Kallickal <jayamohan.kallickal@emulex.com>
Signed-off-by: Mike Christie <michaelc@cs.wisc.edu>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] be2iscsi: Fix the function return values.
Jayamohan Kallickal [Wed, 4 Apr 2012 04:41:44 +0000 (23:41 -0500)]
[SCSI] be2iscsi: Fix the function return values.

Signed-off-by: John Soni Jose <sony.john-n@emulex.com>
Signed-off-by: Jayamohan Kallickal <jayamohan.kallickal@emulex.com>
Signed-off-by: Mike Christie <michaelc@cs.wisc.edu>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] be2iscsi: Code cleanup, removing the goto statement
Jayamohan Kallickal [Wed, 4 Apr 2012 04:41:43 +0000 (23:41 -0500)]
[SCSI] be2iscsi: Code cleanup, removing the goto statement

Signed-off-by: John Soni Jose <sony.john-n@emulex.com>
Signed-off-by: Jayamohan Kallickal <jayamohan.kallickal@emulex.com>
Signed-off-by: Mike Christie <michaelc@cs.wisc.edu>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] be2iscsi: Fix double free of MCCQ info memory.
Jayamohan Kallickal [Wed, 4 Apr 2012 04:41:42 +0000 (23:41 -0500)]
[SCSI] be2iscsi: Fix double free of MCCQ info memory.

In case of MCC_Q creation failed, the MCCQ info memory is freed
from be_mcc_queues_destroy and be_mcc_queues_create. This caused
kernel to panic because of double free.

Signed-off-by: John Soni Jose <sony.john-n@emulex.com>
Signed-off-by: Jayamohan Kallickal <jayamohan.kallickal@emulex.com>
Signed-off-by: Mike Christie <michaelc@cs.wisc.edu>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] be2iscsi: Set num_cpu = 1 if pci_enable_msix fails
Jayamohan Kallickal [Wed, 4 Apr 2012 04:41:41 +0000 (23:41 -0500)]
[SCSI] be2iscsi: Set num_cpu = 1 if pci_enable_msix fails

Signed-off-by: Jayamohan Kallickal <jayamohan.kallickal@emulex.com>
Signed-off-by: Mike Christie <michaelc@cs.wisc.edu>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] be2iscsi: Fix typo function name mismatch
Jayamohan Kallickal [Wed, 4 Apr 2012 04:41:40 +0000 (23:41 -0500)]
[SCSI] be2iscsi: Fix typo function name mismatch

Signed-off-by: Minh Tran <MinhDuc.Tran@Emulex.Com>
Signed-off-by: Jayamohan Kallickal <jayamohan.kallickal@emulex.com>
Signed-off-by: Mike Christie <michaelc@cs.wisc.edu>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] be2iscsi: Freeing of WRB and SGL Handle in cleanup task
Mike Christie [Wed, 18 Apr 2012 08:06:00 +0000 (03:06 -0500)]
[SCSI] be2iscsi: Freeing of WRB and SGL Handle in cleanup task

The WRB and SGL Handle allocated for Login task were not freed
back to the pool after the login process was done. This code
releases the WRB and SGL Handle after the login process.

v2:
- Fix up locking so bh calls are not done when not needed.
- Make beiscsi_cleanup_task static.

Signed-off-by: Jayamohan Kallickal <jayamohan.kallickal@emulex.com>
[various fixes]
Signed-off-by: Mike Christie <michaelc@cs.wisc.edu>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] be2iscsi: WRB Initialization and Failure code path change
Jayamohan Kallickal [Wed, 4 Apr 2012 04:41:38 +0000 (23:41 -0500)]
[SCSI] be2iscsi: WRB Initialization and Failure code path change

Removing code duplication during the WRB_Handle and WRB
initialization.
Added memory allocation failure handling code during WRB
initialization.

Signed-off-by: Jayamohan Kallickal <jayamohan.kallickal@emulex.com>
Signed-off-by: Mike Christie <michaelc@cs.wisc.edu>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] be2iscsi: Fix in ASYNC PDU stitching logic.
Jayamohan Kallickal [Wed, 4 Apr 2012 04:41:37 +0000 (23:41 -0500)]
[SCSI] be2iscsi: Fix in ASYNC PDU stitching logic.

The buffer length passed for processing the ASYNC PDU
was not proper.

Signed-off-by: John Soni Jose <sony.john-n@emulex.com>
Signed-off-by: Jayamohan Kallickal <jayamohan.kallickal@emulex.com>
Signed-off-by: Mike Christie <michaelc@cs.wisc.edu>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] be2iscsi: Fix in the Asynchronous Code Path
Jayamohan Kallickal [Wed, 4 Apr 2012 04:41:36 +0000 (23:41 -0500)]
[SCSI] be2iscsi: Fix in the Asynchronous Code Path

Set the ASYNC PDU Handle pBuffer for Data ring with the VA/PA
of the allocated memory for it.
To get the correct ASYNC PDY Handle iterate the list and compare
the PA set during initialization with the passed PHY Address.
The buffer_size and num_enteries are common for HDR and Data ring

Signed-off-by: Jayamohan Kallickal <jayamohan.kallickal@emulex.com>
Signed-off-by: Mike Christie <michaelc@cs.wisc.edu>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] hpsa: use check_signature
Akinobu Mita [Wed, 4 Apr 2012 13:14:59 +0000 (22:14 +0900)]
[SCSI] hpsa: use check_signature

Use check_signature to find a signature in the mmio address.

Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>
Acked-by: Mike Miller <mike.miller@hp.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] aacraid: add an iounmap call to aac_src_ioremap
Tomas Henzl [Thu, 29 Mar 2012 15:23:46 +0000 (17:23 +0200)]
[SCSI] aacraid: add an iounmap call to aac_src_ioremap

The patch 116046127d1a3bad2853d02781ad9fee33f05e5a "[SCSI] aacraid: Added
Sync.mode to support series 7/8/9 controllers" removed an iounmap call from
aac_src_ioremap. Before that, the iounmap has been called twice with the same
value (dev->base and dev->regs.src.bar0) and the iounmap complained about it
(iounmap: bad address ...).

The proper solution is a change the paremeter from bar0 to bar1.
Fix this by adding a an iounmap(dev->regs.src.bar1) call.

Signed-off-by: Tomas Henzl <thenzl@redhat.com>
Acked-by: Achim Leubner <achim_leubner@pmc-sierra.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] scsi_dh_alua: Optimize the STPG command
Moger, Babu [Tue, 27 Mar 2012 20:56:20 +0000 (20:56 +0000)]
[SCSI] scsi_dh_alua: Optimize the STPG command

This patch optimizes the set target port group(STPG) command. During our
testing, we found that it is not optimal to send stpg command every time
the path group switch happens. This patch uses PREF (preferred target port)
bit with combination of flags passed by multipath user level tool to
optimize this behaviour. If PREF bit is set then it issues a STPG command,
otherwise it will let implicit transfer take place.

By default there is no change in the behaviour. User tool needs to pass the
parameter to make this change take effect. Patch has been tested on NetApp
E series storage.

Signed-off-by: Babu Moger <babu.moger@netapp.com>
Reviewed-by: Hannes Reinecke <hare@suse.de>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] scsi_dh_alua: Store the PREF bit from RTPG
Moger, Babu [Tue, 27 Mar 2012 20:56:08 +0000 (20:56 +0000)]
[SCSI] scsi_dh_alua: Store the PREF bit from RTPG

PREF bit indicates preferred target port group for accessing a logical
unit. This bit is used to optimize the STPG command handling.

Signed-off-by: Babu Moger <babu.moger@netapp.com>
Reviewed-by: Hannes Reinecke <hare@suse.de>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] scsi_dh_alua: Inroduce the set_params interface scsi_dh_alua handler
Moger, Babu [Tue, 27 Mar 2012 20:55:49 +0000 (20:55 +0000)]
[SCSI] scsi_dh_alua: Inroduce the set_params interface scsi_dh_alua handler

Handler expects only one parameter to set the flag ALUA_OPTIMIZE_STPG.
This flag is used to optimize the STPG behaviour. There is no change in
behaviour by default.

For example, to set the flag pass the following parameters from multipath.conf
hardware_handler        "2 alua 1"

Signed-off-by: Babu Moger <babu.moger@netapp.com>
Reviewed-by: Hannes Reinecke <hare@suse.de>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] be2iscsi: Remove unused OFFSET_IN_PAGE() macro
Roland Dreier [Thu, 1 Mar 2012 06:41:49 +0000 (22:41 -0800)]
[SCSI] be2iscsi: Remove unused OFFSET_IN_PAGE() macro

Signed-off-by: Roland Dreier <roland@purestorage.com>
Reviewed-by: Mike Christie <michaelc@cs.wisc.edu>
Acked-by: Jayamohan Kallickal <jayamohan.kallickal@emulex.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] mpt2sas: Bump driver vesion to 13.100.00.00
nagalakshmi.nandigama@lsi.com [Tue, 20 Mar 2012 06:40:28 +0000 (12:10 +0530)]
[SCSI] mpt2sas: Bump driver vesion to 13.100.00.00

Signed-off-by: Nagalakshmi Nandigama <nagalakshmi.nandigama@lsi.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] mpt2sas: Fix for panic happening because of improper memory allocation
nagalakshmi.nandigama@lsi.com [Tue, 20 Mar 2012 06:40:01 +0000 (12:10 +0530)]
[SCSI] mpt2sas: Fix for panic happening because of improper memory allocation

The ioc->pfacts member in the IOC structure is getting set to zero
following a call to _base_get_ioc_facts due to the memset in that routine.
So if the ioc->pfacts was read after a host reset, there would be a NULL
pointer dereference. The routine _base_get_ioc_facts is called from context
of host reset.  The problem in _base_get_ioc_facts  is the size of
Mpi2IOCFactsReply is 64, whereas the sizeof "struct mpt2sas_facts" is 60,
so there is a four byte overflow resulting from the memset.

Also, there is memset in _base_get_port_facts using the incorrect structure,
it should be "struct mpt2sas_port_facts" instead of Mpi2PortFactsReply.

Signed-off-by: Nagalakshmi Nandigama <nagalakshmi.nandigama@lsi.com>
CC: stable@vger.kernel.org
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] mpt2sas: Fix for hard drive going OFFLINE when hard reset issued and simultane...
nagalakshmi.nandigama@lsi.com [Tue, 20 Mar 2012 06:39:26 +0000 (12:09 +0530)]
[SCSI] mpt2sas: Fix for hard drive going OFFLINE when hard reset issued and simultaneously another hard drive is hot unplugged

Following the host reset, the firmware discovery is reassigning another hard
drive in the topology to the same device handle as that device is getting hot
removed. Until the driver device removal routine is called, there will be two
hard drive with the matching device handle in the internal device link
list. In the device removal routine, a separate function which moves the
device from BLOCKED into OFFLINE state.  Since this routine is passed with the
device handle passed as input parameter, the routine will be traversing the
internal device link list searching for matching device handle. This results
in two devices with matching device handle, therefore both devices goes
OFFLINE.

To fix this issue,the input parameter is changed from device handle to SAS
address, therefore only the device that is hot unplugged will be placed in
OFFLINE state.

Signed-off-by: Nagalakshmi Nandigama <nagalakshmi.nandigama@lsi.com>
Cc: stable@vger.kernel.org
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] mpt2sas: Set the phy identifier of the end device to the phy number of the...
nagalakshmi.nandigama@lsi.com [Tue, 20 Mar 2012 06:38:40 +0000 (12:08 +0530)]
[SCSI] mpt2sas: Set the phy identifier of the end device to the phy number of the parent device it is linked to

The phy_identifier inside the routine _transport_set_identify()
is set to sas_device_page_zero->PhyNum. This returns the
phy number of the parent device this device is linked to.

Signed-off-by: Nagalakshmi Nandigama <nagalakshmi.nandigama@lsi.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] mpt2sas : While enabling phy, read the current port number from sas iounit...
nagalakshmi.nandigama@lsi.com [Tue, 20 Mar 2012 06:38:11 +0000 (12:08 +0530)]
[SCSI] mpt2sas : While enabling phy, read the current port number from sas iounit page 0 instead of page 1

The port number is changing after disabling/enabling phys using the SysFS
interface This is because the firmware behavour changed where it would read
the the port number then set it to some different value even though Auto Port
Config is turned on.  With this change of behavour in FW, it is possible that
the expanders are moved from one port to another after disabling /enabling
phys. This is occuring because the port number in sas iounit page 1 is not
matching up to the current port in page 0. In order to fix this the driver is
modified to read the current port number from sas iounit page 0 instead of
page 1.  Also copy the port and phy flags over from page 0 to page 1.

Signed-off-by: Nagalakshmi Nandigama <nagalakshmi.nandigama@lsi.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] mpt2sas: Fix linux driver sparse errors
nagalakshmi.nandigama@lsi.com [Tue, 20 Mar 2012 06:37:48 +0000 (12:07 +0530)]
[SCSI] mpt2sas: Fix linux driver sparse errors

Fix several endian issues found by runing sparse.

Signed-off-by: Nagalakshmi Nandigama <nagalakshmi.nandigama@lsi.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] mpt2sas: Fix security scan issues reported by source code analysis tool
nagalakshmi.nandigama@lsi.com [Tue, 20 Mar 2012 06:37:17 +0000 (12:07 +0530)]
[SCSI] mpt2sas: Fix security scan issues reported by source code analysis tool

Modified the source code as per the findings reported by the source
code analysis tool. Source code for the following functionalities
has been touched. None of the driver functionalities has changed.

- SMP Passthrough IOCTL
- Debug messages for MPT Replies (i.e. bit 9 of Logging Level)
- Task Management using sysfs
- Device removal, i.e. when a target device (including any PD within a volume)
  is removed, and Volume Deletion.
- Trace Buffer

Signed-off-by: Nagalakshmi Nandigama <nagalakshmi.nandigama@lsi.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] mpt2sas: Improvement were made to better protect the sas_device, raid_device...
nagalakshmi.nandigama@lsi.com [Tue, 20 Mar 2012 06:36:50 +0000 (12:06 +0530)]
[SCSI] mpt2sas: Improvement were made to better protect the sas_device, raid_device, and expander_device lists

There were possible race conditions surrounding reading an object
from the link list while from another context in the driver was
removing it. The nature of this enhancement is to rearrange locking
so the link lists are better protected.

Change set:
(1) numerous routines were rearranged so spin locks are held through
the entire time a link list object is being read from or written to.
(2) added new routines for object deletion from link list.  Thus ensuring
lock was held during the deletion of the link list object, then and memory
for object freed outside the lock. The memory was freed outside the lock
so driver had access to device object info which was required for
notifying the scsi mid layer that a device was getting deleted.
(3) added the ioc->blocking_handles parameter.  This is a bitmask used
to identify which devices need blocking when there is device loss.  This was
introduced so that lock can be held for the entire time traversing the link
list objects, and the bitmask was set to indicate which device handles need
blocking. Oustide the lock the ioc->blocking_handles bitmask is traversed,
with the respective device handle the scsi mid layer is called for moving
devices into blocking state.

Signed-off-by: Nagalakshmi Nandigama <nagalakshmi.nandigama@lsi.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] mpt2sas : Perform Target Reset instead of HBA reset when a SATA_PASSTHROUGH...
nagalakshmi.nandigama@lsi.com [Tue, 20 Mar 2012 06:35:11 +0000 (12:05 +0530)]
[SCSI] mpt2sas : Perform Target Reset instead of HBA reset when a SATA_PASSTHROUGH cmd timeout happens

Signed-off-by: Nagalakshmi Nandigama <nagalakshmi.nandigama@lsi.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] mpt2sas: Added multisegment mode support for Linux BSG Driver
nagalakshmi.nandigama@lsi.com [Tue, 20 Mar 2012 06:34:43 +0000 (12:04 +0530)]
[SCSI] mpt2sas: Added multisegment mode support for Linux BSG Driver

Added support for Block IO requests with multiple segments (vectors) in
the SMP handler of the SAS Transport Class. This is required by the
BSG driver. Multisegment support added for both, Request and Response.

Signed-off-by: Nagalakshmi Nandigama <nagalakshmi.nandigama@lsi.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] mpt2sas: Removed redundant global mutex for IOCTLs
nagalakshmi.nandigama@lsi.com [Tue, 20 Mar 2012 06:34:11 +0000 (12:04 +0530)]
[SCSI] mpt2sas: Removed redundant global mutex for IOCTLs

When the lock_kernel and unlock_kernel routines were removed in the
2.6.39 kernel, a global mutex was added on top of the existing mutex
which already existed. With this implementation, only one IOCTL
will be active at any time no matter how many ever controllers
are present. This causes poor performance.

Removed the global mutex so that the driver can work with the existing
semaphore that was already part of the existing code.

Signed-off-by: Nagalakshmi Nandigama <nagalakshmi.nandigama@lsi.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] mpt2sas: MPI next revision header update
nagalakshmi.nandigama@lsi.com [Tue, 20 Mar 2012 06:33:16 +0000 (12:03 +0530)]
[SCSI] mpt2sas: MPI next revision header update

Changeset in MPI headers:
1) Bumped MPI2_HEADER_VERSION_UNIT
2) Added 4K sectors supported bit to CapabilitiesFlags field of IOC Page 6.
3) Added UEFIVersion field to BIOS Page 1 and defined additional
    BiosOptions bits to control UEFI behavior.

Signed-off-by: Nagalakshmi Nandigama <nagalakshmi.nandigama@lsi.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] megaraid_sas: Version and Changelog update
adam radford [Tue, 20 Mar 2012 02:50:06 +0000 (19:50 -0700)]
[SCSI] megaraid_sas: Version and Changelog update

The following patch for megaraid_sas updates the driver version to
v00.00.06.15-rc1, and updates Documentation/scsi/ChangeLog.megaraid_sas.

Signed-off-by: Adam Radford <aradford@gmail.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] megaraid_sas: Add fpRead/WriteCapable, fpRead/WriteAcrossStripe checks
adam radford [Tue, 20 Mar 2012 02:50:00 +0000 (19:50 -0700)]
[SCSI] megaraid_sas: Add fpRead/WriteCapable, fpRead/WriteAcrossStripe checks

The following patch for megaraid_sas fixes the fastpath code decision
logic to use fpRead/WriteCapable, fpRead/WriteAcrossStripe flags
instead of the old logic.  This fixes a bug where fastpath writes
could be sent to a read only LD.

Signed-off-by: Adam Radford <aradford@gmail.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] megaraid_sas: Optimize HostMSIxVectors setting
adam radford [Tue, 20 Mar 2012 02:49:53 +0000 (19:49 -0700)]
[SCSI] megaraid_sas: Optimize HostMSIxVectors setting

The following patch for megaraid_sas removes an incorrect comment and
optimizes the setting of HostMSIxVectors.  This was found during a
code review by Tomas Henzl @ RedHat.

Signed-off-by: Adam Radford <aradford@gmail.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
12 years ago[SCSI] pm8001: fix endian issue with code optimization.
Santosh Nayak [Mon, 19 Mar 2012 15:56:27 +0000 (21:26 +0530)]
[SCSI] pm8001: fix endian issue with code optimization.

Data type of the 'tag' field of 'fw_flash_Update_resp' should be __le32.

Data type of 'pHeader' should be __le32.  Remove 2nd cast to 'piomb'.

Signed-off-by: Santosh Nayak <santoshprasadnayak@gmail.com>
Acked-by: Jack Wang <jack_wang@usish.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>