11 Apr, 2020

2 commits

  • Pull more SCSI updates from James Bottomley:
    "This is a batch of changes that didn't make it in the initial pull
    request because the lpfc series had to be rebased to redo an incorrect
    split.

    It's basically driver updates to lpfc, target, bnx2fc and ufs with the
    rest being minor updates except the sr_block_release one which fixes a
    use after free introduced by the removal of the global mutex in the
    first patch set"

    * tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi: (35 commits)
    scsi: core: Add DID_ALLOC_FAILURE and DID_MEDIUM_ERROR to hostbyte_table
    scsi: ufs: Use ufshcd_config_pwr_mode() when scaling gear
    scsi: bnx2fc: fix boolreturn.cocci warnings
    scsi: zfcp: use fallthrough;
    scsi: aacraid: do not overwrite retval in aac_reset_adapter()
    scsi: sr: Fix sr_block_release()
    scsi: aic7xxx: Remove more FreeBSD-specific code
    scsi: mpt3sas: Fix kernel panic observed on soft HBA unplug
    scsi: ufs: set device as active power mode after resetting device
    scsi: iscsi: Report unbind session event when the target has been removed
    scsi: lpfc: Change default SCSI LUN QD to 64
    scsi: libfc: rport state move to PLOGI if all PRLI retry exhausted
    scsi: libfc: If PRLI rejected, move rport to PLOGI state
    scsi: bnx2fc: Update the driver version to 2.12.13
    scsi: bnx2fc: Fix SCSI command completion after cleanup is posted
    scsi: bnx2fc: Process the RQE with CQE in interrupt context
    scsi: target: use the stack for XCOPY passthrough cmds
    scsi: target: increase XCOPY I/O size
    scsi: target: avoid per-loop XCOPY buffer allocations
    scsi: target: drop xcopy DISK BLOCK LENGTH debug
    ...

    Linus Torvalds
     
  • Pull block fixes from Jens Axboe:
    "Here's a set of fixes that should go into this merge window. This
    contains:

    - NVMe pull request from Christoph with various fixes

    - Better discard support for loop (Evan)

    - Only call ->commit_rqs() if we have queued IO (Keith)

    - blkcg offlining fixes (Tejun)

    - fix (and fix the fix) for busy partitions"

    * tag 'block-5.7-2020-04-10' of git://git.kernel.dk/linux-block:
    block: fix busy device checking in blk_drop_partitions again
    block: fix busy device checking in blk_drop_partitions
    nvmet-rdma: fix double free of rdma queue
    blk-mq: don't commit_rqs() if none were queued
    nvme-fc: Revert "add module to ops template to allow module references"
    nvme: fix deadlock caused by ANA update wrong locking
    nvmet-rdma: fix bonding failover possible NULL deref
    loop: Better discard support for block devices
    loop: Report EOPNOTSUPP properly
    nvmet: fix NULL dereference when removing a referral
    nvme: inherit stable pages constraint in the mpath stack device
    blkcg: don't offline parent blkcg first
    blkcg: rename blkcg->cgwb_refcnt to ->online_pin and always use it
    nvme-tcp: fix possible crash in recv error flow
    nvme-tcp: don't poll a non-live queue
    nvme-tcp: fix possible crash in write_zeroes processing
    nvmet-fc: fix typo in comment
    nvme-rdma: Replace comma with a semicolon
    nvme-fcloop: fix deallocation of working context
    nvme: fix compat address handling in several ioctls

    Linus Torvalds
     

08 Apr, 2020

1 commit

  • Pull NVMe fixes from Christoph.

    * 'nvme-5.7' of git://git.infradead.org/nvme:
    nvmet-rdma: fix double free of rdma queue
    nvme-fc: Revert "add module to ops template to allow module references"
    nvme: fix deadlock caused by ANA update wrong locking
    nvmet-rdma: fix bonding failover possible NULL deref
    nvmet: fix NULL dereference when removing a referral
    nvme: inherit stable pages constraint in the mpath stack device
    nvme-tcp: fix possible crash in recv error flow
    nvme-tcp: don't poll a non-live queue
    nvme-tcp: fix possible crash in write_zeroes processing
    nvmet-fc: fix typo in comment
    nvme-rdma: Replace comma with a semicolon
    nvme-fcloop: fix deallocation of working context
    nvme: fix compat address handling in several ioctls

    Jens Axboe
     

04 Apr, 2020

