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

    Sebastian Andrzej Siewior
     
  • 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

    Johannes Thumshirn
     
  • 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

    Johannes Thumshirn
     
  • 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

    Arnd Bergmann
     
  • 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

    Arnd Bergmann
     
  • 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

    Helge Deller
     
  • [mkp: Updated MAINTAINERS]

    Signed-off-by: Jim Gill
    Acked-by: Arvind Kumar
    Signed-off-by: Martin K. Petersen

    Jim Gill
     
  • 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

    Uma Krishnan
     
  • 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

    Uma Krishnan
     
  • 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_fvt

    Linux 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/0xb4

    The 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 processing

    The 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

    Manoj N. Kumar
     
  • Update the email address for aacraid from Adaptec to Microsemi.

    Signed-off-by: Dave Carroll
    Signed-off-by: Martin K. Petersen

    Dave Carroll
     
  • 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

    Douglas Gilbert
     
  • 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

    Hannes Reinecke
     
  • 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

    Randy Dunlap
     
  • Trivial fix to spelling mistake in printk message.

    Signed-off-by: Colin Ian King
    Reviewed-by: Laurence Oberman
    Signed-off-by: Martin K. Petersen

    Colin Ian King
     
  • Signed-off-by: John Garry
    Signed-off-by: Martin K. Petersen

    John Garry
     
  • 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/0xe8

    other 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/0x3cc

    stack 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/0x40

    Signed-off-by: Wei Xu
    Signed-off-by: John Garry
    Reviewed-by: Zhangfei Gao
    Signed-off-by: Martin K. Petersen

    John Garry
     
  • 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

    John Garry
     
  • 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

    Cathy Avery
     
  • 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

    Maurizio Lombardi
     
  • 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

    Joe Lawrence
     
  • 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

    Joe Lawrence
     
  • 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

    Joao Pinto
     
  • 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

    Geert Uytterhoeven
     
  • 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

    Muhammad Falak R Wani
     
  • firmare -> firmware

    Signed-off-by: Julia Lawall
    Acked-by: Jack Wang
    Signed-off-by: Martin K. Petersen

    Julia Lawall
     
  • firmare -> firmware

    Signed-off-by: Julia Lawall
    Signed-off-by: Martin K. Petersen

    Julia Lawall
     
  • 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

    Joao Pinto
     
  • 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

    Joao Pinto
     
  • This patch adds support for Synopsys G210 Test Chip.

    Signed-off-by: Joao Pinto
    Reviewed-by: Hannes Reinicke
    Signed-off-by: Martin K. Petersen

    Joao Pinto
     
  • 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

    Joao Pinto
     
  • Add link status to ufshci.

    Signed-off-by: Joao Pinto
    Acked-by: Tomas Winkler
    Reviewed-by: Hannes Reinecke
    Signed-off-by: Martin K. Petersen

    Joao Pinto
     
  • Add unipro attributes.

    Signed-off-by: Joao Pinto
    Acked-by: Tomas Winkler
    Reviewed-by: Hannes Reinecke
    Signed-off-by: Martin K. Petersen

    Joao Pinto
     
  • 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

    Joao Pinto
     
  • 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

    Joao Pinto
     
  • 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

    Joao Pinto
     
  • Pull regulator fix from Mark Brown:
    "Fix qcom-smd list voltage issues for msm8974

    This 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

    Linus Torvalds
     

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

    Linus Torvalds
     
  • 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

    Jeff Layton
     

11 Jul, 2016

1 commit