1. 10 Jul, 2015 2 commits
    • John David Anglin's avatar
      parisc: Fix some PTE/TLB race conditions and optimize __flush_tlb_range based on timing results · 01ab6057
      John David Anglin authored
      The increased use of pdtlb/pitlb instructions seemed to increase the
      frequency of random segmentation faults building packages. Further, we
      had a number of cases where TLB inserts would repeatedly fail and all
      forward progress would stop. The Haskell ghc package caused a lot of
      trouble in this area. The final indication of a race in pte handling was
      this syslog entry on sibaris (C8000):
      
       swap_free: Unused swap offset entry 00000004
       BUG: Bad page map in process mysqld  pte:00000100 pmd:019bbec5
       addr:00000000ec464000 vm_flags:00100073 anon_vma:0000000221023828 mapping: (null) index:ec464
       CPU: 1 PID: 9176 Comm: mysqld Not tainted 4.0.0-2-parisc64-smp #1 Debian 4.0.5-1
       Backtrace:
        [<0000000040173eb0>] show_stack+0x20/0x38
        [<0000000040444424>] dump_stack+0x9c/0x110
        [<00000000402a0d38>] print_bad_pte+0x1a8/0x278
        [<00000000402a28b8>] unmap_single_vma+0x3d8/0x770
        [<00000000402a4090>] zap_page_range+0xf0/0x198
        [<00000000402ba2a4>] SyS_madvise+0x404/0x8c0
      
      Note that the pte value is 0 except for the accessed bit 0x100. This bit
      shouldn't be set without the present bit.
      
      It should be noted that the madvise system call is probably a trigger for many
      of the random segmentation faults.
      
      In looking at the kernel code, I found the following problems:
      
      1) The pte_clear define didn't take TLB lock when clearing a pte.
      2) We didn't test pte present bit inside lock in exception support.
      3) The pte and tlb locks needed to merged in order to ensure consistency
      between page table and TLB. This also has the effect of serializing TLB
      broadcasts on SMP systems.
      
      The attached change implements the above and a few other tweaks to try
      to improve performance. Based on the timing code, TLB purges are very
      slow (e.g., ~ 209 cycles per page on rp3440). Thus, I think it
      beneficial to test the split_tlb variable to avoid duplicate purges.
      Probably, all PA 2.0 machines have combined TLBs.
      
      I dropped using __flush_tlb_range in flush_tlb_mm as I realized all
      applications and most threads have a stack size that is too large to
      make this useful. I added some comments to this effect.
      
      Since implementing 1 through 3, I haven't had any random segmentation
      faults on mx3210 (rp3440) in about one week of building code and running
      as a Debian buildd.
      Signed-off-by: default avatarJohn David Anglin <dave.anglin@bell.net>
      Cc: stable@vger.kernel.org # v3.18+
      Signed-off-by: default avatarHelge Deller <deller@gmx.de>
      01ab6057
    • Alex Ivanov's avatar
      stifb: Implement hardware accelerated copyarea · cb908ed3
      Alex Ivanov authored
      This patch adds hardware assisted scrolling. The code is based upon the
      following investigation: https://parisc.wiki.kernel.org/index.php/NGLE#Blitter
      
      A simple 'time ls -la /usr/bin' test shows 1.6x speed increase over soft
      copy and 2.3x increase over FBINFO_READS_FAST (prefer soft copy over
      screen redraw) on Artist framebuffer.
      Signed-off-by: default avatarAlex Ivanov <lausgans@gmail.com>
      Signed-off-by: default avatarHelge Deller <deller@gmx.de>
      cb908ed3
  2. 09 Jul, 2015 16 commits
  3. 08 Jul, 2015 3 commits
  4. 07 Jul, 2015 8 commits
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://ftp.arm.linux.org.uk/~rmk/linux-arm · d6ac4ffc
      Linus Torvalds authored
      Pull ARM updates from Russell King:
       "These are late by a week; they should have been merged during the
        merge window, but unfortunately, the ARM kernel build/boot farms were
        indicating random failures, and it wasn't clear whether the cause was
        something in these changes or something during the merge window.
      
        This is a set of merge window fixes with some documentation additions"
      
      * 'for-linus' of git://ftp.arm.linux.org.uk/~rmk/linux-arm:
        ARM: avoid unwanted GCC memset()/memcpy() optimisations for IO variants
        ARM: pgtable: document mapping types
        ARM: io: convert ioremap*() to functions
        ARM: io: fix ioremap_wt() implementation
        ARM: io: document ARM specific behaviour of ioremap*() implementations
        ARM: fix lockdep unannotated irqs-off warning
        ARM: 8397/1: fix vdsomunge not to depend on glibc specific error.h
        ARM: add helpful message when truncating physical memory
        ARM: add help text for HIGHPTE configuration entry
        ARM: fix DEBUG_SET_MODULE_RONX build dependencies
        ARM: 8396/1: use phys_addr_t in pfn_to_kaddr()
        ARM: 8394/1: update memblock limit after mapping lowmem
        ARM: 8393/1: smp: Fix suspicious RCU usage with ipi tracepoints
      d6ac4ffc
    • Tomas Winkler's avatar
      mei: nfc: fix deadlock on shutdown/suspend path · 4f273959
      Tomas Winkler authored
      In function mei_nfc_host_exit mei_cl_remove_device cannot be called
      under the device mutex as device removing flow invokes the device driver
      remove handler that calls in turn to mei_cl_disable_device which
      naturally acquires the device mutex.
      
      Also remove mei_cl_bus_remove_devices which has the same issue, but is
      never executed as currently the only device on the mei client bus is NFC
      and a new device cannot be easily added till the bus revamp is
      completed.
      
      This fixes regression caused by commit be9b720a ("mei_phy: move all
      nfc logic from mei driver to nfc")
      
      Prior to this change the nfc driver remove handler called to no-op
      disable function while actual nfc device was disabled directly from the
      mei driver.
      Reported-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Acked-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Cc: Samuel Ortiz <sameo@linux.intel.com>
      Signed-off-by: default avatarTomas Winkler <tomas.winkler@intel.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      4f273959
    • Rafael J. Wysocki's avatar
      Merge branch 'acpi-scan' · 8076ca48
      Rafael J. Wysocki authored
      * acpi-scan:
        ata: ahci_platform: Add ACPI _CLS matching
        ACPI / scan: Add support for ACPI _CLS device matching
      8076ca48
    • Rafael J. Wysocki's avatar
      Merge branches 'acpi-pnp', 'acpi-soc', 'pm-domains' and 'pm-sleep' · d0aee67f
      Rafael J. Wysocki authored
      * acpi-pnp:
        ACPI / PNP: Reserve ACPI resources at the fs_initcall_sync stage
      
      * acpi-soc:
        ACPI / LPSS: Fix up acpi_lpss_create_device()
      
      * pm-domains:
        PM / Domains: Avoid infinite loops in attach/detach code
      
      * pm-sleep:
        PM / hibernate: clarify resume documentation
      d0aee67f
    • Rafael J. Wysocki's avatar
      Merge branch 'pm-wakeirq' · 3fc7aeeb
      Rafael J. Wysocki authored
      * pm-wakeirq:
        PM / wakeirq: Avoid setting power.wakeirq too hastily
      3fc7aeeb
    • Russell King's avatar
      06be5eef
    • Rafael J. Wysocki's avatar
      PM / wakeirq: Avoid setting power.wakeirq too hastily · 6d3dab7d
      Rafael J. Wysocki authored
      If dev_pm_attach_wake_irq() fails, the device's power.wakeirq field
      should not be set to point to the struct wake_irq passed to that
      function, as that object will be freed going forward.
      
      For this reason, make dev_pm_attach_wake_irq() first call
      device_wakeup_attach_irq() and only set the device's power.wakeirq
      field if that's successful.
      
      That requires device_wakeup_attach_irq() to be called under the
      device's power.lock lock, but since dev_pm_attach_wake_irq() is
      the only caller of it, the requisite changes are easy to make.
      
      Fixes: 4990d4fe (PM / Wakeirq: Add automated device wake IRQ handling)
      Reported-by: default avatarFelipe Balbi <balbi@ti.com>
      Tested-by: default avatarTony Lindgren <tony@atomide.com>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      6d3dab7d
    • Linus Torvalds's avatar
      Merge branch 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · c7e9ad7d
      Linus Torvalds authored
      Pull perf fixes from Ingo Molnar:
      
       - fix the perf build, by fixing the rbtree.c sharing bug between kernel
         and tools/perf by creating a local copy of rbtree.c (more will be
         done for v4.3)
      
       - fix an AUX buffer (Intel-PT support) refcounting bug
      
       - fix copy_from_user_nmi() return value"
      
      * 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        perf/x86: Fix copy_from_user_nmi() return if range is not ok
        perf: Fix AUX buffer refcounting
        tools: Copy rbtree_augmented.h from the kernel
        tools: Move rbtree.h from tools/perf/
        tools: Copy lib/rbtree.c to tools/lib/
        perf tools: Copy rbtree.h from the kernel
        tools: Adopt {READ,WRITE_ONCE} from the kernel
      c7e9ad7d
  5. 06 Jul, 2015 11 commits