3 commits

  • The original patch was to resolve the lldd being able to be unloaded
    while being used to talk to the boot device of the system. However, the
    end result of the original patch is that any driver unload while a nvme
    controller is live via the lldd is now being prohibited. Given the module
    reference, the module teardown routine can't be called, thus there's no
    way, other than manual actions to terminate the controllers.

    Fixes: 863fbae929c7 ("nvme_fc: add module to ops template to allow module references")
    Cc: # v5.4+
    Signed-off-by: James Smart
    Reviewed-by: Himanshu Madhani
    Signed-off-by: Christoph Hellwig

    James Smart
     
  • Pull pci updates from Bjorn Helgaas:
    "Enumeration:

    - Revert sysfs "rescan" renames that broke apps (Kelsey Skunberg)

    - Add more 32 GT/s link speed decoding and improve the implementation
    (Yicong Yang)

    Resource management:

    - Add support for sizing programmable host bridge apertures and fix a
    related alpha Nautilus regression (Ivan Kokshaysky)

    Interrupts:

    - Add boot interrupt quirk mechanism for Xeon chipsets and document
    boot interrupts (Sean V Kelley)

    PCIe native device hotplug:

    - When possible, disable in-band presence detect and use PDS
    (Alexandru Gagniuc)

    - Add DMI table for devices that don't use in-band presence detection
    but don't advertise that correctly (Stuart Hayes)

    - Fix hang when powering slots up/down via sysfs (Lukas Wunner)

    - Fix an MSI interrupt race (Stuart Hayes)

    Virtualization:

    - Add ACS quirks for Zhaoxin devices (Raymond Pang)

    Error handling:

    - Add Error Disconnect Recover (EDR) support so firmware can report
    devices disconnected via DPC and we can try to recover (Kuppuswamy
    Sathyanarayanan)

    Peer-to-peer DMA:

    - Add Intel Sky Lake-E Root Ports B, C, D to the whitelist (Andrew
    Maier)

    ASPM:

    - Reduce severity of common clock config message (Chris Packham)

    - Clear the correct bits when enabling L1 substates, so we don't go
    to the wrong state (Yicong Yang)

    Endpoint framework:

    - Replace EPF linkup ops with notifier call chain and improve locking
    (Kishon Vijay Abraham I)

    - Fix concurrent memory allocation in OB address region (Kishon Vijay
    Abraham I)

    - Move PF function number assignment to EPC core to support multiple
    function creation methods (Kishon Vijay Abraham I)

    - Fix issue with clearing configfs "start" entry (Kunihiko Hayashi)

    - Fix issue with endpoint MSI-X ignoring BAR Indicator and Table
    Offset (Kishon Vijay Abraham I)

    - Add support for testing DMA transfers (Kishon Vijay Abraham I)

    - Add support for testing > 10 endpoint devices (Kishon Vijay Abraham I)

    - Add support for tests to clear IRQ (Kishon Vijay Abraham I)

    - Add common DT schema for endpoint controllers (Kishon Vijay Abraham I)

    Amlogic Meson PCIe controller driver:

    - Add DT bindings for AXG PCIe PHY, shared MIPI/PCIe analog PHY (Remi
    Pommarel)

    - Add Amlogic AXG PCIe PHY, AXG MIPI/PCIe analog PHY drivers (Remi
    Pommarel)

    Cadence PCIe controller driver:

    - Add Root Complex/Endpoint DT schema for Cadence PCIe (Kishon Vijay
    Abraham I)

    Intel VMD host bridge driver:

    - Add two VMD Device IDs that require bus restriction mode (Sushma
    Kalakota)

    Mobiveil PCIe controller driver:

    - Refactor and modularize mobiveil driver (Hou Zhiqiang)

    - Add support for Mobiveil GPEX Gen4 host (Hou Zhiqiang)

    Microsoft Hyper-V host bridge driver:

    - Add support for Hyper-V PCI protocol version 1.3 and
    PCI_BUS_RELATIONS2 (Long Li)

    - Refactor to prepare for virtual PCI on non-x86 architectures (Boqun
    Feng)

    - Fix memory leak in hv_pci_probe()'s error path (Dexuan Cui)

    NVIDIA Tegra PCIe controller driver:

    - Use pci_parse_request_of_pci_ranges() (Rob Herring)

    - Add support for endpoint mode and related DT updates (Vidya Sagar)

    - Reduce -EPROBE_DEFER error message log level (Thierry Reding)

    Qualcomm PCIe controller driver:

    - Restrict class fixup to specific Qualcomm devices (Bjorn Andersson)

    Synopsys DesignWare PCIe controller driver:

    - Refactor core initialization code for endpoint mode (Vidya Sagar)

    - Fix endpoint MSI-X to use correct table address (Kishon Vijay
    Abraham I)

    TI DRA7xx PCIe controller driver:

    - Fix MSI IRQ handling (Vignesh Raghavendra)

    TI Keystone PCIe controller driver:

    - Allow AM654 endpoint to raise MSI-X interrupt (Kishon Vijay Abraham I)

    Miscellaneous:

    - Quirk ASMedia XHCI USB to avoid "PME# from D0" defect (Kai-Heng
    Feng)

    - Use ioremap(), not phys_to_virt(), for platform ROM to fix video
    ROM mapping with CONFIG_HIGHMEM (Mikel Rychliski)"

    * tag 'pci-v5.7-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci: (96 commits)
    misc: pci_endpoint_test: remove duplicate macro PCI_ENDPOINT_TEST_STATUS
    PCI: tegra: Print -EPROBE_DEFER error message at debug level
    misc: pci_endpoint_test: Use full pci-endpoint-test name in request_irq()
    misc: pci_endpoint_test: Fix to support > 10 pci-endpoint-test devices
    tools: PCI: Add 'e' to clear IRQ
    misc: pci_endpoint_test: Add ioctl to clear IRQ
    misc: pci_endpoint_test: Avoid using module parameter to determine irqtype
    PCI: keystone: Allow AM654 PCIe Endpoint to raise MSI-X interrupt
    PCI: dwc: Fix dw_pcie_ep_raise_msix_irq() to get correct MSI-X table address
    PCI: endpoint: Fix ->set_msix() to take BIR and offset as arguments
    misc: pci_endpoint_test: Add support to get DMA option from userspace
    tools: PCI: Add 'd' command line option to support DMA
    misc: pci_endpoint_test: Use streaming DMA APIs for buffer allocation
    PCI: endpoint: functions/pci-epf-test: Print throughput information
    PCI: endpoint: functions/pci-epf-test: Add DMA support to transfer data
    PCI: pciehp: Fix MSI interrupt race
    PCI: pciehp: Fix indefinite wait on sysfs requests
    PCI: endpoint: Fix clearing start entry in configfs
    PCI: tegra: Add support for PCIe endpoint mode in Tegra194
    PCI: sysfs: Revert "rescan" file renames
    ...

    Linus Torvalds
     
  • Pull SPDX updates from Greg KH:
    "Here are three SPDX patches for 5.7-rc1.

    One fixes up the SPDX tag for a single driver, while the other two go
    through the tree and add SPDX tags for all of the .gitignore files as
    needed.

    Nothing too complex, but you will get a merge conflict with your
    current tree, that should be trivial to handle (one file modified by
    two things, one file deleted.)

    All three of these have been in linux-next for a while, with no
    reported issues other than the merge conflict"

    * tag 'spdx-5.7-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/spdx:
    ASoC: MT6660: make spdxcheck.py happy
    .gitignore: add SPDX License Identifier
    .gitignore: remove too obvious comments

    Linus Torvalds
     

03 Apr, 2020

