1. 28 Jun, 2012 2 commits
  2. 25 Jun, 2012 1 commit
    • Marek Szyprowski's avatar
      ARM: dma-mapping: fix buffer chunk allocation order · 593f4735
      Marek Szyprowski authored
      IOMMU-aware dma_alloc_attrs() implementation allocates buffers in
      power-of-two chunks to improve performance and take advantage of large
      page mappings provided by some IOMMU hardware. However current code, due
      to a subtle bug, allocated those chunks in the smallest-to-largest
      order, what completely killed all the advantages of using larger than
      page chunks. If a 4KiB chunk has been mapped as a first chunk, the
      consecutive chunks are not aligned correctly to the power-of-two which
      match their size and IOMMU drivers were not able to use internal
      mappings of size other than the 4KiB (largest common denominator of
      alignment and chunk size).
      
      This patch fixes this issue by changing to the correct largest-to-smallest
      chunk size allocation sequence.
      Signed-off-by: default avatarMarek Szyprowski <m.szyprowski@samsung.com>
      593f4735
  3. 24 Jun, 2012 2 commits
  4. 23 Jun, 2012 3 commits
  5. 21 Jun, 2012 6 commits
    • Ricardo Neri's avatar
      ARM: OMAP4: hwmod data: Force HDMI in no-idle while enabled · dc57aef5
      Ricardo Neri authored
      As per the OMAP4 documentation, audio over HDMI must be transmitted in
      no-idle mode. This patch adds the HWMOD_SWSUP_SIDLE so that omap_hwmod uses
      no-idle/force-idle settings instead of smart-idle mode.
      
      This is required as the DSS interface clock is used as functional clock
      for the HDMI wrapper audio FIFO. If no-idle mode is not used, audio could
      be choppy, have bad quality or not be audible at all.
      Signed-off-by: default avatarRicardo Neri <ricardo.neri@ti.com>
      [b-cousson@ti.com: Update the subject and align the .flags
      location with the script template]
      Signed-off-by: default avatarBenoit Cousson <b-cousson@ti.com>
      Signed-off-by: default avatarPaul Walmsley <paul@pwsan.com>
      dc57aef5
    • Paul Walmsley's avatar
      ARM: OMAP2+: mux: fix sparse warning · 65e25976
      Paul Walmsley authored
      Commit bbd707ac ("ARM: omap2: use
      machine specific hook for late init") resulted in the addition of this
      sparse warning:
      
      arch/arm/mach-omap2/mux.c:791:12: warning: symbol 'omap_mux_late_init' was not declared. Should it be static?
      
      Fix by including the header file containing the prototype.
      Signed-off-by: default avatarPaul Walmsley <paul@pwsan.com>
      Cc: Shawn Guo <shawn.guo@linaro.org>
      Cc: Tony Lindgren <tony@atomide.com>
      65e25976
    • Paul Walmsley's avatar
      ARM: OMAP2+: CM: increase the module disable timeout · b8f15b7e
      Paul Walmsley authored
      Increase the timeout for disabling an IP block to five milliseconds.
      This is to handle the usb_host_fs idle latency, which takes almost
      four milliseconds after a host controller reset.
      
      This is the second of two patches needed to resolve the following
      boot warning:
      
      omap_hwmod: usb_host_fs: _wait_target_disable failed
      
      Thanks to Sergei Shtylyov <sshtylyov@mvista.com> for finding
      an unrelated hunk in a previous version of this patch.
      Signed-off-by: default avatarPaul Walmsley <paul@pwsan.com>
      Cc: Sergei Shtylyov <sshtylyov@mvista.com>
      Cc: Tero Kristo <t-kristo@ti.com>
      b8f15b7e
    • Paul Walmsley's avatar
      ARM: OMAP4: clock data: add clockdomains for clocks used as main clocks · 9a47d32d
      Paul Walmsley authored
      Until the OMAP4 code is converted to disable the use of the clock
      framework-based clockdomain enable/disable sequence, any clock used as
      a hwmod main_clk must have a clockdomain associated with it.  This
      patch populates some clock structure clockdomain names to resolve the
      following warnings during kernel init:
      
      omap_hwmod: dpll_mpu_m2_ck: missing clockdomain for dpll_mpu_m2_ck.
      omap_hwmod: trace_clk_div_ck: missing clockdomain for trace_clk_div_ck.
      omap_hwmod: l3_div_ck: missing clockdomain for l3_div_ck.
      omap_hwmod: ddrphy_ck: missing clockdomain for ddrphy_ck.
      Signed-off-by: default avatarPaul Walmsley <paul@pwsan.com>
      Cc: Rajendra Nayak <rnayak@ti.com>
      Cc: Benoît Cousson <b-cousson@ti.com>
      9a47d32d
    • Paul Walmsley's avatar
      ARM: OMAP4: hwmod data: fix 32k sync timer idle modes · 252a4c54
      Paul Walmsley authored
      The 32k sync timer IP block target idle modes in the hwmod data are
      incorrect.  The IP block does not support any smart-idle modes.
      Update the data to reflect the correct modes.
      
      This problem was initially identified and a diff fragment posted to
      the lists by Benoît Cousson <b-cousson@ti.com>.  A patch description
      bug in the first version was also identified by Benoît.
      Signed-off-by: default avatarPaul Walmsley <paul@pwsan.com>
      Cc: Benoît Cousson <b-cousson@ti.com>
      Cc: Tero Kristo <t-kristo@ti.com>
      252a4c54
    • Djamil Elaidi's avatar
      ARM: OMAP4+: hwmod: fix issue causing IPs not going back to Smart-Standby · 561038f0
      Djamil Elaidi authored
      If an IP is configured in Smart-Standby-Wakeup, when disabling wakeup feature the
      IP will not go back to Smart-Standby, but will remain in Smart-Standby-Wakeup.
      Signed-off-by: default avatarDjamil Elaidi <d-elaidi@ti.com>
      Signed-off-by: default avatarPaul Walmsley <paul@pwsan.com>
      561038f0
  6. 20 Jun, 2012 11 commits
    • Viresh Kumar's avatar
      Viresh has moved · 10d8935f
      Viresh Kumar authored
      viresh.kumar@st.com email-id doesn't exist anymore as I have left the
      company.  Replace ST's id with viresh.linux@gmail.com.
      
      It also updates .mailmap file to fix address for 'git shortlog'
      Signed-off-by: default avatarViresh Kumar <viresh.linux@gmail.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      10d8935f
    • Geert Uytterhoeven's avatar
      h8300: use the declarations provided by <asm/sections.h> · 436814e6
      Geert Uytterhoeven authored
      Cleanups:
        - Include <asm/sections.h>,
        - Remove the (different) extern declarations,
        - Remove the no longer needed address-of ('&') operators,
        - Remove the superfluous casts, use proper printk formatting instead.
      Signed-off-by: default avatarGeert Uytterhoeven <geert@linux-m68k.org>
      Cc: Yoshinori Sato <ysato@users.sourceforge.jp>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      436814e6
    • Geert Uytterhoeven's avatar
      h8300: fix use of extinct _sbss and _ebss · ffb20313
      Geert Uytterhoeven authored
      Nowadays it should use __bss_start and __bss_stop
      Signed-off-by: default avatarGeert Uytterhoeven <geert@linux-m68k.org>
      Cc: Yoshinori Sato <ysato@users.sourceforge.jp>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      ffb20313
    • Geert Uytterhoeven's avatar
      xtensa: use the declarations provided by <asm/sections.h> · f022d0fa
      Geert Uytterhoeven authored
      Cleanups:
        - Include <asm/sections.h>,
        - Remove the (different) extern declarations,
        - Remove the no longer needed address-of ('&') operators,
        - Use %p to format pointer differences.
      Signed-off-by: default avatarGeert Uytterhoeven <geert@linux-m68k.org>
      Cc: Chris Zankel <chris@zankel.net>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      f022d0fa
    • Geert Uytterhoeven's avatar
      xtensa: use "test -e" instead of bashism "test -a" · 0eff08b5
      Geert Uytterhoeven authored
      On Ubuntu, /bin/sh is a symlink to dash, which does not support "test -a".
      This causes messages like
      
          test: 1: -a: unexpected operator
          test: 1: -a: unexpected operator
      
      and link failures like
      
          (.init.text+0x132): undefined reference to `platform_init'
      
      due to the appropriate platform code not being compiled.
      Signed-off-by: default avatarGeert Uytterhoeven <geert@linux-m68k.org>
      Cc: Chris Zankel <chris@zankel.net>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      0eff08b5
    • Geert Uytterhoeven's avatar
      xtensa: replace xtensa-specific _f{data,text} by _s{data,text} · 5e7b6ed8
      Geert Uytterhoeven authored
      commit a2d063ac ("extable, core_kernel_data(): Make sure all archs
      define _sdata") missed xtensa.  Xtensa does have a start of data marker,
      but calls it _fdata, causing
      
          kernel/built-in.o:(.text+0x964): undefined reference to `_sdata'
      
      _stext was already defined, but it was duplicated by _fdata.
      Signed-off-by: default avatarGeert Uytterhoeven <geert@linux-m68k.org>
      Cc: Steven Rostedt <rostedt@goodmis.org>
      Cc: Chris Zankel <chris@zankel.net>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      5e7b6ed8
    • Andrea Arcangeli's avatar
      thp: avoid atomic64_read in pmd_read_atomic for 32bit PAE · e4eed03f
      Andrea Arcangeli authored
      In the x86 32bit PAE CONFIG_TRANSPARENT_HUGEPAGE=y case while holding the
      mmap_sem for reading, cmpxchg8b cannot be used to read pmd contents under
      Xen.
      
      So instead of dealing only with "consistent" pmdvals in
      pmd_none_or_trans_huge_or_clear_bad() (which would be conceptually
      simpler) we let pmd_none_or_trans_huge_or_clear_bad() deal with pmdvals
      where the low 32bit and high 32bit could be inconsistent (to avoid having
      to use cmpxchg8b).
      
      The only guarantee we get from pmd_read_atomic is that if the low part of
      the pmd was found null, the high part will be null too (so the pmd will be
      considered unstable).  And if the low part of the pmd is found "stable"
      later, then it means the whole pmd was read atomically (because after a
      pmd is stable, neither MADV_DONTNEED nor page faults can alter it anymore,
      and we read the high part after the low part).
      
      In the 32bit PAE x86 case, it is enough to read the low part of the pmdval
      atomically to declare the pmd as "stable" and that's true for THP and no
      THP, furthermore in the THP case we also have a barrier() that will
      prevent any inconsistent pmdvals to be cached by a later re-read of the
      *pmd.
      Signed-off-by: default avatarAndrea Arcangeli <aarcange@redhat.com>
      Cc: Jonathan Nieder <jrnieder@gmail.com>
      Cc: Ulrich Obergfell <uobergfe@redhat.com>
      Cc: Mel Gorman <mgorman@suse.de>
      Cc: Hugh Dickins <hughd@google.com>
      Cc: Larry Woodman <lwoodman@redhat.com>
      Cc: Petr Matousek <pmatouse@redhat.com>
      Cc: Rik van Riel <riel@redhat.com>
      Cc: Jan Beulich <jbeulich@suse.com>
      Cc: KOSAKI Motohiro <kosaki.motohiro@gmail.com>
      Tested-by: default avatarAndrew Jones <drjones@redhat.com>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      e4eed03f
    • Russ Dill's avatar
      ARM: OMAP: Fix Beagleboard DVI reset gpio · aef2b896
      Russ Dill authored
      Commit e813a55e ("OMAP: board-files:
      remove custom PD GPIO handling for DVI output") moved TFP410 chip's
      powerdown-gpio handling from the board files to the tfp410 driver. One
      gpio_request_one(powerdown-gpio, ...) was mistakenly left unremoved in
      the Beagle board file. This causes the tfp410 driver to fail to request
      the gpio on Beagle, causing the driver to fail and thus the DVI output
      doesn't work.
      
      This patch removes several boot errors from board-omap3beagle.c:
      
       - gpio_request: gpio--22 (DVI reset) status -22
       - Unable to get DVI reset GPIO
      
      There is a combination of leftover code and revision confusion.
      Additionally, xM support is currently a hack.
      
      For original Beagleboard this removes the double initialization of GPIO
      170, properly configures it as an output, and wraps the initialization
      in an if block so that xM does not attempt to request it.
      
      For Beagleboard xM it removes reference to GPIO 129 which was part
      of rev A1 and A2 designs, but never functioned. It then properly assigns
      beagle_dvi_device.reset_gpio in beagle_twl_gpio_setup and removes the
      hack of initializing it high. Additionally, it uses
      gpio_set_value_cansleep since this GPIO is connected through i2c.
      
      Unfortunately, there is no way to tell the difference between xM A2 and
      A3. However, GPIO 129 does not function on rev A1 and A2, and the TWL
      GPIO used on A3 and beyond is not used on rev A1 and A2, there are no
      problems created by this fix.
      
      Tested on Beagleboard-xM Rev C1 and Beagleboard Rev B4.
      Signed-off-by: default avatarRuss Dill <Russ.Dill@ti.com>
      Acked-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
      Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
      aef2b896
    • Jon Hunter's avatar
      arm/dts: OMAP2: Fix interrupt controller binding · 95dca12d
      Jon Hunter authored
      When booting with device-tree on an OMAP2420H4, the kernel is hanging when
      initialising the interrupts and following kernel dumps is seen ...
      
      [    0.000000] ------------[ cut here ]------------
      [    0.000000] WARNING: at arch/arm/mach-omap2/irq.c:271 omap_intc_of_init+0x50/0xb4()
      [    0.000000] unable to get intc registers
      [    0.000000] Modules linked in:
      [    0.000000] [<c001befc>] (unwind_backtrace+0x0/0xf4) from [<c0040c34>] (warn_slowpath_common+0x4c/0x64)
      [    0.000000] [<c0040c34>] (warn_slowpath_common+0x4c/0x64) from [<c0040ce0>] (warn_slowpath_fmt+0x30/0x40)
      [    0.000000] [<c0040ce0>] (warn_slowpath_fmt+0x30/0x40) from [<c066b8a4>] (omap_intc_of_init+0x50/0xb4)
      [    0.000000] [<c066b8a4>] (omap_intc_of_init+0x50/0xb4) from [<c0688b70>] (of_irq_init+0x144/0x288)
      [    0.000000] [<c0688b70>] (of_irq_init+0x144/0x288) from [<c0663294>] (init_IRQ+0x14/0x1c)
      [    0.000000] [<c0663294>] (init_IRQ+0x14/0x1c) from [<c06607fc>] (start_kernel+0x198/0x304)
      [    0.000000] [<c06607fc>] (start_kernel+0x198/0x304) from [<80008044>] (0x80008044)
      [    0.000000] ---[ end trace 1b75b31a2719ed1c ]---
      [    0.000000] of_irq_init: children remain, but no parents
      
      The OMAP2 interrupt controller binding is missing the number of interrupts and
      interrupt controller register address. Adding these fixes the problem.
      Signed-off-by: default avatarJon Hunter <jon-hunter@ti.com>
      Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
      95dca12d
    • Tony Lindgren's avatar
      ARM: OMAP2: Fix tusb6010 GPIO interrupt for n8x0 · 3d09b33f
      Tony Lindgren authored
      Here's one more gpio_to_irq conversion that we missed
      earlier. Tested with n800 in gadget mode using USB_ETH.
      
      Cc: Felipe Balbi <balbi@ti.com>
      Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
      3d09b33f
    • Tony Lindgren's avatar
      ARM: OMAP2+: Fix MUSB ifdefs for platform init code · 310018d5
      Tony Lindgren authored
      Commit 62285963 (usb: musb: drop a gigantic amount of ifdeferry)
      got rid of a bunch of ifdefs in the MUSB code. Looks like the
      platform init code is still using these dropped defines though,
      which in many cases results the board defaulting always to host
      mode.
      
      Currently the situation is that USB_MUSB_HDRC is the main
      Kconfig option with additional USB_GADGET_MUSB_HDRC so only
      these two should be used to select between host and OTG mode.
      
      Fix the situation for omaps. The following users should fix the
      platform init code in a similar way:
      
      Dropped Kconfig option          Current users
      
      USB_MUSB_OTG                    blackfin, davinci, not in Kconfigs
      USB_MUSB_PERIPHERAL             davinci, not in Kconfigs
      USB_MUSB_HOST                   davinci, not in Kconfigs
      USB_MUSB_HDRC_HCD               blackfin, not in Kconfigs
      USB_MUSB_OTG                    blackfin, not in Kconfigs
      
      Cc: Mike Frysinger <vapier@gentoo.org>
      Cc: Sekhar Nori <nsekhar@ti.com>
      Cc: linux-usb@vger.kernel.org
      Cc: Felipe Balbi <balbi@ti.com>
      Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
      310018d5
  7. 19 Jun, 2012 1 commit
    • Paul Mackerras's avatar
      KVM: PPC: Book3S HV: Drop locks around call to kvmppc_pin_guest_page · 081f323b
      Paul Mackerras authored
      At the moment we call kvmppc_pin_guest_page() in kvmppc_update_vpa()
      with two spinlocks held: the vcore lock and the vcpu->vpa_update_lock.
      This is not good, since kvmppc_pin_guest_page() calls down_read() and
      get_user_pages_fast(), both of which can sleep.  This bug was introduced
      in 2e25aa5f ("KVM: PPC: Book3S HV: Make virtual processor area
      registration more robust").
      
      This arranges to drop those spinlocks before calling
      kvmppc_pin_guest_page() and re-take them afterwards.  Dropping the
      vcore lock in kvmppc_run_core() means we have to set the vcore_state
      field to VCORE_RUNNING before we drop the lock, so that other vcpus
      won't try to run this vcore.
      Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
      Acked-by: default avatarAlexander Graf <agraf@suse.de>
      Signed-off-by: default avatarAvi Kivity <avi@redhat.com>
      081f323b
  8. 18 Jun, 2012 2 commits
  9. 17 Jun, 2012 2 commits
  10. 16 Jun, 2012 4 commits
    • Andrew Lunn's avatar
      ARM: Kirkwood: Fix clk problems modular ethernet driver · 128789a8
      Andrew Lunn authored
      When the ethernet driver was built as a module, it would lock the
      machine when loaded. At boot the ethernet clks are unused, so get
      turned off.  Later, when the module is loaded, the probe function
      would access the hardware before the clock was restarted, and the
      machine would lock. It has also been determined that when the clk is
      turned off, the interface forgets its MAC address, which for most
      systems, is set by the boot loader.
      
      When the machine setup file creates a platform device for the
      interface, prepare and enable the clock for the interface. This will
      ensure it is not turned off. However, if the setup file only
      instantiates one platform device, the other will have its clk
      disabled, thus maybe saving a little power.
      Report-by: default avatarSimon Baatz <gmbnomis@gmail.com>
      Signed-off-by: default avatarAndrew Lunn <andrew@lunn.ch>
      Tested-by: default avatarSimon Baatz <gmbnomis@gmail.com>
      Signed-off-by: default avatarOlof Johansson <olof@lixom.net>
      128789a8
    • Arnd Bergmann's avatar
      arm: versatile: fix and enable PCI I/O space · 9b0f7e39
      Arnd Bergmann authored
      With commit 4d5fc58d (ARM: remove bunch of now unused
      mach/io.h files), the I/O space setup was completely broken on
      versatile. This patch fixes that and prepares for further
      I/O space clean-up.
      
      I/O space handling on the versatile platform is currently
      broken in multiple ways. Most importantly, the ports do
      not get mapped into the virtual address space at all.
      
      Also, there is some amount of confusion between PCI I/O
      space and other statically mapped MMIO registers in the
      platform code:
      
      * The __io_address() macro that is used to access the
        platform register maps to the same __io macro that gets
        used for I/O space.
      
      * The IO_SPACE_LIMIT is set to a value that is much larger
        than the total available space.
      
      * The I/O resource of the PCI bus is set to the physical
        address of the mapping, which is way outside of the
        actual I/O space limit as well as the address range that
        gets decoded by traditional PCI cards.
      
      * No attempt is made to stay outside of the ISA port range
        that some device drivers try access.
      
      * No resource gets requested as a child of ioport_resource,
        but an IORESOURCE_IO type mapping gets requested
        as a child of iomem_resource.
      
      This patch attempts to correct all of the above. This makes
      it possible to use virtio-pci based virtual devices as well
      as actual PCI cards including those with legacy ISA port
      ranges like VGA.
      
      Some of the issues seem to be duplicated on other platforms.
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      [rob: update to 3.5-rc2 and io.h cleanup related changes]
      Signed-off-by: default avatarRob Herring <rob.herring@calxeda.com>
      Tested-by: default avatarRobert Schwebel <r.schwebel@pengutronix.de>
      Signed-off-by: default avatarOlof Johansson <olof@lixom.net>
      9b0f7e39
    • Chris Metcalf's avatar
      tile: fix bug in get_user() for 4-byte values · 6699c8cd
      Chris Metcalf authored
      The definition of 32-bit values in the 64-bit tilegx architecture is that
      they should be sign-extended regardless of whether they are considered
      signed or unsigned by the compiler.  Accordingly, we need to use an
      "ld4s" rather than "ld4u" to load and sign-extend for get_user().
      
      This fixes glibc bug 14238 (see http://sourceware.org/bugzilla),
      introduced during the 3.5 merge window.
      Signed-off-by: default avatarChris Metcalf <cmetcalf@tilera.com>
      6699c8cd
    • Will Deacon's avatar
      ARM: 7425/1: extable: ensure fixup entries are 4-byte aligned · 667d1b48
      Will Deacon authored
      Fixup entries in the kernel exception tables should be 4-byte aligned
      since we return directly to them when handling a faulting instruction in
      the kernel.
      
      This patch adds the missing align directives to the fixup entries.
      Signed-off-by: default avatarWill Deacon <will.deacon@arm.com>
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      667d1b48
  11. 15 Jun, 2012 1 commit
  12. 14 Jun, 2012 5 commits
    • Paul Mackerras's avatar
      Make hard_irq_disable() actually hard-disable interrupts · f948501b
      Paul Mackerras authored
      At present, hard_irq_disable() does nothing on powerpc because of
      this code in include/linux/interrupt.h:
      
          #ifndef hard_irq_disable
          #define hard_irq_disable()      do { } while(0)
          #endif
      
      So we need to make our hard_irq_disable be a macro.  It was previously
      a macro until commit 7230c564 ("powerpc: Rework lazy-interrupt
      handling") changed it to a static inline function.
      
      Cc: stable@vger.kernel.org
      Acked-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
      Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
      --
       arch/powerpc/include/asm/hw_irq.h |    3 +++
       1 file changed, 3 insertions(+)
      f948501b
    • Stefano Stabellini's avatar
      xen: mark local pages as FOREIGN in the m2p_override · b9e0d95c
      Stefano Stabellini authored
      When the frontend and the backend reside on the same domain, even if we
      add pages to the m2p_override, these pages will never be returned by
      mfn_to_pfn because the check "get_phys_to_machine(pfn) != mfn" will
      always fail, so the pfn of the frontend will be returned instead
      (resulting in a deadlock because the frontend pages are already locked).
      
      INFO: task qemu-system-i38:1085 blocked for more than 120 seconds.
      "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
      qemu-system-i38 D ffff8800cfc137c0     0  1085      1 0x00000000
       ffff8800c47ed898 0000000000000282 ffff8800be4596b0 00000000000137c0
       ffff8800c47edfd8 ffff8800c47ec010 00000000000137c0 00000000000137c0
       ffff8800c47edfd8 00000000000137c0 ffffffff82213020 ffff8800be4596b0
      Call Trace:
       [<ffffffff81101ee0>] ? __lock_page+0x70/0x70
       [<ffffffff81a0fdd9>] schedule+0x29/0x70
       [<ffffffff81a0fe80>] io_schedule+0x60/0x80
       [<ffffffff81101eee>] sleep_on_page+0xe/0x20
       [<ffffffff81a0e1ca>] __wait_on_bit_lock+0x5a/0xc0
       [<ffffffff81101ed7>] __lock_page+0x67/0x70
       [<ffffffff8106f750>] ? autoremove_wake_function+0x40/0x40
       [<ffffffff811867e6>] ? bio_add_page+0x36/0x40
       [<ffffffff8110b692>] set_page_dirty_lock+0x52/0x60
       [<ffffffff81186021>] bio_set_pages_dirty+0x51/0x70
       [<ffffffff8118c6b4>] do_blockdev_direct_IO+0xb24/0xeb0
       [<ffffffff811e71a0>] ? ext3_get_blocks_handle+0xe00/0xe00
       [<ffffffff8118ca95>] __blockdev_direct_IO+0x55/0x60
       [<ffffffff811e71a0>] ? ext3_get_blocks_handle+0xe00/0xe00
       [<ffffffff811e91c8>] ext3_direct_IO+0xf8/0x390
       [<ffffffff811e71a0>] ? ext3_get_blocks_handle+0xe00/0xe00
       [<ffffffff81004b60>] ? xen_mc_flush+0xb0/0x1b0
       [<ffffffff81104027>] generic_file_aio_read+0x737/0x780
       [<ffffffff813bedeb>] ? gnttab_map_refs+0x15b/0x1e0
       [<ffffffff811038f0>] ? find_get_pages+0x150/0x150
       [<ffffffff8119736c>] aio_rw_vect_retry+0x7c/0x1d0
       [<ffffffff811972f0>] ? lookup_ioctx+0x90/0x90
       [<ffffffff81198856>] aio_run_iocb+0x66/0x1a0
       [<ffffffff811998b8>] do_io_submit+0x708/0xb90
       [<ffffffff81199d50>] sys_io_submit+0x10/0x20
       [<ffffffff81a18d69>] system_call_fastpath+0x16/0x1b
      
      The explanation is in the comment within the code:
      
      We need to do this because the pages shared by the frontend
      (xen-blkfront) can be already locked (lock_page, called by
      do_read_cache_page); when the userspace backend tries to use them
      with direct_IO, mfn_to_pfn returns the pfn of the frontend, so
      do_blockdev_direct_IO is going to try to lock the same pages
      again resulting in a deadlock.
      
      A simplified call graph looks like this:
      
      pygrub                          QEMU
      -----------------------------------------------
      do_read_cache_page              io_submit
        |                              |
      lock_page                       ext3_direct_IO
                                       |
                                      bio_add_page
                                       |
                                      lock_page
      
      Internally the xen-blkback uses m2p_add_override to swizzle (temporarily)
      a 'struct page' to have a different MFN (so that it can point to another
      guest). It also can easily find out whether another pfn corresponding
      to the mfn exists in the m2p, and can set the FOREIGN bit
      in the p2m, making sure that mfn_to_pfn returns the pfn of the backend.
      
      This allows the backend to perform direct_IO on these pages, but as a
      side effect prevents the frontend from using get_user_pages_fast on
      them while they are being shared with the backend.
      Signed-off-by: default avatarStefano Stabellini <stefano.stabellini@eu.citrix.com>
      Signed-off-by: default avatarKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
      b9e0d95c
    • Mircea Gherzan's avatar
      ARM: 7421/1: bpf_jit: BPF_S_ANC_ALU_XOR_X support · 2bea29b7
      Mircea Gherzan authored
      JIT support for the XOR operation introduced by the commit
      ffe06c17.
      Signed-off-by: default avatarMircea Gherzan <mgherzan@gmail.com>
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      2bea29b7
    • Rabin Vincent's avatar
      ARM: 7423/1: kprobes: run t32_simulate_ldr_literal() without insn slot · 2307574a
      Rabin Vincent authored
      t32_simulate_ldr_literal() can be run without an instruction slot, so it
      should be using DECODE_SIMULATEX instead of DECODE_EMULATEX.
      Acked-by: default avatarJon Medhurst <tixy@yxit.co.uk>
      Signed-off-by: default avatarRabin Vincent <rabin.vincent@stericsson.com>
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      2307574a
    • Marek Szyprowski's avatar
      x86: dma-mapping: fix broken allocation when dma_mask has been provided · c080e26e
      Marek Szyprowski authored
      Commit 0a2b9a6e ("X86: integrate CMA with DMA-mapping subsystem")
      broke memory allocation with dma_mask. This patch fixes possible kernel
      ops caused by lack of resetting page variable when jumping to 'again' label.
      Reported-by: default avatarKonrad Rzeszutek Wilk <konrad@darnok.org>
      Signed-off-by: default avatarMarek Szyprowski <m.szyprowski@samsung.com>
      Acked-by: default avatarMichal Nazarewicz <mina86@mina86.com>
      c080e26e