Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Commits on Aug 3, 2015
  1. Merge branch 'i2c/for-current' of git://…

    Pull i2c fixes from Wolfram Sang:
     "A refcounting bugfix for the i2c-core, bugfixes for the generic bus
      recovery algorithm and for its omap-user, making binary file
      attributes for EEPROMs behave POSIX compliant, and a small typo fix
      while we are here"
    * 'i2c/for-current' of git://
      i2c: fix leaked device refcount on of_find_i2c_* error path
      i2c: Fix typo in i2c-bfin-twi.c
      i2c: omap: fix bus recovery setup
      i2c: core: only use set_scl for bus recovery after calling prepare_recovery
      misc: eeprom: at24: clean up at24_bin_write()
      i2c: slave eeprom: clean up sysfs bin attribute read()/write()
  2. Merge branch 'for-linus' of git://…

    Pull Ceph fixes from Sage Weil:
     "There are two critical regression fixes for CephFS from Zheng, and an
      RBD completion fix for layered images from Ilya"
    * 'for-linus' of git://
      rbd: fix copyup completion race
      ceph: always re-send cap flushes when MDS recovers
      ceph: fix ceph_encode_locks_to_buffer()
  3. Merge branch 'for-linus' of git://…

    Pull security layer fix from James Morris:
     "Yama initialization fix"
    * 'for-linus' of git://
      Adding YAMA hooks also when YAMA is not stacked.
  4. Merge git://

    Pull crypto fixes from Herbert Xu:
     "This fixes the following issues:
       - a bogus BUG_ON in ixp4xx that can be triggered by a dst buffer that
         is an SG list.
       - the error handling in hwrngd may cause a crash in case of an error.
       - fix a race condition in qat registration when multiple devices are
    * git://
      hwrng: core - correct error check of kthread_run call
      crypto: ixp4xx - Remove bogus BUG_ON on scattered dst buffer
      crypto: qat - Fix invalid synchronization between register/unregister sym algs
  5. Merge tag 'fixes-for-linus' of git://…

    Pull module fix from Rusty Russell:
     "Single overzealous locking assertion fix"
    * tag 'fixes-for-linus' of git://
      module: weaken locking assertion for oops path.
  6. Adding YAMA hooks also when YAMA is not stacked.

    Salvatore Mesoraca authored James Morris committed
    Without this patch YAMA will not work at all if it is chosen
    as the primary LSM instead of being "stacked".
    Signed-off-by: Salvatore Mesoraca <>
    Acked-by: Kees Cook <>
    Signed-off-by: James Morris <>
  7. Linux 4.2-rc5

  8. Merge tag 'powerpc-4.2-3' of git://…

    Pull powerpc fixes from Michael Ellerman:
     - TCE table memory calculation fix from Alexey
     - Build fix for ans-lcd from Luis
     - Unbalanced IRQ warning fix from Alistair
    * tag 'powerpc-4.2-3' of git://
      powerpc/eeh-powernv: Fix unbalanced IRQ warning
      macintosh/ans-lcd: fix build failure after module_init/exit relocation
      powerpc/powernv/ioda2: Fix calculation for memory allocated for TCE table
