13 Jul, 2016
37 commits
-
The driver creates its own per-CPU threads which are updated based on
CPU hotplug events. It is also possible to use kworkers and remove some
of the kthread infrastrucure.The code checked ->thread to decide if there is an active per-CPU
thread. By using the kworker infrastructure this is no longer
possible (or required). The thread pointer is saved in `kthread' instead
of `thread' so anything trying to use thread is caught by the
compiler. Currently only the bnx2fc driver is using struct fcoe_percpu_s
and the kthread member.After a CPU went offline, we may still enqueue items on the "offline"
CPU. This isn't much of a problem. The work will be done on a random
CPU. The allocated crc_eof_page page won't be cleaned up. It is probably
expected that the CPU comes up at some point so it should not be a
problem. The crc_eof_page memory is released of course once the module
is removed.This patch was only compile-tested due to -ENODEV.
Cc: Vasu Dev
Cc: "James E.J. Bottomley"
Cc: "Martin K. Petersen"
Cc: Christoph Hellwig
Cc: fcoe-devel@open-fcoe.org
Cc: linux-scsi@vger.kernel.org
Signed-off-by: Sebastian Andrzej Siewior
Tested-by: Johannes Thumshirn
Reviewed-by: Johannes Thumshirn
Signed-off-by: Martin K. Petersen -
Vasu is going to resign from his maintainer role and I'll take over.
Signed-off-by: Johannes Thumshirn
Acked-by: Vasu Dev
Signed-off-by: Martin K. Petersen -
If there is a dma mapping error snic kfree()s buf right before printing
it. Change the order to not accidently trip on memory that's not owned
by us anymore.Signed-off-by: Johannes Thumshirn
Acked-by: Narsimhulu Musini
Reviewed-by: Laurence Oberman
Signed-off-by: Martin K. Petersen -
Enabling format checking in dprintk() shows that wd7000_biosparam uses
an incorrect format string for sector_t:drivers/scsi/wd7000.c: In function 'wd7000_biosparam':
drivers/scsi/wd7000.c:1594:21: error: format '%d' expects argument of type 'int', but argument 3 has type 'sector_t {aka long long unsigned int}' [-Werror=format=]As sector_t can be 32-bit wide, this adds a cast to 'u64' and prints
that with the correct format. The change to use no_printk() generally
helps with finding this kind of hidden format string bug, and I found
that when building with "-Wextra", which warned about an empty else
clause in} else
dprintk("ok!\n");Signed-off-by: Arnd Bergmann
Signed-off-by: Martin K. Petersen -
The fc_get_host_stats() function contains a complex conversion from
jiffies to timespec to seconds. As we try to get rid of uses of struct
timespec, we can clean this up and replace it with a simpler
computation.Simply dividing the difference in jiffies by HZ is not only much more
efficient, it also avoids a problem that causes the
seconds_since_last_reset value to be incorrect if jiffies has overrun
since the 'boot_time' value was recorded.Signed-off-by: Arnd Bergmann
Reviewed-by: Bart Van Assche
Signed-off-by: Martin K. Petersen -
When enabling the debug options NCR_700_DEBUG and NCR_700_TAG_DEBUG
various printk format warnings can be seen like:
drivers/scsi/53c700.c:357:2: warning: format %p expects argument of type void * , but argument 4 has type dma_addr_t [-Wformat=]
script_patch_32(hostdata->dev, script, MessageLocation,Fix them by using the right printk format specifiers.
Signed-off-by: Helge Deller
Signed-off-by: Martin K. Petersen -
[mkp: Updated MAINTAINERS]
Signed-off-by: Jim Gill
Acked-by: Arvind Kumar
Signed-off-by: Martin K. Petersen -
Some CXL Flash cards need notification of device shutdown in order to
flush pending I/Os.A PCI notification hook for shutdown has been added where the driver
notifies the card and returns. When the device is removed in the PCI
remove path, notification code will wait for shutdown processing to
complete.Signed-off-by: Uma Krishnan
Acked-by: Manoj N. Kumar
Acked-by: Matthew R. Ochs
Signed-off-by: Martin K. Petersen -
Device dependent flags are needed to support functions that are specific
to a particular device.One such case is - some CXL Flash cards need to be notified of device
shutdown. For other CXL devices, this feature does not prove to be
useful yet. Such distinct features need to be identified in the driver
to bypass or invoke specific functionality.In this patch, a member 'flags' has been added to device dependent
values. These flags will be used and expanded in the future to support
various device specific functions.Signed-off-by: Uma Krishnan
Acked-by: Manoj N. Kumar
Acked-by: Matthew R. Ochs
Signed-off-by: Martin K. Petersen -
While running 'sg_reset -H' in a loop with a user-space application active,
hit the following exception:cpu 0x2: Vector: 300 (Data Access)
pc: : afu_attach+0x50/0x240 [cxlflash]
lr: : cxlflash_afu_recover+0x3dc/0x7d0 [cxlflash]
pid = 20365, comm = run_block_fvtLinux version 4.5.0-491-26f710d+
cxlflash_afu_recover+0x3dc/0x7d0 [cxlflash]
cxlflash_ioctl+0x5a8/0x6f0 [cxlflash]
scsi_ioctl+0x3b0/0x4c0
sd_ioctl+0x110/0x190
blkdev_ioctl+0x28c/0xc20
block_ioctl+0xa4/0xd0
do_vfs_ioctl+0xd8/0x8c0
SyS_ioctl+0xd4/0xf0
system_call+0x38/0xb4The problem here is that the problem space area is unmapped while the
application issues the DK_CXLFLASH_RECOVER_AFU ioctl.This is the order I observe:
proc1 proc2
1) sg_reset
2) ioctl(DK_CXLFLASH_RECOVER_AFU)
3) sg_reset again
causing a PSA unmap
4) continues RECOVER_AFU processingThe resolution to this problem is to have the reset handler drain all
outstanding user space initiated ioctls before proceeding. It is safe
to drain after the state has been changed to STATE_RESET. Also since
drain_ioctls() was static, it had to be moved up a bit to be before
cxlflash_eh_host_reset_handler().Signed-off-by: Manoj N. Kumar
Acked-by: Matthew R. Ochs
Signed-off-by: Martin K. Petersen -
Update the email address for aacraid from Adaptec to Microsemi.
Signed-off-by: Dave Carroll
Signed-off-by: Martin K. Petersen -
In this post: http://www.spinics.net/lists/linux-scsi/msg97124.html the
author shows some kernel infrastructure complaining about a sleep in an
invalid context. Remove offending call to vmalloc(). Instead of using
kzalloc() which reviewers didn't like, use a bucket system (64 bytes on
the stack) and potentially multiple calls to sg_pcopy_from_buffer() to
construct the 'data-in' buffer for the SCSI REPORT LUNS command.Signed-off-by: Douglas Gilbert
Acked-by: Christoph Hellwig
Reviewed-by: Bart Van Assche
Signed-off-by: Martin K. Petersen -
Originally libfc would just be initializing the refcount to '1', and
using the disc_mutex to synchronize if and when the final put should be
happening. This has a race condition as the mutex might be delayed,
causing other threads to access an invalid structure. This patch
updates the rport reference counting to increase the reference every
time 'rport_lookup' is called, and decreases the reference
correspondingly. This removes the need to hold 'disc_mutex' when
removing the structure, and avoids the above race condition.Signed-off-by: Hannes Reinecke
Acked-by: Vasu Dev
Reviewed-by: Johannes Thumshirn
Signed-off-by: Martin K. Petersen -
Fix build when CONFIG_ISA_DMA_API is not enabled. Fixes these build
errors (on x86_64):../drivers/scsi/ultrastor.c: In function 'ultrastor_14f_detect':
../drivers/scsi/ultrastor.c:519:5: error: implicit declaration of function 'request_dma' [-Werror=implicit-function-declaration]
if (config.dma_channel && request_dma(config.dma_channel,"Ultrastor")) {
^
../drivers/scsi/ultrastor.c: In function 'ultrastor_release':
../drivers/scsi/ultrastor.c:658:3: error: implicit declaration of function 'free_dma' [-Werror=implicit-function-declaration]
free_dma(shost->dma_channel);
^Signed-off-by: Randy Dunlap
Signed-off-by: Martin K. Petersen -
Trivial fix to spelling mistake in printk message.
Signed-off-by: Colin Ian King
Reviewed-by: Laurence Oberman
Signed-off-by: Martin K. Petersen -
Signed-off-by: John Garry
Signed-off-by: Martin K. Petersen -
It is not necessary to surround call to
notify_port_event(, PORTE_BROADCAST_RCVD) by spin_lock_irqsave(),
so remove.
This was causing a warn, as below:=================================
[ INFO: inconsistent lock state ]
4.4.8+ #12 Not tainted
---------------------------------
inconsistent {IN-HARDIRQ-W} -> {HARDIRQ-ON-W} usage.
kworker/u64:1/168 [HC0[0]:SC0[0]:HE1:SE1] takes:
(&(&hisi_hba->lock)->rlock){?.....}, at: [] alloc_dev_quirk_v2_hw+0x48/0xec
{IN-HARDIRQ-W} state was registered at:
[] mark_lock+0x19c/0x6a0
[] __lock_acquire+0xa2c/0x1d00
[] lock_acquire+0x58/0x7c
[] _raw_spin_lock_irqsave+0x54/0x6c
[] int_chnl_int_v2_hw+0x1c4/0x248
[] handle_irq_event_percpu+0x9c/0x144
[] handle_irq_event+0x44/0x74
[] handle_fasteoi_irq+0xb4/0x188
[] generic_handle_irq+0x24/0x38
[] __handle_domain_irq+0x60/0xac
[] gic_handle_irq+0xcc/0x168
[] el1_irq+0x6c/0xe0
[] default_idle_call+0x1c/0x34
[] cpu_startup_entry+0x1d4/0x228
[] rest_init+0x150/0x160
[] start_kernel+0x3a4/0x3b8
[] 0x8bb000
irq event stamp: 32661
hardirqs last enabled at (32661): [] __mutex_unlock_slowpath+0x108/0x18c
hardirqs last disabled at (32660): [] __mutex_unlock_slowpath+0x44/0x18c
softirqs last enabled at (25114): [] __do_softirq+0x210/0x27c
softirqs last disabled at (25095): [] irq_exit+0x9c/0xe8other info that might help us debug this:
Possible unsafe locking scenario:CPU0
----
lock(&(&hisi_hba->lock)->rlock);
lock(&(&hisi_hba->lock)->rlock);*** DEADLOCK ***
2 locks held by kworker/u64:1/168:
#0: ("%s"shost->work_q_name){++++.+}, at: [] process_one_work+0x134/0x3cc
#1: ((&sw->work)#2){+.+.+.}, at: [] process_one_work+0x134/0x3ccstack backtrace:
CPU: 4 PID: 168 Comm: kworker/u64:1 Not tainted 4.4.8+ #12
Hardware name: Huawei Technologies Co., Ltd. D03/D03, BIOS 1.12 01/01/1900
Workqueue: scsi_wq_1 sas_discover_domain
Call trace:
[] dump_backtrace+0x0/0x114
[] show_stack+0x14/0x1c
[] dump_stack+0xb4/0xf0
[] print_usage_bug+0x210/0x2b4
[] mark_lock+0x5fc/0x6a0
[] __lock_acquire+0x800/0x1d00
[] lock_acquire+0x58/0x7c
[] _raw_spin_lock+0x44/0x58
[] alloc_dev_quirk_v2_hw+0x48/0xec
[] hisi_sas_dev_found+0x48/0x1b8
[] sas_notify_lldd_dev_found+0x34/0xe0
[] sas_discover_root_expander+0x58/0x128
[] sas_discover_domain+0x4bc/0x564
[] process_one_work+0x1a0/0x3cc
[] worker_thread+0x138/0x438
[] kthread+0xdc/0xf0
[] ret_from_fork+0x10/0x40Signed-off-by: Wei Xu
Signed-off-by: John Garry
Reviewed-by: Zhangfei Gao
Signed-off-by: Martin K. Petersen -
Add support in v2 hw driver for ACPI.
A check on whether an ACPI handle is available for the device is used to
decide on whether to use ACPI reset handler or syscon for hw reset.Signed-off-by: John Garry
Signed-off-by: Wei Xu
Reviewed-by: Zhangfei Gao
Signed-off-by: Martin K. Petersen -
When a virtual scsi DVD device is present with no image file
attached the storvsc driver logs all resulting unnecessary sense errors
whenever IO is issued to the device.[storvsc] Sense Key : Not Ready [current]
[storvsc] Add. Sense: Medium not present - tray closed[mkp: Fixed whitespace]
Signed-off-by: Cathy Avery
Reviewed-by: K. Y. Srinivasan
Signed-off-by: Martin K. Petersen -
The "fcp_rsp_code = %d" message isn't an error, it's meant to be
informative only. This patch prevents a flood of such messages in some
situations.Signed-off-by: Maurizio Lombardi
Tested-by: Laurence Oberman
Reviewed-by: Johannes Thumshirn
Acked-by: Chad Dupuis
Signed-off-by: Martin K. Petersen -
If _scsih_sas_host_add's call to mpt3sas_config_get_sas_iounit_pg0
fails, ioc->sas_hba.parent_dev may be left uninitialized. A later
device probe could invoke mpt3sas_transport_port_add which will call
sas_port_alloc_num [scsi_transport_sas] with a NULL parent_dev pointer.Signed-off-by: Joe Lawrence
Acked-by: Sreekanth Reddy
Signed-off-by: Martin K. Petersen -
In _scsih_sas_host_add, the number of HBA phys are determined and then
later used to allocate an array of struct _sas_phy's. If the routine
sets ioc->sas_hba.num_phys, but then fails to allocate the
ioc->sas_hba.phy array (by kcalloc error or other intermediate
error/exit path), ioc->sas_hba is left in a dangerous state: all readers
of ioc->sas_hba.phy[] do so by indexing it from 0..ioc->sas_hba.num_phys
without checking that the space was ever allocated.Modify _scsih_sas_host_add to set ioc->sas_hba.num_phys only after
successfully allocating ioc->sas_hba.phy[].Signed-off-by: Joe Lawrence
Acked-by: Sreekanth Reddy
Signed-off-by: Martin K. Petersen -
This patch adds license info to the tc-dwc-g210 and ufshcd-dwc files in
order for them to have access to some ufshcd symbols when all are built
as modules.Signed-off-by: Joao Pinto
Signed-off-by: Martin K. Petersen -
Submitters of device tree binding documentation may forget to CC the
subsystem maintainer if this is missing.Signed-off-by: Geert Uytterhoeven
Cc: James E.J. Bottomley
Cc: Martin K. Petersen
Cc: linux-scsi@vger.kernel.org
Signed-off-by: Martin K. Petersen -
Use kmemdup when some other buffer is immediately copied into allocated
region. It replaces call to allocation followed by memcpy, by a single
call to kmemdup.Signed-off-by: Muhammad Falak R Wani
Reviewed-by: Raghava Aditya Renukunta
Signed-off-by: Martin K. Petersen -
firmare -> firmware
Signed-off-by: Julia Lawall
Acked-by: Jack Wang
Signed-off-by: Martin K. Petersen -
firmare -> firmware
Signed-off-by: Julia Lawall
Signed-off-by: Martin K. Petersen -
This patch adds a glue pci driver for the Synopsys G210 Test Chip.
[mkp: Fixed Kconfig depends and module name]
Signed-off-by: Joao Pinto
Reviewed-by: Hannes Reinicke
Signed-off-by: Martin K. Petersen -
This patch adds a glue platform driver for the Synopsys G210 Test Chip.
Signed-off-by: Joao Pinto
Reviewed-by: Hannes Reinicke
Signed-off-by: Martin K. Petersen -
This patch adds support for Synopsys G210 Test Chip.
Signed-off-by: Joao Pinto
Reviewed-by: Hannes Reinicke
Signed-off-by: Martin K. Petersen -
This patch has the goal to add support for DesignWare UFS Controller
specific operations.Signed-off-by: Joao Pinto
Reviewed-by: Hannes Reinicke
Signed-off-by: Martin K. Petersen -
Add link status to ufshci.
Signed-off-by: Joao Pinto
Acked-by: Tomas Winkler
Reviewed-by: Hannes Reinecke
Signed-off-by: Martin K. Petersen -
Add unipro attributes.
Signed-off-by: Joao Pinto
Acked-by: Tomas Winkler
Reviewed-by: Hannes Reinecke
Signed-off-by: Martin K. Petersen -
Add UFS 2.0 support to the UFS core driver.
Signed-off-by: Joao Pinto
Acked-by: Arnd Bergmann
Acked-by: Tomas Winkler
Reviewed-by: Hannes Reinecke
Signed-off-by: Martin K. Petersen -
Add UFS 2.0 to the ufshcd-pltfrm devicetree binding.
Signed-off-by: Joao Pinto
Acked-by: Rob Herring
Acked-by: Tomas Winkler
Reviewed-by: Hannes Reinecke
Signed-off-by: Martin K. Petersen -
Fixed typo in ufshcd-pltfrm.
Signed-off-by: Joao Pinto
Acked-by: Arnd Bergmann
Acked-by: Tomas Winkler
Reviewed-by: Hannes Reinecke
Signed-off-by: Martin K. Petersen -
Pull regulator fix from Mark Brown:
"Fix qcom-smd list voltage issues for msm8974This commit looks like a cleanup but in fact by causing the core to go
down some simplified code paths for noop regulators it avoids a boot
time crash for msm8974 platforms which was introduced in v4.7. It has
been in -next for a while, the issues in mainline for these platforms
weren't flagged up to me until yesterday (I think it took some time to
figure out what was going wrong)"* tag 'qcom-smd-list-voltage' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator:
regulator: qcom_smd: Remove list_voltage callback for rpm_smps_ldo_ops_fixed
12 Jul, 2016
2 commits
-
Pull vfs fixes from Al Viro.
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
posix_acl: de-union a_refcount and a_rcu
nfs_atomic_open(): prevent parallel nfs_lookup() on a negative hashed
Use the right predicate in ->atomic_open() instances -
Currently the two are unioned together, but I don't think that's safe.
It looks like get_cached_acl could race with the last put in
posix_acl_release. get_cached_acl calls atomic_inc_not_zero on
a_refcount, but that field could have already been clobbered by
call_rcu, and may no longer be zero. Fix this by de-unioning the two
fields.Fixes: b8a7a3a66747 (posix_acl: Inode acl caching fixes)
Signed-off-by: Jeff Layton
Signed-off-by: Al Viro
11 Jul, 2016
1 commit