1 commit

  • Pull SCSI updates from James Bottomley:
    "This series has a huge amount of churn because it pulls in Mauro's doc
    update changing all our txt files to rst ones.

    Excluding that, we have the usual driver updates (qla2xxx, ufs, lpfc,
    zfcp, ibmvfc, pm80xx, aacraid), a treewide update for scnprintf and
    some other minor updates.

    The major core change is Hannes moving functions out of the aacraid
    driver and into the core"

    * tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi: (223 commits)
    scsi: aic7xxx: aic97xx: Remove FreeBSD-specific code
    scsi: ufs: Do not rely on prefetched data
    scsi: dc395x: remove dc395x_bios_param
    scsi: libiscsi: Fix error count for active session
    scsi: hpsa: correct race condition in offload enabled
    scsi: message: fusion: Replace zero-length array with flexible-array member
    scsi: qedi: Add PCI shutdown handler support
    scsi: qedi: Add MFW error recovery process
    scsi: ufs: Enable block layer runtime PM for well-known logical units
    scsi: ufs-qcom: Override devfreq parameters
    scsi: ufshcd: Let vendor override devfreq parameters
    scsi: ufshcd: Update the set frequency to devfreq
    scsi: ufs: Resume ufs host before accessing ufs device
    scsi: ufs-mediatek: customize the delay for enabling host
    scsi: ufs: make HCE polling more compact to improve initialization latency
    scsi: ufs: allow custom delay prior to host enabling
    scsi: ufs-mediatek: use common delay function
    scsi: ufs: introduce common and flexible delay function
    scsi: ufs: use an enum for host capabilities
    scsi: ufs: fix uninitialized tx_lanes in ufshcd_disable_tx_lcc()
    ...

    Linus Torvalds
     

02 Apr, 2020

2 commits

  • Since DID_ALLOC_FAILURE and DID_MEDIUM_ERROR are missing from the
    hostbyte_table, scsi debug logging prints their numeric values only.
    Adding them to the hostbyte_table to allow the scsi debug log to print
    those as strings.

    Link: https://lore.kernel.org/r/CAMNNMLFtQOHsjWUMs+q_+z9XqQYZmR34ewoB-5LrCpzGp1Ppkw@mail.gmail.com
    Reviewed-by: Christoph Hellwig
    Signed-off-by: Nikhil Kshirsagar
    Signed-off-by: Martin K. Petersen

    Nikhil Kshirsagar
     
  • When scaling gear, use ufshcd_config_pwr_mode() instead of
    ufshcd_change_power_mode() so that vops_pwr_change_notify(PRE_CHANGE)
    can be utilized to allow vendors use customized settings before
    changing power mode.

    Link: https://lore.kernel.org/r/1581485910-8307-2-git-send-email-cang@codeaurora.org
    Reviewed-by: Avri Altman
    Reviewed-by: Stanley Chu
    Signed-off-by: Can Guo
    Signed-off-by: Martin K. Petersen

    Can Guo
     

01 Apr, 2020