Commits on Aug 2, 2015
  1. i915: temporary fix for DP MST docking station NULL pointer dereference

    Ted Ts'o reports that his Lenovo T540p ThinkPad crashes at boot if
    attached to the docking station.  This is a regression that he was able
    to bisect to commit 8c7b5cc: "drm/i915: Use atomic helpers for
    computing changed flags:"
    The reason seems to be the new call to drm_atomic_helper_check_modeset()
    added to intel_modeset_compute_config(), which in turn calls
    update_connector_routing(), and somehow ends up picking a NULL crtc for
    the connector state, causing the subsequent drm_crtc_index() to OOPS.
    Daniel Vetter says that the fundamental issue seems to be confusion in
    the encoder selection, and this isn't the right fix, but while he chases
    down the proper fix, this at least avoids the NULL pointer dereference
    and makes Ted's docking station work again.
    Reported-bisected-and-tested-by: Theodore Ts'o <>
    Cc: Daniel Vetter <>
    Cc: Mani Nikula <>
    Cc: Dave Airlie <>
    Signed-off-by: Linus Torvalds <>
  2. Merge tag 'scsi-fixes' of git://…

    Pull SCSI fixes from James Bottomley:
     "A set of three fixes for the ipr driver and one fairly major one for
      memory leaks in the mq path of SCSI"
    * tag 'scsi-fixes' of git://
      scsi: fix memory leak with scsi-mq
      ipr: Fix invalid array indexing for HRRQ
      ipr: Fix incorrect trace indexing
      ipr: Fix locking for unit attention handling
  3. Merge tag 'armsoc-for-linus' of git://…

    Pull ARM SoC fixes from Olof Johansson:
     "Things are calming down nicely here w.r.t. fixes.  This batch
      includes two week's worth since I missed to send before -rc4.
      Nothing particularly scary to point out, smaller fixes here and there.
      Shortlog describes it pretty well"
    * tag 'armsoc-for-linus' of git://
      ARM: dts: keystone: fix dt bindings to use post div register for mainpll
      ARM: nomadik: disable UART0 on Nomadik boards
      ARM: dts: i.MX35: Fix can support.
      ARM: OMAP2+: hwmod: Fix _wait_target_ready() for hwmods without sysc
      ARM: dts: add CPU OPP and regulator supply property for exynos4210
      ARM: dts: Update video-phy node with syscon phandle for exynos3250
      ARM: DRA7: hwmod: fix gpmc hwmod
  4. Merge branch 'for-linus' of git://…

    Pull VFS fix from Al Viro:
     "Spurious ENOTDIR fix"
    This should fix the problems reported by Dominique Martinet and Hugh
    * 'for-linus' of git://
      link_path_walk(): be careful when failing with ENOTDIR
  5. link_path_walk(): be careful when failing with ENOTDIR

    Al Viro authored
    In RCU mode we might end up with dentry evicted just we check
    that it's a directory.  In such case we should return ECHILD
    rather than ENOTDIR, so that pathwalk would be retries in non-RCU
    Breakage had been introduced in commit b18825a - prior to that
    we were looking at nd->inode, which had been fetched before
    verifying that ->d_seq was still valid.  That form of check
    would only be satisfied if at some point the pathname prefix
    would indeed have resolved to a non-directory.  The fix consists
    of checking ->d_seq after we'd run into a non-directory dentry,
    and failing with ECHILD in case of mismatch.
    Note that all branches since 3.12 have that problem...
    Signed-off-by: Al Viro <>
