26 Dec, 2019

5 commits

  • The downstream implementation of ahci_brcm.c did contain clock
    management recovery, but until recently, did that outside of the
    libahci_platform helpers and this was unintentionally stripped out while
    forward porting the patch upstream.

    Add the missing clock management during recovery and sleep for 10
    milliseconds per the design team recommendations to ensure the SATA PHY
    controller and AFE have been fully quiesced.

    Fixes: eb73390ae241 ("ata: ahci_brcm: Recover from failures to identify devices")
    Cc: stable@vger.kernel.org
    Reviewed-by: Hans de Goede
    Signed-off-by: Florian Fainelli
    Signed-off-by: Jens Axboe

    Florian Fainelli
     
  • Set AHCI_HFLAG_DELAY_ENGINE for the BCM7425 AHCI controller thus making
    it conforming to the 'strict' AHCI implementation which this controller
    is based on.

    This solves long link establishment with specific hard drives (e.g.:
    Seagate ST1000VM002-9ZL1 SC12) that would otherwise have to complete the
    error recovery handling before finally establishing a succesful SATA
    link at the desired speed.

    We re-order the hpriv->flags assignment to also remove the NONCQ quirk
    since we can set the flag directly.

    Fixes: 9586114cf1e9 ("ata: ahci_brcmstb: add support MIPS-based platforms")
    Fixes: 423be77daabe ("ata: ahci_brcmstb: add quirk for broken ncq")
    Cc: stable@vger.kernel.org
    Reviewed-by: Hans de Goede
    Signed-off-by: Florian Fainelli
    Signed-off-by: Jens Axboe

    Florian Fainelli
     
  • The AHCI resources management within ahci_brcm.c is a little
    convoluted, largely because it historically had a dedicated clock that
    was managed within this file in the downstream tree. Once brough
    upstream though, the clock was left to be managed by libahci_platform.c
    which is entirely appropriate.

    This patch series ensures that the AHCI resources are fetched and
    enabled before any register access is done, thus avoiding bus errors on
    platforms which clock gate the controller by default.

    As a result we need to re-arrange the suspend() and resume() functions
    in order to avoid accessing registers after the clocks have been turned
    off respectively before the clocks have been turned on. Finally, we can
    refactor brcm_ahci_get_portmask() in order to fetch the number of ports
    from hpriv->mmio which is now accessible without jumping through hoops
    like we used to do.

    The commit pointed in the Fixes tag is both old and new enough not to
    require major headaches for backporting of this patch.

    Fixes: eba68f829794 ("ata: ahci_brcmstb: rename to support across Broadcom SoC's")
    Cc: stable@vger.kernel.org
    Reviewed-by: Hans de Goede
    Signed-off-by: Florian Fainelli
    Signed-off-by: Jens Axboe

    Florian Fainelli
     
  • This reverts commit 6bb86fefa086faba7b60bb452300b76a47cde1a5
    ("libahci_platform: Staticize ahci_platform_able_phys()") we are
    going to need ahci_platform_{enable,disable}_phys() in a subsequent
    commit for ahci_brcm.c in order to properly control the PHY
    initialization order.

    Also make sure the function prototypes are declared in
    include/linux/ahci_platform.h as a result.

    Cc: stable@vger.kernel.org
    Reviewed-by: Hans de Goede
    Signed-off-by: Florian Fainelli
    Signed-off-by: Jens Axboe

    Florian Fainelli
     
  • ata_qc_complete_multiple() is called with a mask of the still active
    tags.

    mv_sata doesn't have this information directly and instead calculates
    the still active tags from the started tags (ap->qc_active) and the
    finished tags as (ap->qc_active ^ done_mask)

    Since 28361c40368 the hw_tag and tag are no longer the same and the
    equation is no longer valid. In ata_exec_internal_sg() ap->qc_active is
    initialized as 1ULL << ATA_TAG_INTERNAL, but in hardware tag 0 is
    started and this will be in done_mask on completion. ap->qc_active ^
    done_mask becomes 0x100000000 ^ 0x1 = 0x100000001 and thus tag 0 used as
    the internal tag will never be reported as completed.

    This is fixed by introducing ata_qc_get_active() which returns the
    active hardware tags and calling it where appropriate.

    This is tested on mv_sata, but sata_fsl and sata_nv suffer from the same
    problem. There is another case in sata_nv that most likely needs fixing
    as well, but this looks a little different, so I wasn't confident enough
    to change that.

    Fixes: 28361c403683 ("libata: add extra internal command")
    Cc: stable@vger.kernel.org
    Tested-by: Pali Rohár
    Signed-off-by: Sascha Hauer

    Add missing export of ata_qc_get_active(), as per Pali.

    Signed-off-by: Jens Axboe

    Sascha Hauer
     

04 Dec, 2019