8 commits

  • drivers/scsi/bnx2fc/bnx2fc_hwi.c:1019:9-10: WARNING: return of 0/1 in function 'bnx2fc_pending_work' with return type bool

    Return statements in functions returning bool should use
    true/false instead of 1/0.

    Generated by: scripts/coccinelle/misc/boolreturn.cocci

    Fixes: 77331115e220 ("scsi: bnx2fc: Process the RQE with CQE in interrupt context")
    CC: Javed Hasan
    Acked-by: Javed Hasan
    Signed-off-by: kbuild test robot
    Signed-off-by: Martin K. Petersen

    kbuild test robot
     
  • 'retval' got assigned a value twice, causing the original value to be lost.

    Link: https://lore.kernel.org/r/20200331084111.95039-1-hare@suse.de
    Fixes: 3d3ca53b1639 ("scsi: aacraid: use scsi_host_(block,unblock) to block I/O")
    Reported-by: Martin K. Petersen
    Signed-off-by: Hannes Reinecke
    Signed-off-by: Martin K. Petersen

    Hannes Reinecke
     
  • This patch fixes the following two complaints:

    WARNING: CPU: 3 PID: 1326 at kernel/locking/mutex-debug.c:103 mutex_destroy+0x74/0x80
    Modules linked in: scsi_debug sd_mod t10_pi brd scsi_transport_iscsi af_packet crct10dif_pclmul sg aesni_intel glue_helper virtio_balloon button crypto_simd cryptd intel_agp intel_gtt agpgart ip_tables x_tables ipv6 nf_defrag_ipv6 autofs4 ext4 crc16 mbcache jbd2 hid_generic usbhid hid sr_mod cdrom ata_generic pata_acpi virtio_blk virtio_net net_failover failover ata_piix xhci_pci ahci libahci xhci_hcd i2c_piix4 libata virtio_pci usbcore i2c_core virtio_ring scsi_mod usb_common virtio [last unloaded: scsi_debug]
    CPU: 3 PID: 1326 Comm: systemd-udevd Not tainted 5.6.0-rc1-dbg+ #1
    Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011
    RIP: 0010:mutex_destroy+0x74/0x80
    Call Trace:
    sr_kref_release+0xb9/0xd0 [sr_mod]
    scsi_cd_put+0x79/0x90 [sr_mod]
    sr_block_release+0x54/0x70 [sr_mod]
    __blkdev_put+0x2ce/0x3c0
    blkdev_put+0x68/0x220
    blkdev_close+0x4d/0x60
    __fput+0x170/0x3b0
    ____fput+0x12/0x20
    task_work_run+0xa2/0xf0
    exit_to_usermode_loop+0xeb/0xf0
    do_syscall_64+0x2be/0x300
    entry_SYSCALL_64_after_hwframe+0x49/0xbe
    RIP: 0033:0x7fa16d40aab7

    BUG: KASAN: use-after-free in __mutex_unlock_slowpath+0x98/0x420
    Read of size 8 at addr ffff8881c6e4f4b0 by task systemd-udevd/1326

    CPU: 3 PID: 1326 Comm: systemd-udevd Tainted: G W 5.6.0-rc1-dbg+ #1
    Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011
    Call Trace:
    dump_stack+0xa5/0xe6
    print_address_description.constprop.0+0x46/0x60
    __kasan_report.cold+0x7b/0x94
    kasan_report+0x16/0x20
    check_memory_region+0x140/0x1b0
    __kasan_check_read+0x15/0x20
    __mutex_unlock_slowpath+0x98/0x420
    mutex_unlock+0x16/0x20
    sr_block_release+0x5c/0x70 [sr_mod]
    __blkdev_put+0x2ce/0x3c0
    hardirqs last enabled at (1875522): [] _raw_spin_unlock_irqrestore+0x56/0x70
    blkdev_put+0x68/0x220
    blkdev_close+0x4d/0x60
    __fput+0x170/0x3b0
    ____fput+0x12/0x20
    task_work_run+0xa2/0xf0
    exit_to_usermode_loop+0xeb/0xf0
    do_syscall_64+0x2be/0x300
    entry_SYSCALL_64_after_hwframe+0x49/0xbe
    RIP: 0033:0x7fa16d40aab7

    Allocated by task 3201:
    save_stack+0x23/0x90
    __kasan_kmalloc.constprop.0+0xcf/0xe0
    kasan_kmalloc+0xd/0x10
    kmem_cache_alloc_trace+0x161/0x3c0
    sr_probe+0x12f/0xb60 [sr_mod]
    really_probe+0x183/0x5d0
    driver_probe_device+0x13f/0x1a0
    __device_attach_driver+0xe6/0x150
    bus_for_each_drv+0x101/0x160
    __device_attach+0x183/0x230
    device_initial_probe+0x17/0x20
    bus_probe_device+0x110/0x130
    device_add+0xb7b/0xd40
    scsi_sysfs_add_sdev+0xe8/0x360 [scsi_mod]
    scsi_probe_and_add_lun+0xdc4/0x14c0 [scsi_mod]
    __scsi_scan_target+0x12d/0x850 [scsi_mod]
    scsi_scan_channel+0xcd/0xe0 [scsi_mod]
    scsi_scan_host_selected+0x182/0x190 [scsi_mod]
    store_scan+0x1e9/0x200 [scsi_mod]
    dev_attr_store+0x42/0x60
    sysfs_kf_write+0x8b/0xb0
    kernfs_fop_write+0x158/0x250
    __vfs_write+0x4c/0x90
    vfs_write+0x145/0x2c0
    ksys_write+0xd7/0x180
    __x64_sys_write+0x47/0x50
    do_syscall_64+0x6f/0x300
    entry_SYSCALL_64_after_hwframe+0x49/0xbe

    Freed by task 1326:
    save_stack+0x23/0x90
    __kasan_slab_free+0x13a/0x190
    kasan_slab_free+0x12/0x20
    kfree+0x109/0x410
    sr_kref_release+0xc1/0xd0 [sr_mod]
    scsi_cd_put+0x79/0x90 [sr_mod]
    sr_block_release+0x54/0x70 [sr_mod]
    __blkdev_put+0x2ce/0x3c0
    blkdev_put+0x68/0x220
    blkdev_close+0x4d/0x60
    __fput+0x170/0x3b0
    ____fput+0x12/0x20
    task_work_run+0xa2/0xf0
    exit_to_usermode_loop+0xeb/0xf0
    do_syscall_64+0x2be/0x300
    entry_SYSCALL_64_after_hwframe+0x49/0xbe

    Link: https://lore.kernel.org/r/20200330025151.10535-1-bvanassche@acm.org
    Fixes: 51a858817dcd ("scsi: sr: get rid of sr global mutex")
    Cc: Merlijn Wajer
    Cc: Arnd Bergmann
    Cc:
    Acked-by: Merlijn Wajer
    Signed-off-by: Bart Van Assche
    Signed-off-by: Martin K. Petersen

    Bart Van Assche
     
  • Remove additional code for FreeBSD in aic7xxx_core.c, which is unneeded
    since commit cca6cb8ad7a8 ("scsi: aic7xxx: Fix build using bare-metal
    toolchain").

    Link: https://lore.kernel.org/r/20200327191102.78554-1-alex.dewar@gmx.co.uk
    Suggested-by: Martin Petersen
    Signed-off-by: Alex Dewar
    Signed-off-by: Martin K. Petersen

    Alex Dewar
     
  • Generic protection fault type kernel panic is observed when user performs
    soft (ordered) HBA unplug operation while IOs are running on drives
    connected to HBA.

    When user performs ordered HBA removal operation, the kernel calls PCI
    device's .remove() call back function where driver is flushing out all the
    outstanding SCSI IO commands with DID_NO_CONNECT host byte and also unmaps
    sg buffers allocated for these IO commands.

    However, in the ordered HBA removal case (unlike of real HBA hot removal),
    HBA device is still alive and hence HBA hardware is performing the DMA
    operations to those buffers on the system memory which are already unmapped
    while flushing out the outstanding SCSI IO commands and this leads to
    kernel panic.

    Don't flush out the outstanding IOs from .remove() path in case of ordered
    removal since HBA will be still alive in this case and it can complete the
    outstanding IOs. Flush out the outstanding IOs only in case of 'physical
    HBA hot unplug' where there won't be any communication with the HBA.

    During shutdown also it is possible that HBA hardware can perform DMA
    operations on those outstanding IO buffers which are completed with
    DID_NO_CONNECT by the driver from .shutdown(). So same above fix is applied
    in shutdown path as well.

    It is safe to drop the outstanding commands when HBA is inaccessible such
    as when permanent PCI failure happens, when HBA is in non-operational
    state, or when someone does a real HBA hot unplug operation. Since driver
    knows that HBA is inaccessible during these cases, it is safe to drop the
    outstanding commands instead of waiting for SCSI error recovery to kick in
    and clear these outstanding commands.

    Link: https://lore.kernel.org/r/1585302763-23007-1-git-send-email-sreekanth.reddy@broadcom.com
    Fixes: c666d3be99c0 ("scsi: mpt3sas: wait for and flush running commands on shutdown/unload")
    Cc: stable@vger.kernel.org #v4.14.174+
    Signed-off-by: Sreekanth Reddy
    Signed-off-by: Martin K. Petersen

    Sreekanth Reddy
     
  • Currently ufshcd driver assumes that bInitPowerMode parameter is not
    changed by any vendors thus device power mode can be set as "Active" during
    initialization.

    According to UFS JEDEC specification, device power mode shall be "Active"
    after HW Reset is triggered if the bInitPowerMode parameter in Device
    Descriptor is default value.

    By above description, we can set device power mode as "Active" after device
    reset is triggered by vendor's callback. With this change, the link startup
    performance can be improved in some cases by not setting link_startup_again
    as true in ufshcd_link_startup().

    Link: https://lore.kernel.org/r/20200327095835.10293-1-stanley.chu@mediatek.com
    Reviewed-by: Can Guo
    Reviewed-by: Asutosh Das
    Signed-off-by: Stanley Chu
    Signed-off-by: Martin K. Petersen

    Stanley Chu
     
  • If the daemon is restarted or crashes while logging out of a session, the
    unbind session event sent by the kernel is not processed and is lost. When
    the daemon starts again, the session can't be unbound because the daemon is
    waiting for the event message. However, the kernel has already logged out
    and the event will not be resent.

    When iscsid restart is complete, logout session reports error:

    Logging out of session [sid: 6, target: iqn.xxxxx, portal: xx.xx.xx.xx,3260]
    iscsiadm: Could not logout of [sid: 6, target: iscsiadm -m node iqn.xxxxx, portal: xx.xx.xx.xx,3260].
    iscsiadm: initiator reported error (9 - internal error)
    iscsiadm: Could not logout of all requested sessions

    Make sure the unbind event is emitted.

    [mkp: commit desc and applied by hand since patch was mangled]

    Link: https://lore.kernel.org/r/4eab1771-2cb3-8e79-b31c-923652340e99@huawei.com
    Reviewed-by: Lee Duncan
    Signed-off-by: Wu Bo
    Signed-off-by: Martin K. Petersen

    Wu Bo
     
  • Pull networking updates from David Miller:
    "Highlights:

    1) Fix the iwlwifi regression, from Johannes Berg.

    2) Support BSS coloring and 802.11 encapsulation offloading in
    hardware, from John Crispin.

    3) Fix some potential Spectre issues in qtnfmac, from Sergey
    Matyukevich.

    4) Add TTL decrement action to openvswitch, from Matteo Croce.

    5) Allow paralleization through flow_action setup by not taking the
    RTNL mutex, from Vlad Buslov.

    6) A lot of zero-length array to flexible-array conversions, from
    Gustavo A. R. Silva.

    7) Align XDP statistics names across several drivers for consistency,
    from Lorenzo Bianconi.

    8) Add various pieces of infrastructure for offloading conntrack, and
    make use of it in mlx5 driver, from Paul Blakey.

    9) Allow using listening sockets in BPF sockmap, from Jakub Sitnicki.

    10) Lots of parallelization improvements during configuration changes
    in mlxsw driver, from Ido Schimmel.

    11) Add support to devlink for generic packet traps, which report
    packets dropped during ACL processing. And use them in mlxsw
    driver. From Jiri Pirko.

    12) Support bcmgenet on ACPI, from Jeremy Linton.

    13) Make BPF compatible with RT, from Thomas Gleixnet, Alexei
    Starovoitov, and your's truly.

    14) Support XDP meta-data in virtio_net, from Yuya Kusakabe.

    15) Fix sysfs permissions when network devices change namespaces, from
    Christian Brauner.

    16) Add a flags element to ethtool_ops so that drivers can more simply
    indicate which coalescing parameters they actually support, and
    therefore the generic layer can validate the user's ethtool
    request. Use this in all drivers, from Jakub Kicinski.

    17) Offload FIFO qdisc in mlxsw, from Petr Machata.

    18) Support UDP sockets in sockmap, from Lorenz Bauer.

    19) Fix stretch ACK bugs in several TCP congestion control modules,
    from Pengcheng Yang.

    20) Support virtual functiosn in octeontx2 driver, from Tomasz
    Duszynski.

    21) Add region operations for devlink and use it in ice driver to dump
    NVM contents, from Jacob Keller.

    22) Add support for hw offload of MACSEC, from Antoine Tenart.

    23) Add support for BPF programs that can be attached to LSM hooks,
    from KP Singh.

    24) Support for multiple paths, path managers, and counters in MPTCP.
    From Peter Krystad, Paolo Abeni, Florian Westphal, Davide Caratti,
    and others.

    25) More progress on adding the netlink interface to ethtool, from
    Michal Kubecek"

    * git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next: (2121 commits)
    net: ipv6: rpl_iptunnel: Fix potential memory leak in rpl_do_srh_inline
    cxgb4/chcr: nic-tls stats in ethtool
    net: dsa: fix oops while probing Marvell DSA switches
    net/bpfilter: remove superfluous testing message
    net: macb: Fix handling of fixed-link node
    net: dsa: ksz: Select KSZ protocol tag
    netdevsim: dev: Fix memory leak in nsim_dev_take_snapshot_write
    net: stmmac: add EHL 2.5Gbps PCI info and PCI ID
    net: stmmac: add EHL PSE0 & PSE1 1Gbps PCI info and PCI ID
    net: stmmac: create dwmac-intel.c to contain all Intel platform
    net: dsa: bcm_sf2: Support specifying VLAN tag egress rule
    net: dsa: bcm_sf2: Add support for matching VLAN TCI
    net: dsa: bcm_sf2: Move writing of CFP_DATA(5) into slicing functions
    net: dsa: bcm_sf2: Check earlier for FLOW_EXT and FLOW_MAC_EXT
    net: dsa: bcm_sf2: Disable learning for ASP port
    net: dsa: b53: Deny enslaving port 7 for 7278 into a bridge
    net: dsa: b53: Prevent tagged VLAN on port 7 for 7278
    net: dsa: b53: Restore VLAN entries upon (re)configuration
    net: dsa: bcm_sf2: Fix overflow checks
    hv_netvsc: Remove unnecessary round_up for recv_completion_cnt
    ...

    Linus Torvalds
     