Commits on Aug 1, 2015
  1. Merge tag 'dmaengine-fix-4.2-rc5' of git://…

    Pull dmaengine fixes from Vinod Koul:
     "We had a regression due to reuse of descriptor so we have reverted
      The rest are driver fixes:
       - at_hdmac and at_xdmac for residue, trannfer width, and channel config
       - pl330 final fix for dma fails and overflow issue
       - xgene resouce map fix
       - mv_xor big endian op fix"
    * tag 'dmaengine-fix-4.2-rc5' of git://
      Revert "dmaengine: virt-dma: don't always free descriptor upon completion"
      dmaengine: mv_xor: fix big endian operation in register mode
      dmaengine: xgene-dma: Fix the resource map to handle overlapping
      dmaengine: at_xdmac: fix transfer data width in at_xdmac_prep_slave_sg()
      dmaengine: at_hdmac: fix residue computation
      dmaengine: at_xdmac: fix bug about channel configuration
      dmaengine: pl330: Really fix choppy sound because of wrong residue calculation
      dmaengine: pl330: Fix overflow when reporting residue in memcpy
  2. Merge branch 'irq-urgent-for-linus' of git://…

    Pull irq fixlets from Thomas Gleixner:
     "Just two updates to the maintainers file"
    * 'irq-urgent-for-linus' of git://
      MAINTAINERS: Appoint Jiang and Marc as irqdomain maintainers
      MAINTAINERS: Appoint Marc Zyngier as irqchips co-maintainer
  3. Merge branch 'x86-urgent-for-linus' of git://…

    Pull x86 fixes from Ingo Molnar:
     "Fallout from the recent NMI fixes: make x86 LDT handling more robust.
      Also some EFI fixes"
    * 'x86-urgent-for-linus' of git://
      x86/ldt: Make modify_ldt synchronous
      x86/xen: Probe target addresses in set_aliased_prot() before the hypercall
      x86/irq: Use the caller provided polarity setting in mp_check_pin_attr()
      efi: Check for NULL efi kernel parameters
      x86/efi: Use all 64 bit of efi_memmap in setup_e820()
  4. i2c: fix leaked device refcount on of_find_i2c_* error path

    Vladimir Zapolskiy authored Wolfram Sang committed
    If of_find_i2c_device_by_node() or of_find_i2c_adapter_by_node() find
    a device by node, but its type does not match, a reference to that
    device is still held. This change fixes the problem.
    Signed-off-by: Vladimir Zapolskiy <>
    Signed-off-by: Wolfram Sang <>
  5. Merge git://

    Pull networking fixes from David Miller:
     1) Must teardown SR-IOV before unregistering netdev in igb driver, from
        Alex Williamson.
     2) Fix ipv6 route unreachable crash in IPVS, from Alex Gartrell.
     3) Default route selection in ipv4 should take the prefix length, table
        ID, and TOS into account, from Julian Anastasov.
     4) sch_plug must have a reset method in order to purge all buffered
        packets when the qdisc is reset, likewise for sch_choke, from WANG
     5) Fix deadlock and races in slave_changelink/br_setport in bridging.
        From Nikolay Aleksandrov.
     6) mlx4 bug fixes (wrong index in port even propagation to VFs,
        overzealous BUG_ON assertion, etc.) from Ido Shamay, Jack
        Morgenstein, and Or Gerlitz.
     7) Turn off klog message about SCTP userspace interface compat that
        makes no sense at all, from Daniel Borkmann.
     8) Fix unbounded restarts of inet frag eviction process, causing NMI
        watchdog soft lockup messages, from Florian Westphal.
     9) Suspend/resume fixes for r8152 from Hayes Wang.
    10) Fix busy loop when MSG_WAITALL|MSG_PEEK is used in TCP recv, from
        Sabrina Dubroca.
    11) Fix performance regression when removing a lot of routes from the
        ipv4 routing tables, from Alexander Duyck.
    12) Fix device leak in AF_PACKET, from Lars Westerhoff.
    13) AF_PACKET also has a header length comparison bug due to signedness,
        from Alexander Drozdov.
    14) Fix bug in EBPF tail call generation on x86, from Daniel Borkmann.
    15) Memory leaks, TSO stats, watchdog timeout and other fixes to
        thunderx driver from Sunil Goutham and Thanneeru Srinivasulu.
    16) act_bpf can leak memory when replacing programs, from Daniel
    17) WOL packet fixes in gianfar driver, from Claudiu Manoil.
    * git:// (79 commits)
      stmmac: fix missing MODULE_LICENSE in stmmac_platform
      gianfar: Enable device wakeup when appropriate
      gianfar: Fix suspend/resume for wol magic packet
      gianfar: Fix warning when CONFIG_PM off
      act_pedit: check binding before calling tcf_hash_release()
      net: sk_clone_lock() should only do get_net() if the parent is not a kernel socket
      net: sched: fix refcount imbalance in actions
      r8152: reset device when tx timeout
      r8152: add pre_reset and post_reset
      qlcnic: Fix corruption while copying
      act_bpf: fix memory leaks when replacing bpf programs
      net: thunderx: Fix for crash while BGX teardown
      net: thunderx: Add PCI driver shutdown routine
      net: thunderx: Fix crash when changing rss with mutliple traffic flows
      net: thunderx: Set watchdog timeout value
      net: thunderx: Wakeup TXQ only if CQE_TX are processed
      net: thunderx: Suppress alloc_pages() failure warnings
      net: thunderx: Fix TSO packet statistic
      net: thunderx: Fix memory leak when changing queue count
      net: thunderx: Fix RQ_DROP miscalculation
  6. Merge branch 'for-linus-4.2' of git://…

    Pull btrfs fixes from Chris Mason:
     "Filipe fixed up a hard to trigger ENOSPC regression from our merge
      window pull, and we have a few other smaller fixes"
    * 'for-linus-4.2' of git://
      Btrfs: fix quick exhaustion of the system array in the superblock
      btrfs: its btrfs_err() instead of btrfs_error()
      btrfs: Avoid NULL pointer dereference of free_extent_buffer when read_tree_block() fail
      btrfs: Fix lockdep warning of btrfs_run_delayed_iputs()
  7. Merge tag 'sound-4.2-rc5' of git://…

    Pull sound fixes from Takashi Iwai:
     "This became a relative big update as it includes the collected ASoC
      fixes.  There are a few fixes in ASoC core side, mostly for DAPM and
      the new topology API.  The rest are various ASoC driver-specific
      fixes, as well as the usual HD-audio and USB-audio quirks"
    * tag 'sound-4.2-rc5' of git:// (29 commits)
      ALSA: hda - Fix MacBook Pro 5,2 quirk
      ALSA: hda - Fix race between PM ops and HDA init/probe
      ALSA: usb-audio: add dB range mapping for some devices
      ALSA: hda - Apply a fixup to Dell Vostro 5480
      ALSA: hda - Add pin quirk for the headset mic jack detection on Dell laptop
      ALSA: hda - Apply fixup for another Toshiba Satellite S50D
      ALSA: fireworks: add support for AudioFire2 quirk
      ALSA: hda - Fix the headset mic that will not work on Dell desktop machine
      ALSA: hda - fix cs4210_spdif_automute()
      ASoC: pcm1681: Fix setting de-emphasis sampling rate selection
      ASoC: ssm4567: Keep TDM_BCLKS in ssm4567_set_dai_fmt
      ASoC: sgtl5000: Fix up define for SGTL5000_SMALL_POP
      ASoC: dapm: Don't add prefix to widget stream name
      ASoC: rt5645: Check if codec is initialized in workqueue handler
      ASoC: Intel: Get correct usage_count value to load firmware
      ASoC: topology: Fix to add dapm mixer info
      ASoC: zx: spdif: Fix devm_ioremap_resource return value check
      ASoC: zx: i2s: Fix devm_ioremap_resource return value check
      ASoC: mediatek: Use platform_of_node for machine drivers
      ASoC: Free card DAPM context on snd_soc_instantiate_card() error path