1 commit

  • Pull PCI updates from Bjorn Helgaas:
    "Enumeration:

    - Warn if a host bridge has no NUMA info (Yunsheng Lin)

    - Add PCI_STD_NUM_BARS for the number of standard BARs (Denis
    Efremov)

    Resource management:

    - Fix boot-time Embedded Controller GPE storm caused by incorrect
    resource assignment after ACPI Bus Check Notification (Mika
    Westerberg)

    - Protect pci_reassign_bridge_resources() against concurrent
    addition/removal (Benjamin Herrenschmidt)

    - Fix bridge dma_ranges resource list cleanup (Rob Herring)

    - Add "pci=hpmmiosize" and "pci=hpmmioprefsize" parameters to control
    the MMIO and prefetchable MMIO window sizes of hotplug bridges
    independently (Nicholas Johnson)

    - Fix MMIO/MMIO_PREF window assignment that assigned more space than
    desired (Nicholas Johnson)

    - Only enforce bus numbers from bridge EA if the bridge has EA
    devices downstream (Subbaraya Sundeep)

    - Consolidate DT "dma-ranges" parsing and convert all host drivers to
    use shared parsing (Rob Herring)

    Error reporting:

    - Restore AER capability after resume (Mayurkumar Patel)

    - Add PoisonTLPBlocked AER counter (Rajat Jain)

    - Use for_each_set_bit() to simplify AER code (Andy Shevchenko)

    - Fix AER kernel-doc (Andy Shevchenko)

    - Add "pcie_ports=dpc-native" parameter to allow native use of DPC
    even if platform didn't grant control over AER (Olof Johansson)

    Hotplug:

    - Avoid returning prematurely from sysfs requests to enable or
    disable a PCIe hotplug slot (Lukas Wunner)

    - Don't disable interrupts twice when suspending hotplug ports (Mika
    Westerberg)

    - Fix deadlocks when PCIe ports are hot-removed while suspended (Mika
    Westerberg)

    Power management:

    - Remove unnecessary ASPM locking (Bjorn Helgaas)

    - Add support for disabling L1 PM Substates (Heiner Kallweit)

    - Allow re-enabling Clock PM after it has been disabled (Heiner
    Kallweit)

    - Add sysfs attributes for controlling ASPM link states (Heiner
    Kallweit)

    - Remove CONFIG_PCIEASPM_DEBUG, including "link_state" and "clk_ctl"
    sysfs files (Heiner Kallweit)

    - Avoid AMD FCH XHCI USB PME# from D0 defect that prevents wakeup on
    USB 2.0 or 1.1 connect events (Kai-Heng Feng)

    - Move power state check out of pci_msi_supported() (Bjorn Helgaas)

    - Fix incorrect MSI-X masking on resume and revert related nvme quirk
    for Kingston NVME SSD running FW E8FK11.T (Jian-Hong Pan)

    - Always return devices to D0 when thawing to fix hibernation with
    drivers like mlx4 that used legacy power management (previously we
    only did it for drivers with new power management ops) (Dexuan Cui)

    - Clear PCIe PME Status even for legacy power management (Bjorn
    Helgaas)

    - Fix PCI PM documentation errors (Bjorn Helgaas)

    - Use dev_printk() for more power management messages (Bjorn Helgaas)

    - Apply D2 delay as milliseconds, not microseconds (Bjorn Helgaas)

    - Convert xen-platform from legacy to generic power management (Bjorn
    Helgaas)

    - Removed unused .resume_early() and .suspend_late() legacy power
    management hooks (Bjorn Helgaas)

    - Rearrange power management code for clarity (Rafael J. Wysocki)

    - Decode power states more clearly ("4" or "D4" really refers to
    "D3cold") (Bjorn Helgaas)

    - Notice when reading PM Control register returns an error (~0)
    instead of interpreting it as being in D3hot (Bjorn Helgaas)

    - Add missing link delays required by the PCIe spec (Mika Westerberg)

    Virtualization:

    - Move pci_prg_resp_pasid_required() to CONFIG_PCI_PRI (Bjorn
    Helgaas)

    - Allow VFs to use PRI (the PF PRI is shared by the VFs, but the code
    previously didn't recognize that) (Kuppuswamy Sathyanarayanan)

    - Allow VFs to use PASID (the PF PASID capability is shared by the
    VFs, but the code previously didn't recognize that) (Kuppuswamy
    Sathyanarayanan)

    - Disconnect PF and VF ATS enablement, since ATS in PFs and
    associated VFs can be enabled independently (Kuppuswamy
    Sathyanarayanan)

    - Cache PRI and PASID capability offsets (Kuppuswamy Sathyanarayanan)

    - Cache the PRI PRG Response PASID Required bit (Bjorn Helgaas)

    - Consolidate ATS declarations in linux/pci-ats.h (Krzysztof
    Wilczynski)

    - Remove unused PRI and PASID stubs (Bjorn Helgaas)

    - Removed unnecessary EXPORT_SYMBOL_GPL() from ATS, PRI, and PASID
    interfaces that are only used by built-in IOMMU drivers (Bjorn
    Helgaas)

    - Hide PRI and PASID state restoration functions used only inside the
    PCI core (Bjorn Helgaas)

    - Add a DMA alias quirk for the Intel VCA NTB (Slawomir Pawlowski)

    - Serialize sysfs sriov_numvfs reads vs writes (Pierre Crégut)

    - Update Cavium ACS quirk for ThunderX2 and ThunderX3 (George
    Cherian)

    - Fix the UPDCR register address in the Intel ACS quirk (Steffen
    Liebergeld)

    - Unify ACS quirk implementations (Bjorn Helgaas)

    Amlogic Meson host bridge driver:

    - Fix meson PERST# GPIO polarity problem (Remi Pommarel)

    - Add DT bindings for Amlogic Meson G12A (Neil Armstrong)

    - Fix meson clock names to match DT bindings (Neil Armstrong)

    - Add meson support for Amlogic G12A SoC with separate shared PHY
    (Neil Armstrong)

    - Add meson extended PCIe PHY functions for Amlogic G12A USB3+PCIe
    combo PHY (Neil Armstrong)

    - Add arm64 DT for Amlogic G12A PCIe controller node (Neil Armstrong)

    - Add commented-out description of VIM3 USB3/PCIe mux in arm64 DT
    (Neil Armstrong)

    Broadcom iProc host bridge driver:

    - Invalidate iProc PAXB address mapping before programming it
    (Abhishek Shah)

    - Fix iproc-msi and mvebu __iomem annotations (Ben Dooks)

    Cadence host bridge driver:

    - Refactor Cadence PCIe host controller to use as a library for both
    host and endpoint (Tom Joseph)

    Freescale Layerscape host bridge driver:

    - Add layerscape LS1028a support (Xiaowei Bao)

    Intel VMD host bridge driver:

    - Add VMD bus 224-255 restriction decode (Jon Derrick)

    - Add VMD 8086:9A0B device ID (Jon Derrick)

    - Remove Keith from VMD maintainer list (Keith Busch)

    Marvell ARMADA 3700 / Aardvark host bridge driver:

    - Use LTSSM state to build link training flag since Aardvark doesn't
    implement the Link Training bit (Remi Pommarel)

    - Delay before training Aardvark link in case PERST# was asserted
    before the driver probe (Remi Pommarel)

    - Fix Aardvark issues with Root Control reads and writes (Remi
    Pommarel)

    - Don't rely on jiffies in Aardvark config access path since
    interrupts may be disabled (Remi Pommarel)

    - Fix Aardvark big-endian support (Grzegorz Jaszczyk)

    Marvell ARMADA 370 / XP host bridge driver:

    - Make mvebu_pci_bridge_emul_ops static (Ben Dooks)

    Microsoft Hyper-V host bridge driver:

    - Add hibernation support for Hyper-V virtual PCI devices (Dexuan
    Cui)

    - Track Hyper-V pci_protocol_version per-hbus, not globally (Dexuan
    Cui)

    - Avoid kmemleak false positive on hv hbus buffer (Dexuan Cui)

    Mobiveil host bridge driver:

    - Change mobiveil csr_read()/write() function names that conflict
    with riscv arch functions (Kefeng Wang)

    NVIDIA Tegra host bridge driver:

    - Fix Tegra CLKREQ dependency programming (Vidya Sagar)

    Renesas R-Car host bridge driver:

    - Remove unnecessary header include from rcar (Andrew Murray)

    - Tighten register index checking for rcar inbound range programming
    (Marek Vasut)

    - Fix rcar inbound range alignment calculation to improve packing of
    multiple entries (Marek Vasut)

    - Update rcar MACCTLR setting to match documentation (Yoshihiro
    Shimoda)

    - Clear bit 0 of MACCTLR before PCIETCTLR.CFINIT per manual
    (Yoshihiro Shimoda)

    - Add Marek Vasut and Yoshihiro Shimoda as R-Car maintainers (Simon
    Horman)

    Rockchip host bridge driver:

    - Make rockchip 0V9 and 1V8 power regulators non-optional (Robin
    Murphy)

    Socionext UniPhier host bridge driver:

    - Set uniphier to host (RC) mode always (Kunihiko Hayashi)

    Endpoint drivers:

    - Fix endpoint driver sign extension problem when shifting page
    number to phys_addr_t (Alan Mikhak)

    Misc:

    - Add NumaChip SPDX header (Krzysztof Wilczynski)

    - Replace EXTRA_CFLAGS with ccflags-y (Krzysztof Wilczynski)

    - Remove unused includes (Krzysztof Wilczynski)

    - Removed unused sysfs attribute groups (Ben Dooks)

    - Remove PTM and ASPM dependencies on PCIEPORTBUS (Bjorn Helgaas)

    - Add PCIe Link Control 2 register field definitions to replace magic
    numbers in AMDGPU and Radeon CIK/SI (Bjorn Helgaas)

    - Fix incorrect Link Control 2 Transmit Margin usage in AMDGPU and
    Radeon CIK/SI PCIe Gen3 link training (Bjorn Helgaas)

    - Use pcie_capability_read_word() instead of pci_read_config_word()
    in AMDGPU and Radeon CIK/SI (Frederick Lawler)

    - Remove unused pci_irq_get_node() Greg Kroah-Hartman)

    - Make asm/msi.h mandatory and simplify PCI_MSI_IRQ_DOMAIN Kconfig
    (Palmer Dabbelt, Michal Simek)

    - Read all 64 bits of Switchtec part_event_bitmap (Logan Gunthorpe)

    - Fix erroneous intel-iommu dependency on CONFIG_AMD_IOMMU (Bjorn
    Helgaas)

    - Fix bridge emulation big-endian support (Grzegorz Jaszczyk)

    - Fix dwc find_next_bit() usage (Niklas Cassel)

    - Fix pcitest.c fd leak (Hewenliang)

    - Fix typos and comments (Bjorn Helgaas)

    - Fix Kconfig whitespace errors (Krzysztof Kozlowski)"

    * tag 'pci-v5.5-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci: (160 commits)
    PCI: Remove PCI_MSI_IRQ_DOMAIN architecture whitelist
    asm-generic: Make msi.h a mandatory include/asm header
    Revert "nvme: Add quirk for Kingston NVME SSD running FW E8FK11.T"
    PCI/MSI: Fix incorrect MSI-X masking on resume
    PCI/MSI: Move power state check out of pci_msi_supported()
    PCI/MSI: Remove unused pci_irq_get_node()
    PCI: hv: Avoid a kmemleak false positive caused by the hbus buffer
    PCI: hv: Change pci_protocol_version to per-hbus
    PCI: hv: Add hibernation support
    PCI: hv: Reorganize the code in preparation of hibernation
    MAINTAINERS: Remove Keith from VMD maintainer
    PCI/ASPM: Remove PCIEASPM_DEBUG Kconfig option and related code
    PCI/ASPM: Add sysfs attributes for controlling ASPM link states
    PCI: Fix indentation
    drm/radeon: Prefer pcie_capability_read_word()
    drm/radeon: Replace numbers with PCI_EXP_LNKCTL2 definitions
    drm/radeon: Correct Transmit Margin masks
    drm/amdgpu: Prefer pcie_capability_read_word()
    PCI: uniphier: Set mode register to host mode
    drm/amdgpu: Replace numbers with PCI_EXP_LNKCTL2 definitions
    ...

    Linus Torvalds
     

