Skip to content
  1. Feb 02, 2015
    • Paul Walmsley's avatar
      clk: tegra: Add support for the Tegra132 CAR IP block · 08acae34
      Paul Walmsley authored
      Tegra132 CAR supports almost the same clocks as Tegra124 CAR. This
      patch mostly deals with the small differences.
      
      Since Tegra132 contains many of the same PLL clock sources used on
      Tegra114 and Tegra124, enable them in drivers/clk/tegra/clk-pll.c when
      the kernel is configured to include Tegra132 support.
      
      This patch is based on several patches from others:
      
      1. a  patch from Peter De Schrijver:
      
      http://lkml.iu.edu/hypermail/linux/kernel/1407.1/06094.html
      
      
      
      2. a patch from Bill Huang ("clk: tegra: enable cclk_g at boot on
      Tegra132"), and
      
      3. a patch from Allen Martin ("clk: Enable tegra clock driver for
      tegra132").
      
      Signed-off-by: default avatarPaul Walmsley <paul@pwsan.com>
      Signed-off-by: default avatarPaul Walmsley <pwalmsley@nvidia.com>
      Cc: Peter De Schrijver <pdeschrijver@nvidia.com>
      Cc: Allen Martin <amartin@nvidia.com>
      Cc: Prashant Gaikwad <pgaikwad@nvidia.com>
      Cc: Stephen Warren <swarren@wwwdotorg.org>
      Cc: Thierry Reding <thierry.reding@gmail.com>
      Cc: Alexandre Courbot <gnurou@gmail.com>
      Cc: Bill Huang <bilhuang@nvidia.com>
      Cc: Mike Turquette <mturquette@linaro.org>
      Cc: Stephen Boyd <sboyd@codeaurora.org>
      08acae34
    • Peter De Schrijver's avatar
      clk: tegra: Update binding doc for Tegra132 · 4ef0f2fd
      Peter De Schrijver authored
      
      
      Tegra132 has almost the same clock structure than Tegra124. This patch
      documents the missing clock IDs.
      
      Signed-off-by: default avatarPeter De Schrijver <pdeschrijver@nvidia.com>
      [paul@pwsan.com: updated binding documentation to reflect the recent
       split of Tegra124 clock IDs into a Tegra124/132-common file and a
       Tegra124-specific file]
      Signed-off-by: default avatarPaul Walmsley <paul@pwsan.com>
      Signed-off-by: default avatarPaul Walmsley <pwalmsley@nvidia.com>
      Cc: Stephen Warren <swarren@wwwdotorg.org>
      Cc: Thierry Reding <thierry.reding@gmail.com>
      Cc: Alexandre Courbot <gnurou@gmail.com>
      Cc: Rob Herring <robh+dt@kernel.org>
      Cc: Pawel Moll <pawel.moll@arm.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Ian Campbell <ijc+devicetree@hellion.org.uk>
      Cc: Kumar Gala <galak@codeaurora.org>
      4ef0f2fd
    • Paul Walmsley's avatar
      clk: tegra: split Tegra124 clock header file · 3fdd5972
      Paul Walmsley authored
      
      
      Split the Tegra124 clock macros into two files:
      
      1. Clock macros common to both Tegra124 and Tegra132
      2. Clock macros specific to Tegra124
      
      This was requested by Thierry in Message-ID
      <20140716072539.GD7978@ulmo>.
      
      Signed-off-by: default avatarPaul Walmsley <paul@pwsan.com>
      Signed-off-by: default avatarPaul Walmsley <pwalmsley@nvidia.com>
      Cc: Peter De Schrijver <pdeschrijver@nvidia.com>
      Cc: Rob Herring <robh+dt@kernel.org>
      Cc: Pawel Moll <pawel.moll@arm.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Ian Campbell <ijc+devicetree@hellion.org.uk>
      Cc: Kumar Gala <galak@codeaurora.org>
      Cc: Stephen Warren <swarren@wwwdotorg.org>
      Cc: Thierry Reding <thierry.reding@gmail.com>
      Cc: Alexandre Courbot <gnurou@gmail.com>
      3fdd5972
    • Peter De Schrijver's avatar
      clk: tegra: make tegra_clocks_apply_init_table() arch_initcall · d0a57bd5
      Peter De Schrijver authored
      tegra_clocks_apply_init_table() needs to be called after the udelay
      loop has been calibrated (see commit
      441f199a
      
       ("clk: tegra: defer
      application of init table") for why that is).  On existing Tegra SoCs
      this was done by calling tegra_clocks_apply_init_table() from
      tegra_dt_init(). To make this also work on ARM64, we need to change
      this into an initcall. tegra_dt_init() is called from
      customize_machine which is an arch_initcall. Therefore this should
      also work on existing 32bit Tegra SoCs.
      
      Tested on Tegra20 (ventana), Tegra30 (beaverboard), Tegra124 (jetson TK1) and
      Tegra132.
      
      Signed-off-by: default avatarPeter De Schrijver <pdeschrijver@nvidia.com>
      [paul@pwsan.com: tweaked the commit message]
      Signed-off-by: default avatarPaul Walmsley <paul@pwsan.com>
      Signed-off-by: default avatarPaul Walmsley <pwalmsley@nvidia.com>
      Cc: Thierry Reding <treding@nvidia.com>
      Cc: Prashant Gaikwad <pgaikwad@nvidia.com>
      Cc: Mike Turquette <mturquette@linaro.org>
      Cc: Stephen Boyd <sboyd@codeaurora.org>
      Cc: Stephen Warren <swarren@wwwdotorg.org>
      Cc: Thierry Reding <thierry.reding@gmail.com>
      Cc: Alexandre Courbot <gnurou@gmail.com>
      d0a57bd5
    • Tomeu Vizoso's avatar
      clk: tegra: Fix order of arguments in WARN · ca036b26
      Tomeu Vizoso authored
      
      
      As previously the names of the present clock and its parent were swapped.
      
      Signed-off-by: default avatarTomeu Vizoso <tomeu.vizoso@collabora.com>
      Signed-off-by: default avatarPeter De Schrijver <pdeschrijver@nvidia.com>
      ca036b26
    • Sean Paul's avatar
      clk: tegra124: Add init data for dsi lp clocks · f892f24b
      Sean Paul authored
      
      
      Set the parent of the dsi lp clocks to pll_p and the rate
      to 68MHz. The default parent is clk_m and rate is 12MHz, this
      is too slow to receive data from the peripheral.
      
      Per NVidia HW engineers, the optimal rate is 70MHz, but 68MHz
      will suffice.
      
      Signed-off-by: default avatarSean Paul <seanpaul@chromium.org>
      Signed-off-by: default avatarPeter De Schrijver <pdeschrijver@nvidia.com>
      f892f24b
    • Andrew Bresticker's avatar
      clk: tegra: SDMMC controllers are on APB · 18abd163
      Andrew Bresticker authored
      
      
      Since the SDMMC controller registers are accessed via the APB,
      the APB must be flushed before gating the SDMMC clocks to prevent
      register accesses to the SDMMC controllers after their clocks are
      gated.
      
      Signed-off-by: default avatarAndrew Bresticker <abrestic@chromium.org>
      Signed-off-by: default avatarPeter De Schrijver <pdeschrijver@nvidia.com>
      18abd163
    • Linus Torvalds's avatar
      Linux 3.19-rc7 · e36f014e
      Linus Torvalds authored
      e36f014e
    • Linus Torvalds's avatar
      Merge tag 'armsoc-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · fba7e994
      Linus Torvalds authored
      Pull ARM SoC fixes from Olof Johansson:
       "One more week's worth of fixes.  Worth pointing out here are:
      
         - A patch fixing detaching of iommu registrations when a device is
           removed -- earlier the ops pointer wasn't managed properly
         - Another set of Renesas boards get the same GIC setup fixup as
           others have in previous -rcs
         - Serial port aliases fixups for sunxi.  We did the same to tegra but
           we caught that in time before the merge window due to more machines
           being affected.  Here it took longer for anyone to notice.
         - A couple more DT tweaks on sunxi
         - A follow-up patch for the mvebu coherency disabling in last -rc
           batch"
      
      * tag 'armsoc-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
        arm: dma-mapping: Set DMA IOMMU ops in arm_iommu_attach_device()
        ARM: shmobile: r8a7790: Instantiate GIC from C board code in legacy builds
        ARM: shmobile: r8a73a4: Instantiate GIC from C board code in legacy builds
        ARM: mvebu: don't set the PL310 in I/O coherency mode when I/O coherency is disabled
        ARM: sunxi: dt: Fix aliases
        ARM: dts: sun4i: Add simplefb node with de_fe0-de_be0-lcd0-hdmi pipeline
        ARM: dts: sun6i: ippo-q8h-v5: Fix serial0 alias
        ARM: dts: sunxi: Fix usb-phy support for sun4i/sun5i
      fba7e994
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input · 3441456b
      Linus Torvalds authored
      Pull input layer updates from Dmitry Torokhov:
       "Just a few quirks for PS/2 this time"
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input:
        Input: elantech - add more Fujtisu notebooks to force crc_enabled
        Input: i8042 - add noloop quirk for Medion Akoya E7225 (MD98857)
        Input: synaptics - adjust min/max for Lenovo ThinkPad X1 Carbon 2nd
      3441456b
    • Linus Torvalds's avatar
      sched: don't cause task state changes in nested sleep debugging · 00845eb9
      Linus Torvalds authored
      Commit 8eb23b9f
      
       ("sched: Debug nested sleeps") added code to report
      on nested sleep conditions, which we generally want to avoid because the
      inner sleeping operation can re-set the thread state to TASK_RUNNING,
      but that will then cause the outer sleep loop not actually sleep when it
      calls schedule.
      
      However, that's actually valid traditional behavior, with the inner
      sleep being some fairly rare case (like taking a sleeping lock that
      normally doesn't actually need to sleep).
      
      And the debug code would actually change the state of the task to
      TASK_RUNNING internally, which makes that kind of traditional and
      working code not work at all, because now the nested sleep doesn't just
      sometimes cause the outer one to not block, but will cause it to happen
      every time.
      
      In particular, it will cause the cardbus kernel daemon (pccardd) to
      basically busy-loop doing scheduling, converting a laptop into a heater,
      as reported by Bruno Prémont.  But there may be other legacy uses of
      that nested sleep model in other drivers that are also likely to never
      get converted to the new model.
      
      This fixes both cases:
      
       - don't set TASK_RUNNING when the nested condition happens (note: even
         if WARN_ONCE() only _warns_ once, the return value isn't whether the
         warning happened, but whether the condition for the warning was true.
         So despite the warning only happening once, the "if (WARN_ON(..))"
         would trigger for every nested sleep.
      
       - in the cases where we knowingly disable the warning by using
         "sched_annotate_sleep()", don't change the task state (that is used
         for all core scheduling decisions), instead use '->task_state_change'
         that is used for the debugging decision itself.
      
      (Credit for the second part of the fix goes to Oleg Nesterov: "Can't we
      avoid this subtle change in behaviour DEBUG_ATOMIC_SLEEP adds?" with the
      suggested change to use 'task_state_change' as part of the test)
      
      Reported-and-bisected-by: default avatarBruno Prémont <bonbons@linux-vserver.org>
      Tested-by: default avatarRafael J Wysocki <rjw@rjwysocki.net>
      Acked-by: default avatarOleg Nesterov <oleg@redhat.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>,
      Cc: Ilya Dryomov <ilya.dryomov@inktank.com>,
      Cc: Mike Galbraith <umgwanakikbuti@gmail.com>
      Cc: Ingo Molnar <mingo@kernel.org>
      Cc: Peter Hurley <peter@hurleysoftware.com>,
      Cc: Davidlohr Bueso <dave@stgolabs.net>,
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      00845eb9
    • Rainer Koenig's avatar
      Input: elantech - add more Fujtisu notebooks to force crc_enabled · 47c1ffb2
      Rainer Koenig authored
      
      
      Add two more Fujitsu LIFEBOOK models that also ship with the Elantech
      touchpad and don't work with crc_disabled to the quirk list.
      
      Signed-off-by: default avatarRainer Koenig <Rainer.Koenig@ts.fujitsu.com>
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarDmitry Torokhov <dmitry.torokhov@gmail.com>
      47c1ffb2
    • Olof Johansson's avatar
      Merge tag 'renesas-soc-fixes3-for-v3.19' of... · 28111dda
      Olof Johansson authored
      Merge tag 'renesas-soc-fixes3-for-v3.19' of git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas into fixes
      
      Merge "Third Round of Renesas ARM Based SoC Fixes for v3.19" from Simon Horman:
      
      * Instantiate GIC from C board code in legacy builds on r8a7790 and r8a73a4
      
      * tag 'renesas-soc-fixes3-for-v3.19' of git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas
      
      :
        ARM: shmobile: r8a7790: Instantiate GIC from C board code in legacy builds
        ARM: shmobile: r8a73a4: Instantiate GIC from C board code in legacy builds
      
      Signed-off-by: default avatarOlof Johansson <olof@lixom.net>
      28111dda
  2. Feb 01, 2015
  3. Jan 31, 2015
  4. Jan 30, 2015
    • Radim Krčmář's avatar
      KVM: x86: check LAPIC presence when building apic_map · df04d1d1
      Radim Krčmář authored
      We forgot to re-check LAPIC after splitting the loop in commit
      173beedc
      
       (KVM: x86: Software disabled APIC should still deliver
      NMIs, 2014-11-02).
      
      Signed-off-by: default avatarRadim Krčmář <rkrcmar@redhat.com>
      Fixes: 173beedc
      
      
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      df04d1d1
    • Paolo Bonzini's avatar
      Merge tag 'kvm-arm-fixes-3.19-2' of... · 02512b2b
      Paolo Bonzini authored
      Merge tag 'kvm-arm-fixes-3.19-2' of git://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm into kvm-master
      
      Second round of fixes for KVM/ARM for 3.19.
      
      Fixes memory corruption issues on APM platforms and swapping issues on
      DMA-coherent systems.
      02512b2b
    • Dave Airlie's avatar
      Merge tag 'drm-intel-fixes-2015-01-29' of git://anongit.freedesktop.org/drm-intel into drm-fixes · a78b80f5
      Dave Airlie authored
      misc i915 fixes, mostly all stable material as well.
      
      * tag 'drm-intel-fixes-2015-01-29' of git://anongit.freedesktop.org/drm-intel:
        drm/i915: BDW Fix Halo PCI IDs marked as ULT.
        drm/i915: Fix and clean BDW PCH identification
        drm/i915: Only fence tiled region of object.
        drm/i915: fix inconsistent brightness after resume
        drm/i915: Init PPGTT before context enable
      a78b80f5
    • Rob Clark's avatar
      drm: fix fb-helper vs MST dangling connector ptrs (v2) · 2148f18f
      Rob Clark authored
      VT switch back/forth from console to xserver (for example) has potential
      to go horribly wrong if a dynamic DP MST connector ends up in the saved
      modeset that is restored when switching back to fbcon.
      
      When removing a dynamic connector, don't forget to clean up the saved
      state.
      
      v1: original
      v2: null out set->fb if no more connectors to avoid making i915 cranky
      
      Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1184968
      
      
      Cc: stable@vger.kernel.org #v3.17+
      Signed-off-by: default avatarRob Clark <robdclark@gmail.com>
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      2148f18f
    • Linus Torvalds's avatar
      Merge tag 'dm-3.19-fixes-3' of git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm · 1c999c47
      Linus Torvalds authored
      Pull device mapper fixes from Mike Snitzer:
       "One stable fix for a dm-cache 3.19-rc6 regression and one stable fix
        for dm-thin:
      
         - fix DM cache metadata open/lookup error paths to properly use
           ERR_PTR and IS_ERR (fixes: 3.19-rc6 "stable" commit 9b1cc9f2)
      
         - fix DM thin-provisioning to disallow userspace from sending
           messages to the thin-pool if the pool is in READ_ONLY or FAIL mode
           since no metadata changes are allowed in these modes"
      
      * tag 'dm-3.19-fixes-3' of git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm:
        dm thin: don't allow messages to be sent to a pool target in READ_ONLY or FAIL mode
        dm cache: fix missing ERR_PTR returns and handling
      1c999c47
    • Linus Torvalds's avatar
      Merge tag 'nfs-for-3.19-3' of git://git.linux-nfs.org/projects/trondmy/linux-nfs · 353a0c6f
      Linus Torvalds authored
      Pull NFS client bugfixes from Trond Myklebust:
       "Highlights include:
      
         - Stable fix for a NFSv4.1 Oops on mount
         - Stable fix for an O_DIRECT deadlock condition
         - Fix an issue with submounted volumes and fake duplicate inode
           numbers"
      
      * tag 'nfs-for-3.19-3' of git://git.linux-nfs.org/projects/trondmy/linux-nfs:
        NFS: Fix use of nfs_attr_use_mounted_on_fileid()
        NFSv4.1: Fix an Oops in nfs41_walk_client_list
        nfs: fix dio deadlock when O_DIRECT flag is flipped
      353a0c6f
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client · 884e00f3
      Linus Torvalds authored
      Pull Ceph fixes from Sage Weil:
       "These paches from Ilya finally squash a race condition with layered
        images that he's been chasing for a while"
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client:
        rbd: drop parent_ref in rbd_dev_unprobe() unconditionally
        rbd: fix rbd_dev_parent_get() when parent_overlap == 0
      884e00f3
    • Marc Zyngier's avatar
      arm/arm64: KVM: Use kernel mapping to perform invalidation on page fault · 0d3e4d4f
      Marc Zyngier authored
      
      
      When handling a fault in stage-2, we need to resync I$ and D$, just
      to be sure we don't leave any old cache line behind.
      
      That's very good, except that we do so using the *user* address.
      Under heavy load (swapping like crazy), we may end up in a situation
      where the page gets mapped in stage-2 while being unmapped from
      userspace by another CPU.
      
      At that point, the DC/IC instructions can generate a fault, which
      we handle with kvm->mmu_lock held. The box quickly deadlocks, user
      is unhappy.
      
      Instead, perform this invalidation through the kernel mapping,
      which is guaranteed to be present. The box is much happier, and so
      am I.
      
      Signed-off-by: default avatarMarc Zyngier <marc.zyngier@arm.com>
      Signed-off-by: default avatarChristoffer Dall <christoffer.dall@linaro.org>
      0d3e4d4f
    • Marc Zyngier's avatar
      arm/arm64: KVM: Invalidate data cache on unmap · 363ef89f
      Marc Zyngier authored
      
      
      Let's assume a guest has created an uncached mapping, and written
      to that page. Let's also assume that the host uses a cache-coherent
      IO subsystem. Let's finally assume that the host is under memory
      pressure and starts to swap things out.
      
      Before this "uncached" page is evicted, we need to make sure
      we invalidate potential speculated, clean cache lines that are
      sitting there, or the IO subsystem is going to swap out the
      cached view, loosing the data that has been written directly
      into memory.
      
      Signed-off-by: default avatarMarc Zyngier <marc.zyngier@arm.com>
      Signed-off-by: default avatarChristoffer Dall <christoffer.dall@linaro.org>
      363ef89f
    • Marc Zyngier's avatar
      arm/arm64: KVM: Use set/way op trapping to track the state of the caches · 3c1e7165
      Marc Zyngier authored
      
      
      Trying to emulate the behaviour of set/way cache ops is fairly
      pointless, as there are too many ways we can end-up missing stuff.
      Also, there is some system caches out there that simply ignore
      set/way operations.
      
      So instead of trying to implement them, let's convert it to VA ops,
      and use them as a way to re-enable the trapping of VM ops. That way,
      we can detect the point when the MMU/caches are turned off, and do
      a full VM flush (which is what the guest was trying to do anyway).
      
      This allows a 32bit zImage to boot on the APM thingy, and will
      probably help bootloaders in general.
      
      Signed-off-by: default avatarMarc Zyngier <marc.zyngier@arm.com>
      Signed-off-by: default avatarChristoffer Dall <christoffer.dall@linaro.org>
      3c1e7165
    • Linus Torvalds's avatar
      Merge tag 'sound-3.19-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound · a2ae004a
      Linus Torvalds authored
      Pull sound fixes from Takashi Iwai:
       "This batch ended up being larger than wished, but there is nothing to
        worry too much there.
      
        Most of commits are for ASoC, a compress NULL dereference fix, a fix
        for probe error handling, and the rest are device-specific fixes.  In
        addition, we have a fix for a long-standing but of seq-dummy driver,
        which just cuts off the buggy part in the end"
      
      * tag 'sound-3.19-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
        ALSA: seq-dummy: remove deadlock-causing events on close
        ASoC: omap-mcbsp: Correct CBM_CFS dai format configuration
        ASoC: soc-compress.c: fix NULL dereference
        ASoC: rt286: set the same format for dac and adc
        ASoC: wm8904: fix runtime warning
        ASoC: simple-card: Fix crash in asoc_simple_card_unref()
        ASoC: fsl: imx-wm8962: Set the card owner field
        ASoC: pcm512x: Fix DSP program selection
        ASoC: rt5677: Modify the behavior that updates the PLL parameter.
        ASoC: fsl_ssi: Fix irq error check
        ASoC: rockchip: i2s: applys rate symmetry for CPU DAI
        ASoC: Intel: Add NULL checks for the stream pointer
        ASoC: wm8960: Fix capture sample rate from 11250 to 11025
        ASoC: adi: Add missing return statement.
        ASoC: Intel: Don't change offset of block allocator during fixed allocate
        ASoC: ts3a227e: Check and report jack status at probe
        ASoC: fsl_esai: Fix incorrect xDC field width of xCCR registers
      a2ae004a
    • Linus Torvalds's avatar
      Merge tag 'pinctrl-v3.19-4' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl · 297614f3
      Linus Torvalds authored
      Pull final pin control fix from Linus Walleij:
       "A late pin control fix for the v3.19 series: The AT91 gpio controller
        would miss wakeup events, this single fix make it work properly"
      
      [ "Final"? Yeah, I'll believe that once I've actually released 3.19 ;)   - Linus ]
      
      * tag 'pinctrl-v3.19-4' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl:
        pinctrl: at91: allow to have disabled gpio bank
      297614f3
    • Linus Torvalds's avatar
      vm: make stack guard page errors return VM_FAULT_SIGSEGV rather than SIGBUS · 9c145c56
      Linus Torvalds authored
      The stack guard page error case has long incorrectly caused a SIGBUS
      rather than a SIGSEGV, but nobody actually noticed until commit
      fee7e49d
      
       ("mm: propagate error from stack expansion even for guard
      page") because that error case was never actually triggered in any
      normal situations.
      
      Now that we actually report the error, people noticed the wrong signal
      that resulted.  So far, only the test suite of libsigsegv seems to have
      actually cared, but there are real applications that use libsigsegv, so
      let's not wait for any of those to break.
      
      Reported-and-tested-by: default avatarTakashi Iwai <tiwai@suse.de>
      Tested-by: default avatarJan Engelhardt <jengelh@inai.de>
      Acked-by: Heiko Carstens <heiko.carstens@de.ibm.com> # "s390 still compiles and boots"
      Cc: linux-arch@vger.kernel.org
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      9c145c56
    • Laurent Pinchart's avatar
      arm: dma-mapping: Set DMA IOMMU ops in arm_iommu_attach_device() · eab8d653
      Laurent Pinchart authored
      Commit 4bb25789
      
       ("arm: dma-mapping: plumb our iommu mapping ops
      into arch_setup_dma_ops") moved the setting of the DMA operations from
      arm_iommu_attach_device() to arch_setup_dma_ops() where the DMA
      operations to be used are selected based on whether the device is
      connected to an IOMMU. However, the IOMMU detection scheme requires the
      IOMMU driver to be ported to the new IOMMU of_xlate API. As no driver
      has been ported yet, this effectively breaks all IOMMU ARM users that
      depend on the IOMMU being handled transparently by the DMA mapping API.
      
      Fix this by restoring the setting of DMA IOMMU ops in
      arm_iommu_attach_device() and splitting the rest of the function into a
      new internal __arm_iommu_attach_device() function, called by
      arch_setup_dma_ops().
      
      Signed-off-by: default avatarLaurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
      Acked-by: default avatarWill Deacon <will.deacon@arm.com>
      Tested-by: default avatarHeiko Stuebner <heiko@sntech.de>
      Signed-off-by: default avatarOlof Johansson <olof@lixom.net>
      eab8d653
    • Linus Torvalds's avatar
      vm: add VM_FAULT_SIGSEGV handling support · 33692f27
      Linus Torvalds authored
      The core VM already knows about VM_FAULT_SIGBUS, but cannot return a
      "you should SIGSEGV" error, because the SIGSEGV case was generally
      handled by the caller - usually the architecture fault handler.
      
      That results in lots of duplication - all the architecture fault
      handlers end up doing very similar "look up vma, check permissions, do
      retries etc" - but it generally works.  However, there are cases where
      the VM actually wants to SIGSEGV, and applications _expect_ SIGSEGV.
      
      In particular, when accessing the stack guard page, libsigsegv expects a
      SIGSEGV.  And it usually got one, because the stack growth is handled by
      that duplicated architecture fault handler.
      
      However, when the generic VM layer started propagating the error return
      from the stack expansion in commit fee7e49d
      
       ("mm: propagate error
      from stack expansion even for guard page"), that now exposed the
      existing VM_FAULT_SIGBUS result to user space.  And user space really
      expected SIGSEGV, not SIGBUS.
      
      To fix that case, we need to add a VM_FAULT_SIGSEGV, and teach all those
      duplicate architecture fault handlers about it.  They all already have
      the code to handle SIGSEGV, so it's about just tying that new return
      value to the existing code, but it's all a bit annoying.
      
      This is the mindless minimal patch to do this.  A more extensive patch
      would be to try to gather up the mostly shared fault handling logic into
      one generic helper routine, and long-term we really should do that
      cleanup.
      
      Just from this patch, you can generally see that most architectures just
      copied (directly or indirectly) the old x86 way of doing things, but in
      the meantime that original x86 model has been improved to hold the VM
      semaphore for shorter times etc and to handle VM_FAULT_RETRY and other
      "newer" things, so it would be a good idea to bring all those
      improvements to the generic case and teach other architectures about
      them too.
      
      Reported-and-tested-by: default avatarTakashi Iwai <tiwai@suse.de>
      Tested-by: default avatarJan Engelhardt <jengelh@inai.de>
      Acked-by: Heiko Carstens <heiko.carstens@de.ibm.com> # "s390 still compiles and boots"
      Cc: linux-arch@vger.kernel.org
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      33692f27