Commits on Jul 31, 2015
  1. @manabian @davem330

    stmmac: fix missing MODULE_LICENSE in stmmac_platform

    manabian authored davem330 committed
    Commit 50649ab ("stmmac: drop driver from stmmac platform code")
    was a bit overzealous in removing code and dropped the MODULE_*
    macro's that are still needed since stmmac_platform can be a module.
    Fix this by putting the macro's remvoed in 50649ab back.
    This fixes the following errors when used as a module:
      stmmac_platform: module license 'unspecified' taints kernel.
      Disabling lock debugging due to kernel taint
      stmmac_platform: Unknown symbol devm_kmalloc (err 0)
      stmmac_platform: Unknown symbol stmmac_suspend (err 0)
      stmmac_platform: Unknown symbol platform_get_irq_byname (err 0)
      stmmac_platform: Unknown symbol stmmac_dvr_remove (err 0)
      stmmac_platform: Unknown symbol platform_get_resource (err 0)
      stmmac_platform: Unknown symbol of_get_phy_mode (err 0)
      stmmac_platform: Unknown symbol of_property_read_u32_array (err 0)
      stmmac_platform: Unknown symbol of_alias_get_id (err 0)
      stmmac_platform: Unknown symbol stmmac_resume (err 0)
      stmmac_platform: Unknown symbol stmmac_dvr_probe (err 0)
    Fixes: 50649ab ("stmmac: drop driver from stmmac platform code")
    Reported-by: Igor Gnatenko <>
    Signed-off-by: Joachim Eastwood <>
    Signed-off-by: David S. Miller <>
  2. @davem330

    Merge branch 'gianfar-wol-fixes'

    davem330 authored
    Claudiu Manoil says:
    gianfar: wol magic packet fixes
    These changes were already validated as part of FSL SDK.
    Patch 2 fixes occasional wake-on magic packet failures during
    traffic, probably due to incorrect traffic stop/ device halt
    sequence and incorrect usage of txlock.
    Signed-off-by: David S. Miller <>
  3. @cl4udiu @davem330

    gianfar: Enable device wakeup when appropriate

    cl4udiu authored davem330 committed
    The wol_en flag is 0 by default anyway, and we have the
    following inconsistency: a MAGIC packet wol capable eth
    interface is registered as a wake-up source but unable
    to wake-up the system as wol_en is 0 (wake-on flag set to 'd').
    Calling set_wakeup_enable() at netdev open is just redundant
    because wol_en is 0 by default.
    Let only ethtool call set_wakeup_enable() for now.
    The bflock is obviously obsoleted, its utility has been corroded
    over time.  The bitfield flags used today in gianfar are accessed
    only on the init/ config path, with no real possibility of
    concurrency - nothing that would justify smth. like bflock.
    Signed-off-by: Claudiu Manoil <>
    Signed-off-by: David S. Miller <>
  4. @cl4udiu @davem330

    gianfar: Fix suspend/resume for wol magic packet

    cl4udiu authored davem330 committed
    If we disable NAPI in the first place we can mask the device's
    interrupts (and halt it) without fearing that imask may be
    concurrently accessed from interrupt context, so there's
    no need to do local_irq_save() around gfar_halt_nodisable().
    lock_rx_qs()/unlock_tx_qs() are just obsoleted and potentially
    buggy routines.  The txlock is currently used in the driver only
    to manage TX congestion, it has nothing to do with halting the
    device.  With these changes, the TX processing is stopped before
    Compact gfar_halt() is used instead of gfar_halt_nodisable(),
    as it disables Rx/TX DMA h/w blocks and the Rx/TX h/w queues.
    gfar_start() re-enables all these blocks on resume.  Enabling
    the magic-packet mode remains the same, note that the RX block
    is re-enabled just before entering sleep mode.
    Add IRQF_NO_SUSPEND flag for the error interrupt line, to signal
    that the interrupt line must remain active during sleep in order
    to wake the system by magic packet (MAG) reception interrupt.
    (On some systems the MAG interrupt did trigger w/o this flag
    as well, but on others it didn't.)
    Without these fixes, when suspended during fair Tx traffic the
    interface occasionally failed to be woken up by magic packet.
    Signed-off-by: Claudiu Manoil <>
    Signed-off-by: David S. Miller <>
  5. @cl4udiu @davem330

    gianfar: Fix warning when CONFIG_PM off

    cl4udiu authored davem330 committed
    CC      drivers/net/ethernet/freescale/gianfar.o
    drivers/net/ethernet/freescale/gianfar.c:568:13: warning: 'lock_tx_qs'
    defined but not used [-Wunused-function]
     static void lock_tx_qs(struct gfar_private *priv)
    drivers/net/ethernet/freescale/gianfar.c:576:13: warning: 'unlock_tx_qs'
    defined but not used [-Wunused-function]
     static void unlock_tx_qs(struct gfar_private *priv)
    Reported-by: Scott Wood <>
    Signed-off-by: Claudiu Manoil <>
    Signed-off-by: David S. Miller <>
  6. @congwang @davem330

    act_pedit: check binding before calling tcf_hash_release()

    congwang authored davem330 committed
    When we share an action within a filter, the bind refcnt
    should increase, therefore we should not call tcf_hash_release().
    Fixes: 1a29321 ("net_sched: act: Dont increment refcnt on replace")
    Cc: Jamal Hadi Salim <>
    Cc: Daniel Borkmann <>
    Signed-off-by: Cong Wang <>
    Signed-off-by: Cong Wang <>
    Acked-by: Daniel Borkmann <>
    Signed-off-by: David S. Miller <>
  7. @olofj

    ARM: dts: keystone: fix dt bindings to use post div register for mainpll

    Murali Karicheri authored olofj committed
    All of the keystone devices have a separate register to hold post
    divider value for main pll clock. Currently the fixed-postdiv
    value used for k2hk/l/e SoCs works by sheer luck as u-boot happens to
    use a value of 2 for this. Now that we have fixed this in the pll
    clock driver change the dt bindings for the same.
    Signed-off-by: Murali Karicheri <>
    Acked-by: Santosh Shilimkar <>
    Signed-off-by: Olof Johansson <>
  8. Merge tag 'iommu-fixes-v4.2-rc4' of git://…

    Pull IOMMU fixes from Joerg Roedel:
     "These fixes are all for the AMD IOMMU driver:
       - A regression with HSA caused by the conversion of the driver to
         default domains.  The fixes make sure that an HSA device can still
         be attached to an IOMMUv2 domain and that these domains also allow
         non-IOMMUv2 capable devices.
       - Fix iommu=pt mode which did not work because the dma_ops where set
         to nommu_ops, which breaks devices that can only do 32bit DMA.
       - Fix an issue with non-PCI devices not working, because there are no
         dma_ops for them.  This issue was discovered recently as new AMD
         x86 platforms have non-PCI devices too"
    * tag 'iommu-fixes-v4.2-rc4' of git://
      iommu/amd: Allow non-ATS devices in IOMMUv2 domains
      iommu/amd: Set global dma_ops if swiotlb is disabled
      iommu/amd: Use swiotlb in passthrough mode
      iommu/amd: Allow non-IOMMUv2 devices in IOMMUv2 domains
      iommu/amd: Use iommu core for passthrough mode
      iommu/amd: Use iommu_attach_group()
  9. Merge tag 'drm-intel-fixes-2015-07-31' of git://anongit.freedesktop.o…

    Pull drm intel fixes from Daniel Vetter:
     "I delayed my -fixes pull a bit hoping that I could include a fix for
      the dp mst stuff but looks a bit more nasty than that.  So just 3
      other regression fixes, one 4.2 other two cc: stable"
    * tag 'drm-intel-fixes-2015-07-31' of git://
      drm/i915: Declare the swizzling unknown for L-shaped configurations
      drm/i915: Mark PIN_USER binding as GLOBAL_BIND without the aliasing ppgtt
      drm/i915: Replace WARN inside I915_READ64_2x32 with retry loop
  10. Merge branch 'drm-fixes' of git://

    Pull drm fixes from Dave Airlie:
     "This has a bunch of nouveau fixes, as Ben has been hibernating and has
      lots of small fixes for lots of bugs across nouveau.
      Radeon has one major fix for hdmi/dp audio regression that is larger
      than Alex would like, but seems to fix up a fair few bugs, along with
      some misc fixes.
      And a few msm fixes, one of which is also a bit large.
      But nothing in here seems insane or crazy for this stage, just more
      than I'd like"
    * 'drm-fixes' of git:// (33 commits)
      drm/msm/mdp5: release SMB (shared memory blocks) in various cases
      drm/msm: change to uninterruptible wait in atomic commit
      drm/msm: mdp4: Fix drm_framebuffer dereference crash
      drm/msm: fix msm_gem_prime_get_sg_table()
      drm/amdgpu: add new parameter to seperate map and unmap
      drm/amdgpu: hdp_flush is not needed for inside IB
      drm/amdgpu: different emit_ib for gfx and compute
      drm/amdgpu: information leak in amdgpu_info_ioctl()
      drm/amdgpu: clean up init sequence for failures
      drm/radeon/combios: add some validation of lvds values
      drm/radeon: rework audio modeset to handle non-audio hdmi features
      drm/radeon: rework audio detect (v4)
      drm/amdgpu: Drop drm/ prefix for including drm.h in amdgpu_drm.h
      drm/radeon: Drop drm/ prefix for including drm.h in radeon_drm.h
      drm/nouveau/nouveau/ttm: fix tiled system memory with Maxwell
      drm/nouveau/kms/nv50-: guard against enabling cursor on disabled heads
      drm/nouveau/fbcon/g80: reduce PUSH_SPACE alloc, fire ring on accel init
      drm/nouveau/fbcon/gf100-: reduce RING_SPACE allocation
      drm/nouveau/fbcon/nv11-: correctly account for ring space usage
      drm/nouveau/bios: add proper support for opcode 0x59
  11. @niej @vinodkoul

    Revert "dmaengine: virt-dma: don't always free descriptor upon comple…

    niej authored vinodkoul committed
    This reverts commit b9855f0.
    The patch break existing DMA usage case. For example, audio SOC
    dmaengine never release channel and cause virt-dma to cache too
    much memory in descriptor to exhaust system memory.
    Signed-off-by: Vinod Koul <>
  12. @tpetazzoni @vinodkoul

    dmaengine: mv_xor: fix big endian operation in register mode

    tpetazzoni authored vinodkoul committed
    Commit 6f16631 ("dmaengine: mv_xor: add support for a38x command
    in descriptor mode") introduced the support for a feature that
    appeared in Armada 38x: specifying the operation to be performed in a
    per-descriptor basis rather than globally per channel.
    However, when doing so, it changed the function mv_chan_set_mode() to
    instead of:
      #if defined(__BIG_ENDIAN)
    While IS_ENABLED() is perfectly fine for CONFIG_* symbols, it is not
    for other symbols such as __BIG_ENDIAN that is provided directly by
    the compiler. Consequently, the commit broke support for big-endian,
    as the XOR_DESCRIPTOR_SWAP flag was not set in the XOR channel
    configuration register.
    The primarily visible effect was some nasty warnings and failures
    appearing during the self-test of the XOR unit:
    [    1.197368] mv_xor d0060900.xor: error on chan 0. intr cause 0x00000082
    [    1.197393] mv_xor d0060900.xor: config       0x00008440
    [    1.197410] mv_xor d0060900.xor: activation   0x00000000
    [    1.197427] mv_xor d0060900.xor: intr cause   0x00000082
    [    1.197443] mv_xor d0060900.xor: intr mask    0x000003f7
    [    1.197460] mv_xor d0060900.xor: error cause  0x00000000
    [    1.197477] mv_xor d0060900.xor: error addr   0x00000000
    [    1.197491] ------------[ cut here ]------------
    [    1.197513] WARNING: CPU: 0 PID: 1 at ../drivers/dma/mv_xor.c:664 mv_xor_interrupt_handler+0x14c/0x170()
    See also:
    Signed-off-by: Thomas Petazzoni <>
    Fixes: 6f16631 ("dmaengine: mv_xor: add support for a38x command in descriptor mode")
    Reviewed-by: Maxime Ripard <>
    Signed-off-by: Vinod Koul <>
  13. @vinodkoul

    dmaengine: xgene-dma: Fix the resource map to handle overlapping

    Rameshwar Prasad Sahu authored vinodkoul committed
    There is an overlap in dma ring cmd csr region due to sharing of ethernet
    ring cmd csr region. This patch fix the resource overlapping by mapping
    the entire dma ring cmd csr region.
    Signed-off-by: Rameshwar Prasad Sahu <>
    Signed-off-by: Vinod Koul <>
  14. @vinodkoul

    dmaengine: at_xdmac: fix transfer data width in at_xdmac_prep_slave_sg()

    Cyrille Pitchen authored vinodkoul committed
    This patch adds the missing update of the transfer data width in
    Indeed, for each item in the scatter-gather list, we check whether the
    transfer length is aligned with the data width provided by
    dmaengine_slave_config(). If so, we directly use this data width for the
    current part of the transfer we are preparing. Otherwise, the data width
    is reduced to 8 bits (1 byte). Of course, the actual number of register
    accesses must also be updated to match the new data width.
    So one chunk was missing in the original patch (see Fixes tag below): the
    number of register accesses was correctly set to (len >> fixed_dwidth) in
    mbr_ubc but the real data width was not updated in mbr_cfg. Since mbr_cfg
    may change for each part of the scatter-gather transfer this also explains
    why the original patch used the Descriptor View 2 instead of the
    Descriptor View 1.
    Let's take the example of a DMA transfer to write 8bit data into an Atmel
    USART with FIFOs. When FIFOs are enabled in the USART, its Transmit
    Holding Register (THR) works in multidata mode, that is to say that up to
    4 8bit data can be written into the THR in a single 32bit access and it is
    still possible to write only one data with a 8bit access. To take
    advantage of this new feature, the DMA driver was modified to allow
    multiple dwidths when doing slave transfers.
    For instance, when the total length is 22 bytes, the USART driver splits
    the transfer into 2 parts:
    First part: 20 bytes transferred through 5 32bit writes into THR
    Second part: 2 bytes transferred though 2 8bit writes into THR
    For the second part, the data width was first set to 4_BYTES by the USART
    driver thanks to dmaengine_slave_config() then at_xdmac_prep_slave_sg()
    reduces this data width to 1_BYTE because the 2 byte length is not aligned
    with the original 4_BYTES data width. Since the data width is modified,
    the actual number of writes into THR must be set accordingly.
    Signed-off-by: Cyrille Pitchen <>
    Fixes: 6d3a7d9 ("dmaengine: at_xdmac: allow muliple dwidths when doing slave transfers")
    Cc: #4.0 and later
    Acked-by: Nicolas Ferre <>
    Acked-by: Ludovic Desroches <>
    Signed-off-by: Vinod Koul <>
  15. @vinodkoul

    dmaengine: at_hdmac: fix residue computation

    Cyrille Pitchen authored vinodkoul committed
    As claimed by the programmer datasheet and confirmed by the IP designer,
    the Block Transfer Size (BTSIZE) bitfield of the Channel x Control A
    Register (CTRLAx) always refers to a number of Source Width (SRC_WIDTH)
    Both the SRC_WIDTH and BTSIZE bitfields can be extacted from the CTRLAx
    register to compute the DMA residue. So the 'tx_width' field is useless
    and can be removed from the struct at_desc.
    Before this patch, atc_prep_slave_sg() was not consistent: BTSIZE was
    correctly initialized according to the SRC_WIDTH but 'tx_width' was always
    set to reg_width, which was incorrect for MEM_TO_DEV transfers. It led to
    bad DMA residue when 'tx_width' != SRC_WIDTH.
    Also the 'tx_width' field was mostly set only in the first and last
    descriptors. Depending on the kind of DMA transfer, this field remained
    uninitialized for intermediate descriptors. The accurate DMA residue was
    computed only when the currently processed descriptor was the first or the
    last of the chain. This algorithm was a little bit odd. An accurate DMA
    residue can always be computed using the SRC_WIDTH and BTSIZE bitfields
    in the CTRLAx register.
    Finally, the test to check whether the currently processed descriptor is
    the last of the chain was wrong: for cyclic transfer, last_desc->lli.dscr
    is NOT equal to zero, since set_desc_eol() is never called, but logically
    equal to first_desc->txd.phys. This bug has a side effect on the
    drivers/tty/serial/atmel_serial.c driver, which uses cyclic DMA transfer
    to receive data. Since the DMA residue was wrong each time the DMA
    transfer reaches the second (and last) period of the transfer, no more
    data were received by the USART driver till the cyclic DMA transfer loops
    back to the first period.
    Signed-off-by: Cyrille Pitchen <>
    Acked-by: Torsten Fleischer <>
    Tested-by: Jirí Prchal <>
    Acked-by: Nicolas Ferre <>
    Signed-off-by: Vinod Koul <>
Something went wrong with that request. Please try again.