03 Dec, 2019

1 commit

  • Pull SCSI updates from James Bottomley:
    "This is mostly update of the usual drivers: aacraid, ufs, zfcp,
    NCR5380, lpfc, qla2xxx, smartpqi, hisi_sas, target, mpt3sas, pm80xx
    plus a whole load of minor updates and fixes.

    The major core changes are Al Viro's reworking of sg's handling of
    copy to/from user, Ming Lei's removal of the host busy counter to
    avoid contention in the multiqueue case and Damien Le Moal's fixing of
    residual tracking across error handling"

    * tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi: (251 commits)
    scsi: bnx2fc: timeout calculation invalid for bnx2fc_eh_abort()
    scsi: target: core: Fix a pr_debug() argument
    scsi: iscsi: Don't send data to unbound connection
    scsi: target: iscsi: Wait for all commands to finish before freeing a session
    scsi: target: core: Release SPC-2 reservations when closing a session
    scsi: target: core: Document target_cmd_size_check()
    scsi: bnx2i: fix potential use after free
    Revert "scsi: qla2xxx: Fix memory leak when sending I/O fails"
    scsi: NCR5380: Add disconnect_mask module parameter
    scsi: NCR5380: Unconditionally clear ICR after do_abort()
    scsi: NCR5380: Call scsi_set_resid() on command completion
    scsi: scsi_debug: num_tgts must be >= 0
    scsi: lpfc: use hdwq assigned cpu for allocation
    scsi: arcmsr: fix indentation issues
    scsi: qla4xxx: fix double free bug
    scsi: pm80xx: Modified the logic to collect fatal dump
    scsi: pm80xx: Tie the interrupt name to the module instance
    scsi: pm80xx: Controller fatal error through sysfs
    scsi: pm80xx: Do not request 12G sas speeds
    scsi: pm80xx: Cleanup command when a reset times out
    ...

    Linus Torvalds
     