31 Mar, 2020

3 commits

  • Pull EFI updates from Ingo Molnar:
    "The EFI changes in this cycle are much larger than usual, for two
    (positive) reasons:

    - The GRUB project is showing signs of life again, resulting in the
    introduction of the generic Linux/UEFI boot protocol, instead of
    x86 specific hacks which are increasingly difficult to maintain.
    There's hope that all future extensions will now go through that
    boot protocol.

    - Preparatory work for RISC-V EFI support.

    The main changes are:

    - Boot time GDT handling changes

    - Simplify handling of EFI properties table on arm64

    - Generic EFI stub cleanups, to improve command line handling, file
    I/O, memory allocation, etc.

    - Introduce a generic initrd loading method based on calling back
    into the firmware, instead of relying on the x86 EFI handover
    protocol or device tree.

    - Introduce a mixed mode boot method that does not rely on the x86
    EFI handover protocol either, and could potentially be adopted by
    other architectures (if another one ever surfaces where one
    execution mode is a superset of another)

    - Clean up the contents of 'struct efi', and move out everything that
    doesn't need to be stored there.

    - Incorporate support for UEFI spec v2.8A changes that permit
    firmware implementations to return EFI_UNSUPPORTED from UEFI
    runtime services at OS runtime, and expose a mask of which ones are
    supported or unsupported via a configuration table.

    - Partial fix for the lack of by-VA cache maintenance in the
    decompressor on 32-bit ARM.

    - Changes to load device firmware from EFI boot service memory
    regions

    - Various documentation updates and minor code cleanups and fixes"

    * 'efi-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (114 commits)
    efi/libstub/arm: Fix spurious message that an initrd was loaded
    efi/libstub/arm64: Avoid image_base value from efi_loaded_image
    partitions/efi: Fix partition name parsing in GUID partition entry
    efi/x86: Fix cast of image argument
    efi/libstub/x86: Use ULONG_MAX as upper bound for all allocations
    efi: Fix a mistype in comments mentioning efivar_entry_iter_begin()
    efi/libstub: Avoid linking libstub/lib-ksyms.o into vmlinux
    efi/x86: Preserve %ebx correctly in efi_set_virtual_address_map()
    efi/x86: Ignore the memory attributes table on i386
    efi/x86: Don't relocate the kernel unless necessary
    efi/x86: Remove extra headroom for setup block
    efi/x86: Add kernel preferred address to PE header
    efi/x86: Decompress at start of PE image load address
    x86/boot/compressed/32: Save the output address instead of recalculating it
    efi/libstub/x86: Deal with exit() boot service returning
    x86/boot: Use unsigned comparison for addresses
    efi/x86: Avoid using code32_start
    efi/x86: Make efi32_pe_entry() more readable
    efi/x86: Respect 32-bit ABI in efi32_pe_entry()
    efi/x86: Annotate the LOADED_IMAGE_PROTOCOL_GUID with SYM_DATA
    ...

    Linus Torvalds
     
  • Pull block updates from Jens Axboe:

    - Online capacity resizing (Balbir)

    - Number of hardware queue change fixes (Bart)

    - null_blk fault injection addition (Bart)

    - Cleanup of queue allocation, unifying the node/no-node API
    (Christoph)

    - Cleanup of genhd, moving code to where it makes sense (Christoph)

    - Cleanup of the partition handling code (Christoph)

    - disk stat fixes/improvements (Konstantin)

    - BFQ improvements (Paolo)

    - Various fixes and improvements

    * tag 'for-5.7/block-2020-03-29' of git://git.kernel.dk/linux-block: (72 commits)
    block: return NULL in blk_alloc_queue() on error
    block: move bio_map_* to blk-map.c
    Revert "blkdev: check for valid request queue before issuing flush"
    block: simplify queue allocation
    bcache: pass the make_request methods to blk_queue_make_request
    null_blk: use blk_mq_init_queue_data
    block: add a blk_mq_init_queue_data helper
    block: move the ->devnode callback to struct block_device_operations
    block: move the part_stat* helpers from genhd.h to a new header
    block: move block layer internals out of include/linux/genhd.h
    block: move guard_bio_eod to bio.c
    block: unexport get_gendisk
    block: unexport disk_map_sector_rcu
    block: unexport disk_get_part
    block: mark part_in_flight and part_in_flight_rw static
    block: mark block_depr static
    block: factor out requeue handling from dispatch code
    block/diskstats: replace time_in_queue with sum of request times
    block/diskstats: accumulate all per-cpu counters in one pass
    block/diskstats: more accurate approximation of io_ticks for slow disks
    ...

    Linus Torvalds
     
  • Pull libata updates from Jens Axboe:

    - Series from Bart, making the libata code smaller on PATA only setups.
    This is useful for smaller/embedded use cases, and will help us move
    some of those off drivers/ide.

    - Kill unused BPRINTK() (Hannes)

    - Add various Comet Lake ahci PCI ids (Kai-Heng, Mika)

    - Fix for a double scsi_host_put() in error handling (John)

    - Use scnprintf (Takashi)

    - Assign OF node to the SCSI device (Linus Walleij)

    * tag 'for-5.7/libata-2020-03-29' of git://git.kernel.dk/linux-block: (36 commits)
    ata: make "libata.force" kernel parameter optional
    ata: move ata_eh_analyze_ncq_error() & co. to libata-sata.c
    ata: start separating SATA specific code from libata-eh.c
    ata: move ata_sas_*() to libata-sata.c
    ata: start separating SATA specific code from libata-scsi.c
    ata: move sata_deb_timing_*() to libata-sata.c
    ata: move ata_qc_complete_multiple() to libata-sata.c
    ata: move sata_link_hardreset() to libata-sata.c
    ata: move sata_link_{debounce,resume}() to libata-sata.c
    ata: move *sata_set_spd*() to libata-sata.c
    ata: move sata_scr_*() to libata-sata.c
    ata: start separating SATA specific code from libata-core.c
    ata: let compiler optimize out ata_eh_set_lpm() on non-SATA hosts
    ata: let compiler optimize out ata_dev_config_ncq() on non-SATA hosts
    ata: add CONFIG_SATA_HOST=n version of ata_ncq_enabled()
    ata: separate PATA timings code from libata-core.c
    ata: fix CodingStyle issues in PATA timings code
    ata: remove EXPORT_SYMBOL_GPL()s not used by modules
    ata: move EXPORT_SYMBOL_GPL()s close to exported code
    ata: optimize ata_scsi_rbuf[] size
    ...

    Linus Torvalds
     