02 Dec, 2019

1 commit

  • Pull GPIO updates from Linus Walleij:
    "This is the bulk of GPIO changes for the v5.5 kernel cycle

    Core changes:

    - Expose pull up/down flags for the GPIO character device to
    userspace.

    After clear input from the RaspberryPi and Beagle communities, it
    has been established that prototyping, industrial automation and
    make communities strongly need this feature, and as we want people
    to use the character device, we have implemented the simple pull
    up/down interface for GPIO lines.

    This means we can specify that a (chip-specific) pull up/down
    resistor can be enabled, but does not offer fine-grained control
    such as cases where the resistance of the same pull resistor can be
    controlled (yet).

    - Introduce devm_fwnode_gpiod_get_index() and start to phase out the
    old symbol devm_fwnode_get_index_gpiod_from_child().

    - A bit of documentation clean-up work.

    - Introduce a define for GPIO line directions and deploy it in all
    GPIO drivers in the drivers/gpio directory.

    - Add a special callback to populate pin ranges when cooperating with
    the pin control subsystem and registering ranges as part of adding
    a gpiolib driver and a gpio_irq_chip driver at the same time. This
    is also deployed in the Intel Merrifield driver.

    New drivers:

    - RDA Micro GPIO controller.

    - XGS-iproc GPIO driver.

    Driver improvements:

    - Wake event and debounce support on the Tegra 186 driver.

    - Finalize the Aspeed SGPIO driver.

    - MPC8xxx uses a normal IRQ handler rather than a chained handler"

    * tag 'gpio-v5.5-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio: (64 commits)
    gpio: Add TODO item for regmap helper
    Documentation: gpio: driver.rst: Fix warnings
    gpio: of: Fix bogus reference to gpiod_get_count()
    gpiolib: Grammar s/manager/managed/
    gpio: lynxpoint: Setup correct IRQ handlers
    MAINTAINERS: Replace my email by one @kernel.org
    gpiolib: acpi: Make acpi_gpiochip_alloc_event always return AE_OK
    gpio/mpc8xxx: fix qoriq GPIO reading
    gpio: mpc8xxx: Don't overwrite default irq_set_type callback
    gpiolib: acpi: Print pin number on acpi_gpiochip_alloc_event errors
    gpiolib: fix coding style in gpiod_hog()
    drm/bridge: ti-tfp410: switch to using fwnode_gpiod_get_index()
    gpio: merrifield: Pass irqchip when adding gpiochip
    gpio: merrifield: Add GPIO pin mapping ranges via callback
    gpiolib: Introduce ->add_pin_ranges() callback
    gpio: mmio: remove untrue leftover comment
    gpio: em: Use platform_get_irq() to obtain interrupts
    gpio: tegra186: Add debounce support
    gpio: tegra186: Program interrupt route mapping
    gpio: tegra186: Derive register offsets from bank/port
    ...

    Linus Torvalds
     

29 Nov, 2019

1 commit

  • …linux; tag 'dma-mapping-5.5' of git://git.infradead.org/users/hch/dma-mapping

    Pull dma-mapping updates from Christoph Hellwig:

    - improve dma-debug scalability (Eric Dumazet)

    - tiny dma-debug cleanup (Dan Carpenter)

    - check for vmap memory in dma_map_single (Kees Cook)

    - check for dma_addr_t overflows in dma-direct when using DMA offsets
    (Nicolas Saenz Julienne)

    - switch the x86 sta2x11 SOC to use more generic DMA code (Nicolas
    Saenz Julienne)

    - fix arm-nommu dma-ranges handling (Vladimir Murzin)

    - use __initdata in CMA (Shyam Saini)

    - replace the bus dma mask with a limit (Nicolas Saenz Julienne)

    - merge the remapping helpers into the main dma-direct flow (me)

    - switch xtensa to the generic dma remap handling (me)

    - various cleanups around dma_capable (me)

    - remove unused dev arguments to various dma-noncoherent helpers (me)

    * 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux:

    * tag 'dma-mapping-5.5' of git://git.infradead.org/users/hch/dma-mapping: (22 commits)
    dma-mapping: treat dev->bus_dma_mask as a DMA limit
    dma-direct: exclude dma_direct_map_resource from the min_low_pfn check
    dma-direct: don't check swiotlb=force in dma_direct_map_resource
    dma-debug: clean up put_hash_bucket()
    powerpc: remove support for NULL dev in __phys_to_dma / __dma_to_phys
    dma-direct: avoid a forward declaration for phys_to_dma
    dma-direct: unify the dma_capable definitions
    dma-mapping: drop the dev argument to arch_sync_dma_for_*
    x86/PCI: sta2x11: use default DMA address translation
    dma-direct: check for overflows on 32 bit DMA addresses
    dma-debug: increase HASH_SIZE
    dma-debug: reorder struct dma_debug_entry fields
    xtensa: use the generic uncached segment support
    dma-mapping: merge the generic remapping helpers into dma-direct
    dma-direct: provide mmap and get_sgtable method overrides
    dma-direct: remove the dma_handle argument to __dma_direct_alloc_pages
    dma-direct: remove __dma_direct_free_pages
    usb: core: Remove redundant vmap checks
    kernel: dma-contiguous: mark CMA parameters __initdata/__initconst
    dma-debug: add a schedule point in debug_dma_dump_mappings()
    ...

    Linus Torvalds
     

28 Nov, 2019

1 commit

  • - Protect pci_reassign_bridge_resources() against concurrent
    addition/removal (Benjamin Herrenschmidt)

    - Fix bridge dma_ranges resource list cleanup (Rob Herring)

    - Add PCI_STD_NUM_BARS for the number of standard BARs (Denis Efremov)

    - Add "pci=hpmmiosize" and "pci=hpmmioprefsize" parameters to control the
    MMIO and prefetchable MMIO window sizes of hotplug bridges
    independently (Nicholas Johnson)

    - Fix MMIO/MMIO_PREF window assignment that assigned more space than
    desired (Nicholas Johnson)

    - Only enforce bus numbers from bridge EA if the bridge has EA devices
    downstream (Subbaraya Sundeep)

    * pci/resource:
    PCI: Do not use bus number zero from EA capability
    PCI: Avoid double hpmemsize MMIO window assignment
    PCI: Add "pci=hpmmiosize" and "pci=hpmmioprefsize" parameters
    PCI: Add PCI_STD_NUM_BARS for the number of standard BARs
    PCI: Fix missing bridge dma_ranges resource list cleanup
    PCI: Protect pci_reassign_bridge_resources() against concurrent addition/removal

    Bjorn Helgaas
     

26 Nov, 2019

2 commits

  • Pull m68k updates from Geert Uytterhoeven:

    - Atari Falcon IDE platform driver conversion for module autoload

    - defconfig updates (including enablement of Amiga ICY I2C)

    - small fixes and cleanups

    * tag 'm68k-for-v5.5-tag1' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k:
    m68k/atari: Convert Falcon IDE drivers to platform drivers
    m68k: defconfig: Enable ICY I2C and LTC2990 on Amiga
    m68k: defconfig: Update defconfigs for v5.4-rc1
    m68k: q40: Fix info-leak in rtc_ioctl
    nubus: Remove cast to void pointer

    Linus Torvalds
     
  • Pull libata updates from Jens Axboe:
    "Just a few fixes all over the place, support for the Annapurna SATA
    controller, and a patchset that cleans up the error defines and
    ultimately fixes anissue with sata_mv"

    * tag 'for-5.5/libata-20191121' of git://git.kernel.dk/linux-block:
    ata: pata_artop: make arrays static const, makes object smaller
    ata_piix: remove open-coded dmi_match(DMI_OEM_STRING)
    ata: sata_mv, avoid trigerrable BUG_ON
    ata: make qc_prep return ata_completion_errors
    ata: define AC_ERR_OK
    ata: Documentation, fix function names
    libata: Ensure ata_port probe has completed before detach
    ahci: tegra: use regulator_bulk_set_supply_names()
    ahci: Add support for Amazon's Annapurna Labs SATA controller

    Linus Torvalds
     

22 Nov, 2019