30 Mar, 2020

14 commits

  • Minor comment conflict in mac80211.

    Signed-off-by: David S. Miller

    David S. Miller
     
  • The default lun queue depth by the driver has been 30 for many years.
    However, this value, when used with more recent hardware, has actually
    throttled some tests that concentrate io on a lun.

    Increase the default lun queue depth to 64.

    Queue full handling, reported by the target, remains in effect and
    unchanged.

    Link: https://lore.kernel.org/r/20200323161935.40341-1-jsmart2021@gmail.com
    Signed-off-by: Dick Kennedy
    Signed-off-by: James Smart
    Signed-off-by: Martin K. Petersen

    Dick Kennedy
     
  • After all PRLI retries are exhausted, move rport state machine back to
    PLOGI state.

    Link: https://lore.kernel.org/r/20200327060208.17104-3-skashyap@marvell.com
    Signed-off-by: Javed Hasan
    Signed-off-by: Saurav Kashyap
    Signed-off-by: Martin K. Petersen

    Javed Hasan
     
  • If PRLI reject code indicates "rejected status", move rport state machine
    back to PLOGI state.

    Link: https://lore.kernel.org/r/20200327060208.17104-2-skashyap@marvell.com
    Signed-off-by: Javed Hasan
    Signed-off-by: Saurav Kashyap
    Signed-off-by: Martin K. Petersen

    Javed Hasan
     
  • Update version to 2.12.13.

    Link: https://lore.kernel.org/r/20200327054849.15947-4-skashyap@marvell.com
    Signed-off-by: Saurav Kashyap
    Signed-off-by: Martin K. Petersen

    Saurav Kashyap
     
  • Driver received a SCSI completion after it posted the cleanup request. This
    leads to a problem that one ref count wasn't released leading to
    flush_active_ios to get struck. The callback from libfc never returned and
    other ports were not processed leading to APD.

    Decrease the refcnt as well as try to complete if something is waiting for
    completion.

    Link: https://lore.kernel.org/r/20200327054849.15947-3-skashyap@marvell.com
    Signed-off-by: Saurav Kashyap
    Signed-off-by: Martin K. Petersen

    Saurav Kashyap
     
  • Filesystem goes to read-only after continuous error injection because RQE
    was handled in deferred context, leading to mismatch between CQE and RQE.

    Specifically, this patch makes the following changes:

    - Process the RQE with CQE in interrupt context, before putting it into
    the work queue.

    - Producer and consumer indices are also updated in the interrupt context
    to guarantee the the order of processing.

    [mkp: fixed bad indentation]

    Link: https://lore.kernel.org/r/20200327054849.15947-2-skashyap@marvell.com
    Signed-off-by: Javed Hasan
    Signed-off-by: Saurav Kashyap
    Signed-off-by: Martin K. Petersen

    Javed Hasan
     
  • Once fail happens during suspend and resume flow if the desired low power
    link state is H8, link recovery is required for MediaTek UFS controller.

    For resume flow, since power and clocks are already enabled before invoking
    vendor's resume callback, simply using ufshcd_link_recovery() inside
    callback is fine.

    For suspend flow, the device power enters low power mode or is disabled
    before suspend callback, thus ufshcd_link_recovery() can not be directly
    used in vendor callback. One solution is to set the link to off state and
    then ufshcd_host_reset_and_restore() will be executed by ufshcd_suspend().

    Link: https://lore.kernel.org/r/20200327095329.10083-3-stanley.chu@mediatek.com
    Reviewed-by: Avri Altman
    Signed-off-by: Stanley Chu
    Signed-off-by: Martin K. Petersen

    Stanley Chu
     
  • Export ufshcd_link_recovery to allow vendors to recover failed link in
    vendor's callbacks.

    Link: https://lore.kernel.org/r/20200327095329.10083-2-stanley.chu@mediatek.com
    Reviewed-by: Avri Altman
    Signed-off-by: Stanley Chu
    Signed-off-by: Martin K. Petersen

    Stanley Chu
     
  • This change introduces a func ufshcd_set_clk_freq() to explicitly set clock
    frequency so that it can be used in reset_and_restore path and in
    ufshcd_scale_clks(). This change also cleans up the clock scaling error out
    path.

    [mkp: commit desc]

    Link: https://lore.kernel.org/r/1585214742-5466-2-git-send-email-cang@codeaurora.org
    Fixes: a3cd5ec55f6c ("scsi: ufs: add load based scaling of UFS gear")
    Reviewed-by: Bean Huo
    Acked-by: Avri Altman
    Signed-off-by: Subhash Jadavani
    Signed-off-by: Can Guo
    Signed-off-by: Martin K. Petersen

    Subhash Jadavani
     
  • Update lpfc version to 12.8.0.0

    Link: https://lore.kernel.org/r/20200322181304.37655-13-jsmart2021@gmail.com
    Signed-off-by: James Smart
    Signed-off-by: Dick Kennedy
    Signed-off-by: Martin K. Petersen

    James Smart
     
  • During code review, identified dss feature that was a prototype only and
    was never productized in SLI3. They shouldn't be there and prevents reuse
    of the command areas.

    Remove any code in the driver to deal with dss, including code to deal with
    fips, which is associated with the dss feature.

    Link: https://lore.kernel.org/r/20200322181304.37655-12-jsmart2021@gmail.com
    Signed-off-by: James Smart
    Signed-off-by: Dick Kennedy
    Signed-off-by: Martin K. Petersen

    James Smart
     
  • Currently driver ktime stats, measuring code paths, is NVME-specific.

    Convert the stats routines such that the code paths are generic, providing
    status for NVME and SCSI. Added ktime stat calls in SCSI queuecommand and
    cmpl routines.

    Link: https://lore.kernel.org/r/20200322181304.37655-11-jsmart2021@gmail.com
    Signed-off-by: James Smart
    Signed-off-by: Dick Kennedy
    Signed-off-by: Martin K. Petersen

    James Smart
     
  • The cpu io statistics were capped by a hard define limit of 128. This
    effectively was a max number of CPUs, not an actual CPU count, nor actual
    CPU numbers which can be even larger than both of those values. This made
    stats off/misleading and on large CPU count systems, wrong.

    Fix the stats so that all CPUs can have a stats struct. Fix the looping
    such that it loops by hdwq, finds CPUs that used the hdwq, and sum the
    stats, then display.

    Link: https://lore.kernel.org/r/20200322181304.37655-9-jsmart2021@gmail.com
    Signed-off-by: James Smart
    Signed-off-by: Dick Kennedy
    Signed-off-by: Martin K. Petersen

    James Smart
     