1 commit

  • Using a mask to represent bus DMA constraints has a set of limitations.
    The biggest one being it can only hold a power of two (minus one). The
    DMA mapping code is already aware of this and treats dev->bus_dma_mask
    as a limit. This quirk is already used by some architectures although
    still rare.

    With the introduction of the Raspberry Pi 4 we've found a new contender
    for the use of bus DMA limits, as its PCIe bus can only address the
    lower 3GB of memory (of a total of 4GB). This is impossible to represent
    with a mask. To make things worse the device-tree code rounds non power
    of two bus DMA limits to the next power of two, which is unacceptable in
    this case.

    In the light of this, rename dev->bus_dma_mask to dev->bus_dma_limit all
    over the tree and treat it as such. Note that dev->bus_dma_limit should
    contain the higher accessible DMA address.

    Signed-off-by: Nicolas Saenz Julienne
    Reviewed-by: Robin Murphy
    Signed-off-by: Christoph Hellwig

    Nicolas Saenz Julienne
     

18 Nov, 2019

1 commit

  • Autoloading of Falcon IDE driver modules requires converting these
    drivers to platform drivers.

    Add platform device for Falcon IDE interface in Atari platform setup
    code. Use this in the pata_falcon driver in place of the simple
    platform device set up on the fly.

    Convert falconide driver to use the same platform device that is used
    by pata_falcon also. (With the introduction of a platform device for
    the Atari Falcon IDE interface, the old Falcon IDE driver no longer
    loads (resource already claimed by the platform device)).

    Tested (as built-in driver) on my Atari Falcon.

    Signed-off-by: Michael Schmitz
    Acked-by: Bartlomiej Zolnierkiewicz
    Link: https://lore.kernel.org/r/1573008449-8226-1-git-send-email-schmitzmic@gmail.com
    Signed-off-by: Geert Uytterhoeven

    Michael Schmitz
     

13 Nov, 2019

1 commit

  • Remove SG_NONE and a related misleading comment. Update documentation.

    This patch does not affect behaviour as zero initialization is redundant.

    Cc: Jonathan Corbet
    Cc: Bartlomiej Zolnierkiewicz
    Cc: Jens Axboe
    Cc: Viresh Kumar
    Cc: Oliver Neukum
    Cc: Alan Stern
    Cc: Greg Kroah-Hartman
    Cc: usb-storage@lists.one-eyed-alien.net
    Link: https://lore.kernel.org/r/b4779b7a6563f6bd8d259ee457871c1c463c420e.1572656814.git.fthain@telegraphics.com.au
    Signed-off-by: Finn Thain
    Signed-off-by: Martin K. Petersen

    Finn Thain
     

08 Nov, 2019

1 commit

  • Don't populate the const arrays on the stack but instead make them
    static. Makes the object code smaller by 292 bytes.

    Before:
    text data bss dec hex filename
    6988 3132 128 10248 2808 drivers/ata/pata_artop.o

    After:
    text data bss dec hex filename
    6536 3292 128 9956 26e4 drivers/ata/pata_artop.o

    (gcc version 9.2.1, amd64)

    Acked-by: Bartlomiej Zolnierkiewicz
    Signed-off-by: Colin Ian King
    Signed-off-by: Jens Axboe

    Colin Ian King
     

07 Nov, 2019

1 commit


05 Nov, 2019

1 commit


01 Nov, 2019