29 Mar, 2020

1 commit

  • The AER interfaces to clear error status registers were a confusing mess:

    - pci_cleanup_aer_uncorrect_error_status() cleared non-fatal errors
    from the Uncorrectable Error Status register.

    - pci_aer_clear_fatal_status() cleared fatal errors from the
    Uncorrectable Error Status register.

    - pci_cleanup_aer_error_status_regs() cleared the Root Error Status
    register (for Root Ports), the Uncorrectable Error Status register,
    and the Correctable Error Status register.

    Rename them to make them consistent:

    From To
    ---------------------------------------- -------------------------------
    pci_cleanup_aer_uncorrect_error_status() pci_aer_clear_nonfatal_status()
    pci_aer_clear_fatal_status() pci_aer_clear_fatal_status()
    pci_cleanup_aer_error_status_regs() pci_aer_clear_status()

    Since pci_cleanup_aer_error_status_regs() (renamed to
    pci_aer_clear_status()) is only used within drivers/pci/, move the
    declaration from to drivers/pci/pci.h.

    [bhelgaas: commit log, add renames]
    Link: https://lore.kernel.org/r/d1310a75dc3d28f7e8da4e99c45fbd3e60fe238e.1585000084.git.sathyanarayanan.kuppuswamy@linux.intel.com
    Signed-off-by: Kuppuswamy Sathyanarayanan
    Signed-off-by: Bjorn Helgaas

    Kuppuswamy Sathyanarayanan
     

27 Mar, 2020

5 commits

  • Kernel is crashing with the following stacktrace:

    BUG: unable to handle kernel NULL pointer dereference at
    00000000000005bc
    IP: lpfc_nvme_register_port+0x1a8/0x3a0 [lpfc]
    ...
    Call Trace:
    lpfc_nlp_state_cleanup+0x2b2/0x500 [lpfc]
    lpfc_nlp_set_state+0xd7/0x1a0 [lpfc]
    lpfc_cmpl_prli_prli_issue+0x1f7/0x450 [lpfc]
    lpfc_disc_state_machine+0x7a/0x1e0 [lpfc]
    lpfc_cmpl_els_prli+0x16f/0x1e0 [lpfc]
    lpfc_sli_sp_handle_rspiocb+0x5b2/0x690 [lpfc]
    lpfc_sli_handle_slow_ring_event_s4+0x182/0x230 [lpfc]
    lpfc_do_work+0x87f/0x1570 [lpfc]
    kthread+0x10d/0x130
    ret_from_fork+0x35/0x40

    During target side fault injections, it is possible to hit the
    NLP_WAIT_FOR_UNREG case in lpfc_nvme_remoteport_delete. A prior commit
    fixed a rebind and delete race condition, but called lpfc_nlp_put
    unconditionally. This triggered a deletion and the crash.

    Fix by movng nlp_put to inside the NLP_WAIT_FOR_UNREG case, where the nlp
    will be being unregistered/removed. Leave the reference if the flag isn't
    set.

    Link: https://lore.kernel.org/r/20200322181304.37655-8-jsmart2021@gmail.com
    Fixes: b15bd3e6212e ("scsi: lpfc: Fix nvme remoteport registration race conditions")
    Signed-off-by: James Smart
    Signed-off-by: Dick Kennedy
    Signed-off-by: Martin K. Petersen

    James Smart
     
  • The lpfc_sli4_wq_release() routine iterates for each interim value when
    updating the wq consuemr index. This wastes cycles and possibly confuses
    things as thevalue itterates (and the modulo logic is being applied).

    There's no reason for this. Just set it to the value from the hw.

    Link: https://lore.kernel.org/r/20200322181304.37655-7-jsmart2021@gmail.com
    Signed-off-by: James Smart
    Signed-off-by: Dick Kennedy
    Signed-off-by: Martin K. Petersen

    James Smart
     
  • Injecting EEH on a 32GB card is causing kernel oops

    The pci error handler is doing an IO flush and the offline code is also
    doing an IO flush. When the 1st flush is complete the hdwq is destroyed
    (freed), yet the second flush accesses the hdwq and crashes.

    Added a check in lpfc_sli4_fush_io_rings to check both the HBA_IOQ_FLUSH
    flag and the hdwq pointer to see if it is already set and not already
    freed.

    Link: https://lore.kernel.org/r/20200322181304.37655-6-jsmart2021@gmail.com
    Signed-off-by: James Smart
    Signed-off-by: Dick Kennedy
    Signed-off-by: Martin K. Petersen

    James Smart
     
  • SCSI layer sends driver IOs with more s/g segments than driver can handle.
    This results in "Too many sg segments from dma_map_sg. Config 64, seg_cnt
    219" error messages from the lpfc_scsi_prep_dma_buf_s3() routine.

    The was due to use the driver using individual templates for pport and
    vport, host reset enabled or not, nvme vs scsi, etc. In the end, there was
    a combination for a vport that didn't match the pport.

    Rather than enumerating more templates and more discretionary assignments,
    revert to a base template that is copied to a template specific to the
    pport/vport. Then, based on role, attributes and sli type, modify the
    fields that are different for that port. Added a log message to
    lpfc_create_port to validate values.

    Link: https://lore.kernel.org/r/20200322181304.37655-5-jsmart2021@gmail.com
    Signed-off-by: James Smart
    Signed-off-by: Dick Kennedy
    Signed-off-by: Martin K. Petersen

    James Smart
     
  • In lpfc_nvmet_prep_fcp_wqe() the line "rsp->sg_cnt = 0" is modifying the
    transport's data structure. This may result in the transport believing the
    s/g list was already freed, thus may not unmap/free it properly. Lpfc
    driver should not modify the transport data structure.

    The zeroing of the sg_cnt is to avoid use of the transport's sgl in a
    subsequent loop where the driver builds the necessary requests for the
    adapter firmware to complete the IO.

    Change LLDD to use a local copy of the transport sg_cnt when building
    requests to be passed to the adapter fw.

    Link: https://lore.kernel.org/r/20200322181304.37655-4-jsmart2021@gmail.com
    Signed-off-by: James Smart
    Signed-off-by: Dick Kennedy
    Signed-off-by: Martin K. Petersen

    James Smart