3 commits

  • There are several reports that the BUG_ON on unsupported command in
    mv_qc_prep can be triggered under some circumstances:
    https://bugzilla.suse.com/show_bug.cgi?id=1110252
    https://serverfault.com/questions/888897/raid-problems-after-power-outage
    https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1652185
    https://bugs.centos.org/view.php?id=14998

    Let sata_mv handle the failure gracefully: warn about that incl. the
    failed command number and return an AC_ERR_INVALID error. We can do that
    now thanks to the previous patch.

    Remove also the long-standing FIXME.

    [v2] use %.2x as commands are defined as hexa.

    Signed-off-by: Jiri Slaby
    Cc: Jens Axboe
    Cc: linux-ide@vger.kernel.org
    Cc: Sergei Shtylyov
    Signed-off-by: Jens Axboe

    Jiri Slaby
     
  • In case a driver wants to return an error from qc_prep, return enum
    ata_completion_errors. sata_mv is one of those drivers -- see the next
    patch. Other drivers return the newly defined AC_ERR_OK.

    [v2] use enum ata_completion_errors and AC_ERR_OK.

    Signed-off-by: Jiri Slaby
    Cc: Jens Axboe
    Cc: linux-ide@vger.kernel.org
    Signed-off-by: Jens Axboe

    Jiri Slaby
     
  • With CONFIG_DEBUG_TEST_DRIVER_REMOVE set, we may find the following WARN:

    [ 23.452574] ------------[ cut here ]------------
    [ 23.457190] WARNING: CPU: 59 PID: 1 at drivers/ata/libata-core.c:6676 ata_host_detach+0x15c/0x168
    [ 23.466047] Modules linked in:
    [ 23.469092] CPU: 59 PID: 1 Comm: swapper/0 Not tainted 5.4.0-rc1-00010-g5b83fd27752b-dirty #296
    [ 23.477776] Hardware name: Huawei D06 /D06, BIOS Hisilicon D06 UEFI RC0 - V1.16.01 03/15/2019
    [ 23.486286] pstate: a0c00009 (NzCv daif +PAN +UAO)
    [ 23.491065] pc : ata_host_detach+0x15c/0x168
    [ 23.495322] lr : ata_host_detach+0x88/0x168
    [ 23.499491] sp : ffff800011cabb50
    [ 23.502792] x29: ffff800011cabb50 x28: 0000000000000007
    [ 23.508091] x27: ffff80001137f068 x26: ffff8000112c0c28
    [ 23.513390] x25: 0000000000003848 x24: ffff0023ea185300
    [ 23.518689] x23: 0000000000000001 x22: 00000000000014c0
    [ 23.523987] x21: 0000000000013740 x20: ffff0023bdc20000
    [ 23.529286] x19: 0000000000000000 x18: 0000000000000004
    [ 23.534584] x17: 0000000000000001 x16: 00000000000000f0
    [ 23.539883] x15: ffff0023eac13790 x14: ffff0023eb76c408
    [ 23.545181] x13: 0000000000000000 x12: ffff0023eac13790
    [ 23.550480] x11: ffff0023eb76c228 x10: 0000000000000000
    [ 23.555779] x9 : ffff0023eac13798 x8 : 0000000040000000
    [ 23.561077] x7 : 0000000000000002 x6 : 0000000000000001
    [ 23.566376] x5 : 0000000000000002 x4 : 0000000000000000
    [ 23.571674] x3 : ffff0023bf08a0bc x2 : 0000000000000000
    [ 23.576972] x1 : 3099674201f72700 x0 : 0000000000400284
    [ 23.582272] Call trace:
    [ 23.584706] ata_host_detach+0x15c/0x168
    [ 23.588616] ata_pci_remove_one+0x10/0x18
    [ 23.592615] ahci_remove_one+0x20/0x40
    [ 23.596356] pci_device_remove+0x3c/0xe0
    [ 23.600267] really_probe+0xdc/0x3e0
    [ 23.603830] driver_probe_device+0x58/0x100
    [ 23.608000] device_driver_attach+0x6c/0x90
    [ 23.612169] __driver_attach+0x84/0xc8
    [ 23.615908] bus_for_each_dev+0x74/0xc8
    [ 23.619730] driver_attach+0x20/0x28
    [ 23.623292] bus_add_driver+0x148/0x1f0
    [ 23.627115] driver_register+0x60/0x110
    [ 23.630938] __pci_register_driver+0x40/0x48
    [ 23.635199] ahci_pci_driver_init+0x20/0x28
    [ 23.639372] do_one_initcall+0x5c/0x1b0
    [ 23.643199] kernel_init_freeable+0x1a4/0x24c
    [ 23.647546] kernel_init+0x10/0x108
    [ 23.651023] ret_from_fork+0x10/0x18
    [ 23.654590] ---[ end trace 634a14b675b71c13 ]---

    With KASAN also enabled, we may also get many use-after-free reports.

    The issue is that when CONFIG_DEBUG_TEST_DRIVER_REMOVE is set, we may
    attempt to detach the ata_port before it has been probed.

    This is because the ata_ports are async probed, meaning that there is no
    guarantee that the ata_port has probed prior to detach. When the ata_port
    does probe in this scenario, we get all sorts of issues as the detach may
    have already happened.

    Fix by ensuring synchronisation with async_synchronize_full(). We could
    alternatively use the cookie returned from the ata_port probe
    async_schedule() call, but that means managing the cookie, so more
    complicated.

    Signed-off-by: John Garry
    Signed-off-by: Jens Axboe

    John Garry
     

26 Oct, 2019

3 commits

  • Use the new regulator helper instead of a for loop.

    Acked-by: Thierry Reding
    Signed-off-by: Bartosz Golaszewski
    Signed-off-by: Jens Axboe

    Bartosz Golaszewski
     
  • This patch adds basic support for Amazon's Annapurna Labs SATA
    controller.

    Signed-off-by: Hanna Hawa
    Signed-off-by: Jens Axboe

    Hanna Hawa
     
  • This driver is using regulator_get_optional() to handle all the supplies
    that it handles, and only ever enables and disables all supplies en masse
    without ever doing any other configuration of the device to handle missing
    power. These are clear signs that the API is being misused - it should only
    be used for supplies that may be physically absent from the system and in
    these cases the hardware usually needs different configuration if the
    supply is missing. Instead use normal regualtor_get(), if the supply is
    not described in DT then the framework will substitute a dummy regulator in
    so no special handling is needed by the consumer driver.

    In the case of the PHY regulator the handling in the driver is a hack to
    deal with integrated PHYs; the supplies are only optional in the sense
    that that there's some confusion in the code about where they're bound to.
    From a code point of view they function exactly as normal supplies so can
    be treated as such. It'd probably be better to model this by instantiating
    a PHY object for integrated PHYs.

    Reviewed-by: Hans de Goede
    Signed-off-by: Mark Brown
    Signed-off-by: Jens Axboe

    Mark Brown
     

24 Oct, 2019

1 commit

  • This converts the i.MX AHCI driver to use a GPIO descriptor
    instead of parsing the device tree by itself.

    This driver is quite obviously device tree only, and the
    GPIO line is treated as optional, so let's keep it as
    optional.

    None of the device trees in the kernel use this GPIO
    facility today, so it is hard to test.

    Cc: Egor Starkov
    Cc: Richard Zhu
    Signed-off-by: Linus Walleij

    Linus Walleij
     

16 Oct, 2019

1 commit

  • Commit c312ef176399 "libata/ahci: Drop PCS quirk for Denverton and
    beyond" got the polarity wrong on the check for which board-ids should
    have the quirk applied. The board type board_ahci_pcs7 is defined at the
    end of the list such that "pcs7" boards can be special cased in the
    future if they need the quirk. All prior Intel board ids "<
    board_ahci_pcs7" should proceed with applying the quirk.

    Reported-by: Andreas Friedrich
    Reported-by: Stephen Douthit
    Fixes: c312ef176399 ("libata/ahci: Drop PCS quirk for Denverton and beyond")
    Cc:
    Signed-off-by: Dan Williams
    Signed-off-by: Jens Axboe

    Dan Williams
     

14 Oct, 2019

1 commit

  • Code that iterates over all standard PCI BARs typically uses
    PCI_STD_RESOURCE_END. However, that requires the unusual test
    "i < PCI_STD_NUM_BARS".

    Add a definition for PCI_STD_NUM_BARS and change loops to use the more
    idiomatic C style to help avoid fencepost errors.

    Link: https://lore.kernel.org/r/20190927234026.23342-1-efremov@linux.com
    Link: https://lore.kernel.org/r/20190927234308.23935-1-efremov@linux.com
    Link: https://lore.kernel.org/r/20190916204158.6889-3-efremov@linux.com
    Signed-off-by: Denis Efremov
    Signed-off-by: Bjorn Helgaas
    Acked-by: Sebastian Ott # arch/s390/
    Acked-by: Bartlomiej Zolnierkiewicz # video/fbdev/
    Acked-by: Gustavo Pimentel # pci/controller/dwc/
    Acked-by: Jack Wang # scsi/pm8001/
    Acked-by: Martin K. Petersen # scsi/pm8001/
    Acked-by: Ulf Hansson # memstick/

    Denis Efremov
     

06 Oct, 2019

1 commit


20 Sep, 2019

1 commit

  • Each iteration of for_each_child_of_node puts the previous node, but
    in the case of a goto from the middle of the loop, there is no put,
    thus causing a memory leak. Add an of_node_put before three such goto
    statements.
    Issue found with Coccinelle.

    Reviewed-by: Hans de Goede
    Signed-off-by: Nishka Dasgupta
    Signed-off-by: Jens Axboe

    Nishka Dasgupta
     

18 Sep, 2019

1 commit

  • Pull libata updates from Jens Axboe:

    - Kill unused export (Andy)

    - Use dma_set_mask_and_coherent() throughout (Christoph)

    - Drop PCS quirk on Denverton, which has different register layout
    (Dan)

    - Support non-boot time detection for pata_buddha (Max)

    * tag 'for-5.4/libata-2019-09-15' of git://git.kernel.dk/linux-block:
    libata/ahci: Drop PCS quirk for Denverton and beyond
    ahci: Do not export local variable ahci_em_messages
    libata: switch remaining drivers to use dma_set_mask_and_coherent
    sata_sil24: use dma_set_mask_and_coherent
    sata_qstor: use dma_set_mask_and_coherent
    sata_nv: use dma_set_mask_and_coherent
    sata_mv: use dma_set_mask_and_coherent
    pdc_adma: use dma_set_mask_and_coherent
    ahci: use dma_set_mask_and_coherent
    acard_ahci: use dma_set_mask_and_coherent
    ata/pata_buddha: Probe via modalias instead of initcall

    Linus Torvalds
     

31 Aug, 2019

2 commits

  • The Linux ahci driver has historically implemented a configuration fixup
    for platforms / platform-firmware that fails to enable the ports prior
    to OS hand-off at boot. The fixup was originally implemented way back
    before ahci moved from drivers/scsi/ to drivers/ata/, and was updated in
    2007 via commit 49f290903935 "ahci: update PCS programming". The quirk
    sets a port-enable bitmap in the PCS register at offset 0x92.

    This quirk could be applied generically up until the arrival of the
    Denverton (DNV) platform. The DNV AHCI controller architecture supports
    more than 6 ports and along with that the PCS register location and
    format were updated to allow for more possible ports in the bitmap. DNV
    AHCI expands the register to 32-bits and moves it to offset 0x94.

    As it stands there are no known problem reports with existing Linux
    trying to set bits at offset 0x92 which indicates that the quirk is not
    applicable. Likely it is not applicable on a wider range of platforms,
    but it is difficult to discern which platforms if any still depend on
    the quirk.

    Rather than try to fix the PCS quirk to consider the DNV register layout
    instead require explicit opt-in. The assumption is that the OS driver
    need not touch this register, and platforms can be added with a new
    boad_ahci_pcs7 board-id when / if problematic platforms are found in the
    future. The logic in ahci_intel_pcs_quirk() looks for all Intel AHCI
    instances with "legacy" board-ids and otherwise skips the quirk if the
    board was matched by class-code.

    Reported-by: Stephen Douthit
    Cc: Christoph Hellwig
    Reviewed-by: Stephen Douthit
    Signed-off-by: Dan Williams
    Signed-off-by: Jens Axboe

    Dan Williams
     
  • The commit ed08d40cdec4
    ("ahci: Changing two module params with static and __read_mostly")
    moved ahci_em_messages to be static while missing the fact of exporting it.

    WARNING: "ahci_em_messages" [vmlinux] is a static EXPORT_SYMBOL_GPL

    Drop export for the local variable ahci_em_messages.

    Fixes: ed08d40cdec4 ("ahci: Changing two module params with static and __read_mostly")
    Cc: Chuansheng Liu
    Signed-off-by: Andy Shevchenko
    Signed-off-by: Jens Axboe

    Andy Shevchenko
     

27 Aug, 2019

8 commits