1. 14 Aug, 2014 13 commits
    • Max Filippov's avatar
      xtensa: implement clear_user_highpage and copy_user_highpage · a91902db
      Max Filippov authored
      Existing clear_user_page and copy_user_page cannot be used with highmem
      because they calculate physical page address from its virtual address
      and do it incorrectly in case of high memory page mapped with
      kmap_atomic. Also kmap is not needed, as most likely userspace mapping
      color would be different from the kmapped color.
      
      Provide clear_user_highpage and copy_user_highpage functions that
      determine if temporary mapping is needed for the pages. Move most of the
      logic of the former clear_user_page and copy_user_page to
      xtensa/mm/cache.c only leaving temporary mapping setup, invalidation and
      clearing/copying in the xtensa/mm/misc.S. Rename these functions to
      clear_page_alias and copy_page_alias.
      Signed-off-by: default avatarMax Filippov <jcmvbkbc@gmail.com>
      a91902db
    • Max Filippov's avatar
      xtensa: fix TLBTEMP_BASE_2 region handling in fast_second_level_miss · 7128039f
      Max Filippov authored
      Current definition of TLBTEMP_BASE_2 is always 32K above the
      TLBTEMP_BASE_1, whereas fast_second_level_miss handler for the TLBTEMP
      region analyzes virtual address bit (PAGE_SHIFT + DCACHE_ALIAS_ORDER)
      to determine TLBTEMP region where the fault happened. The size of the
      TLBTEMP region is also checked incorrectly: not 64K, but twice data
      cache way size (whicht may as well be less than the instruction cache
      way size).
      
      Fix TLBTEMP_BASE_2 to be TLBTEMP_BASE_1 + data cache way size.
      Provide TLBTEMP_SIZE that is a greater of doubled data cache way size or
      the instruction cache way size, and use it to determine if the second
      level TLB miss occured in the TLBTEMP region.
      
      Practical occurence of page faults in the TLBTEMP area is extremely
      rare, this code can be tested by deletion of all w[di]tlb instructions
      in the tlbtemp_mapping region.
      
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarMax Filippov <jcmvbkbc@gmail.com>
      7128039f
    • Max Filippov's avatar
      xtensa: allow fixmap and kmap span more than one page table · dec7305d
      Max Filippov authored
      To support aliasing cache both kmap region sizes are multiplied by the
      number of data cache colors. After that expansion page tables that cover
      kmap regions may become larger than one page. Correctly allocate and
      initialize page tables in this case.
      Signed-off-by: default avatarMax Filippov <jcmvbkbc@gmail.com>
      dec7305d
    • Max Filippov's avatar
      xtensa: make fixmap region addressing grow with index · 22def768
      Max Filippov authored
      It's much easier to reason about alignment and coloring of regions
      located in the fixmap when fixmap index is just a PFN within the fixmap
      region. Change fixmap addressing so that index 0 corresponds to
      FIXADDR_START instead of the FIXADDR_TOP.
      Signed-off-by: default avatarMax Filippov <jcmvbkbc@gmail.com>
      22def768
    • Max Filippov's avatar
      xtensa: fix access to THREAD_RA/THREAD_SP/THREAD_DS · 52247123
      Max Filippov authored
      With SMP and a lot of debug options enabled task_struct::thread gets out
      of reach of s32i/l32i instructions with base pointing at task_struct,
      breaking build with the following messages:
      
        arch/xtensa/kernel/entry.S: Assembler messages:
        arch/xtensa/kernel/entry.S:1002: Error: operand 3 of 'l32i.n' has invalid value '1048'
        arch/xtensa/kernel/entry.S:1831: Error: operand 3 of 's32i.n' has invalid value '1040'
        arch/xtensa/kernel/entry.S:1832: Error: operand 3 of 's32i.n' has invalid value '1044'
      
      Change base to point to task_struct::thread in such cases.
      Don't use a10 in _switch_to to save/restore prev pointer as a2 is not
      clobbered.
      
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarMax Filippov <jcmvbkbc@gmail.com>
      52247123
    • Miklos Szeredi's avatar
      xtensa: add renameat2 syscall · 89f77c6f
      Miklos Szeredi authored
      Signed-off-by: default avatarMiklos Szeredi <mszeredi@suse.cz>
      Cc: Chris Zankel <chris@zankel.net>
      Signed-off-by: default avatarMax Filippov <jcmvbkbc@gmail.com>
      89f77c6f
    • Alan Douglas's avatar
      xtensa: fix address checks in dma_{alloc,free}_coherent · 1ca49463
      Alan Douglas authored
      Virtual address is translated to the XCHAL_KSEG_CACHED region in the
      dma_free_coherent, but is checked to be in the 0...XCHAL_KSEG_SIZE
      range.
      
      Change check for end of the range from 'addr >= X' to 'addr > X - 1' to
      handle the case of X == 0.
      
      Replace 'if (C) BUG();' construct with 'BUG_ON(C);'.
      
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarAlan Douglas <adouglas@cadence.com>
      Signed-off-by: default avatarMax Filippov <jcmvbkbc@gmail.com>
      1ca49463
    • Max Filippov's avatar
      xtensa: replace IOCTL code definitions with constants · f61bf8e7
      Max Filippov authored
      This fixes userspace code that builds on other architectures but fails
      on xtensa due to references to structures that other architectures don't
      refer to. E.g. this fixes the following issue with python-2.7.8:
      
        python-2.7.8/Modules/termios.c:861:25: error: invalid application
           of 'sizeof' to incomplete type 'struct serial_multiport_struct'
           {"TIOCSERGETMULTI", TIOCSERGETMULTI},
        python-2.7.8/Modules/termios.c:870:25: error: invalid application
           of 'sizeof' to incomplete type 'struct serial_multiport_struct'
           {"TIOCSERSETMULTI", TIOCSERSETMULTI},
        python-2.7.8/Modules/termios.c:900:24: error: invalid application
           of 'sizeof' to incomplete type 'struct tty_struct'
           {"TIOCTTYGSTRUCT", TIOCTTYGSTRUCT},
      
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarMax Filippov <jcmvbkbc@gmail.com>
      f61bf8e7
    • Max Filippov's avatar
      ad4a96b4
    • Max Filippov's avatar
      xtensa: select HAVE_IDE only on platforms that may have it · 4964527d
      Max Filippov authored
      HAVE_IDE is not a property of architecture but of a platform, and neither
      ISS or XTFPGA support it.
      Signed-off-by: default avatarMax Filippov <jcmvbkbc@gmail.com>
      4964527d
    • Max Filippov's avatar
      920f8a39
    • Max Filippov's avatar
      xtensa: make MMU-related configuration options depend on MMU · 8a9de059
      Max Filippov authored
      MMUv3 and HIGHMEM support are available only on configurations with MMU,
      don't show them otherwise.
      Signed-off-by: default avatarMax Filippov <jcmvbkbc@gmail.com>
      8a9de059
    • Max Filippov's avatar
      xtensa: simplify addition of new core variants · 420ae951
      Max Filippov authored
      Instead of adding new Kconfig options and Makefile rules for each new
      core variant provide XTENSA_VARIANT_CUSTOM variant and record variant
      name in the XTENSA_VARIANT_NAME variable. Adding new core variant now
      means providing directory structure under arch/xtensa/variant and
      specifying correct name in kernel configuration.
      Signed-off-by: default avatarMax Filippov <jcmvbkbc@gmail.com>
      420ae951
  2. 27 Jul, 2014 5 commits
  3. 26 Jul, 2014 13 commits
    • Linus Torvalds's avatar
      Fix gcc-4.9.0 miscompilation of load_balance() in scheduler · 2062afb4
      Linus Torvalds authored
      Michel Dänzer and a couple of other people reported inexplicable random
      oopses in the scheduler, and the cause turns out to be gcc mis-compiling
      the load_balance() function when debugging is enabled.  The gcc bug
      apparently goes back to gcc-4.5, but slight optimization changes means
      that it now showed up as a problem in 4.9.0 and 4.9.1.
      
      The instruction scheduling problem causes gcc to schedule a spill
      operation to before the stack frame has been created, which in turn can
      corrupt the spilled value if an interrupt comes in.  There may be other
      effects of this bug too, but that's the code generation problem seen in
      Michel's case.
      
      This is fixed in current gcc HEAD, but the workaround as suggested by
      Markus Trippelsdorf is pretty simple: use -fno-var-tracking-assignments
      when compiling the kernel, which disables the gcc code that causes the
      problem.  This can result in slightly worse debug information for
      variable accesses, but that is infinitely preferable to actual code
      generation problems.
      
      Doing this unconditionally (not just for CONFIG_DEBUG_INFO) also allows
      non-debug builds to verify that the debug build would be identical: we
      can do
      
          export GCC_COMPARE_DEBUG=1
      
      to make gcc internally verify that the result of the build is
      independent of the "-g" flag (it will make the compiler build everything
      twice, toggling the debug flag, and compare the results).
      
      Without the "-fno-var-tracking-assignments" option, the build would fail
      (even with 4.8.3 that didn't show the actual stack frame bug) with a gcc
      compare failure.
      
      See also gcc bugzilla:
      
        https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61801Reported-by: default avatarMichel Dänzer <michel@daenzer.net>
      Suggested-by: default avatarMarkus Trippelsdorf <markus@trippelsdorf.de>
      Cc: Jakub Jelinek <jakub@redhat.com>
      Cc: stable@kernel.org
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      2062afb4
    • Hugh Dickins's avatar
      mm: fix direct reclaim writeback regression · 8bdd6380
      Hugh Dickins authored
      Shortly before 3.16-rc1, Dave Jones reported:
      
        WARNING: CPU: 3 PID: 19721 at fs/xfs/xfs_aops.c:971
                 xfs_vm_writepage+0x5ce/0x630 [xfs]()
        CPU: 3 PID: 19721 Comm: trinity-c61 Not tainted 3.15.0+ #3
        Call Trace:
          xfs_vm_writepage+0x5ce/0x630 [xfs]
          shrink_page_list+0x8f9/0xb90
          shrink_inactive_list+0x253/0x510
          shrink_lruvec+0x563/0x6c0
          shrink_zone+0x3b/0x100
          shrink_zones+0x1f1/0x3c0
          try_to_free_pages+0x164/0x380
          __alloc_pages_nodemask+0x822/0xc90
          alloc_pages_vma+0xaf/0x1c0
          handle_mm_fault+0xa31/0xc50
        etc.
      
       970   if (WARN_ON_ONCE((current->flags & (PF_MEMALLOC|PF_KSWAPD)) ==
       971                   PF_MEMALLOC))
      
      I did not respond at the time, because a glance at the PageDirty block
      in shrink_page_list() quickly shows that this is impossible: we don't do
      writeback on file pages (other than tmpfs) from direct reclaim nowadays.
      Dave was hallucinating, but it would have been disrespectful to say so.
      
      However, my own /var/log/messages now shows similar complaints
      
        WARNING: CPU: 1 PID: 28814 at fs/ext4/inode.c:1881 ext4_writepage+0xa7/0x38b()
        WARNING: CPU: 0 PID: 27347 at fs/ext4/inode.c:1764 ext4_writepage+0xa7/0x38b()
      
      from stressing some mmotm trees during July.
      
      Could a dirty xfs or ext4 file page somehow get marked PageSwapBacked,
      so fail shrink_page_list()'s page_is_file_cache() test, and so proceed
      to mapping->a_ops->writepage()?
      
      Yes, 3.16-rc1's commit 68711a74 ("mm, migration: add destination
      page freeing callback") has provided such a way to compaction: if
      migrating a SwapBacked page fails, its newpage may be put back on the
      list for later use with PageSwapBacked still set, and nothing will clear
      it.
      
      Whether that can do anything worse than issue WARN_ON_ONCEs, and get
      some statistics wrong, is unclear: easier to fix than to think through
      the consequences.
      
      Fixing it here, before the put_new_page(), addresses the bug directly,
      but is probably the worst place to fix it.  Page migration is doing too
      many parts of the job on too many levels: fixing it in
      move_to_new_page() to complement its SetPageSwapBacked would be
      preferable, except why is it (and newpage->mapping and newpage->index)
      done there, rather than down in migrate_page_move_mapping(), once we are
      sure of success? Not a cleanup to get into right now, especially not
      with memcg cleanups coming in 3.17.
      Reported-by: default avatarDave Jones <davej@redhat.com>
      Signed-off-by: default avatarHugh Dickins <hughd@google.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      8bdd6380
    • Linus Torvalds's avatar
      Merge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux · b401796c
      Linus Torvalds authored
      Pull drm fixes from Dave Airlie:
       "This is radeon and intel fixes, and is a small bit larger than I'm
        guessing you'd like it to be.
      
         - i915: fixes 32-bit highmem i915 blank screen, semaphore hang and
           runtime pm fix
      
         - radeon: gpuvm stability fix for hangs since 3.15, and hang/reboot
           regression on TN/RL devices,
      
        The only slightly controversial one is the change to use GB for the
        vm_size, which I'm letting through as its a new interface we defined
        in this merge window, and I'd prefer to have the released kernel have
        the final interface rather than changing it later"
      
      * 'drm-fixes' of git://people.freedesktop.org/~airlied/linux:
        drm/radeon: fix cut and paste issue for hawaii.
        drm/radeon: fix irq ring buffer overflow handling
        drm/i915: Simplify i915_gem_release_all_mmaps()
        drm/radeon: fix error handling in radeon_vm_bo_set_addr
        drm/i915: fix freeze with blank screen booting highmem
        drm/i915: Reorder the semaphore deadlock check, again
        drm/radeon/TN: only enable bapm on MSI systems
        drm/radeon: fix VM IB handling
        drm/radeon: fix handling of radeon_vm_bo_rmv v3
        drm/radeon: let's use GB for vm_size (v2)
      b401796c
    • Linus Torvalds's avatar
      Merge tag 'sound-3.16-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound · 9c550218
      Linus Torvalds authored
      Pull sound fixes from Takashi Iwai:
       "Here contains only the fixes for the new FireWire bebob driver.  All
        fairly trivial and local fixes, so safe to apply"
      
      * tag 'sound-3.16-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
        ALSA: bebob: Correction for return value of special_clk_ctl_put() in error
        ALSA: bebob: Correction for return value of .put callback
        ALSA: bebob: Use different labels for digital input/output
        ALSA: bebob: Fix a missing to unlock mutex in error handling case
      9c550218
    • Linus Torvalds's avatar
      Merge tag 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging · 051c2a9f
      Linus Torvalds authored
      Pull hwmon fix from Guenter Roeck:
       "Fixes to temperature limit and vrm write operations in smsc47m192
        driver"
      
      * tag 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging:
        hwmon: (smsc47m192) Fix temperature limit and vrm write operations
      051c2a9f
    • Randy Dunlap's avatar
      parport: fix menu breakage · edffe1b6
      Randy Dunlap authored
      Do not split the PARPORT-related symbols with the new kconfig
      symbol ARCH_MIGHT_HAVE_PC_PARPORT. The split was causing incorrect
      display of these symbols -- they were not being displayed together
      as they should be.
      
      Fixes: d90c3eb3 "Kconfig cleanup (PARPORT_PC dependencies)"
      Signed-off-by: default avatarRandy Dunlap <rdunlap@infradead.org>
      Cc: Mark Salter <msalter@redhat.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: stable@vger.kernel.org # for 3.13, 3.14, 3.15
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      edffe1b6
    • Linus Torvalds's avatar
      Merge tag 'blackfin-3.16-fixes' of... · 32e6e5c3
      Linus Torvalds authored
      Merge tag 'blackfin-3.16-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/realmz6/blackfin-linux
      
      Pull blackfin fixes from Steven Miao:
       "smc nor flash PM fix, pinctrl group fix, update defconfig, and build
        fixes"
      
      * tag 'blackfin-3.16-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/realmz6/blackfin-linux:
        blackfin: vmlinux.lds.S: reserve 32 bytes space at the end of data section for XIP kernel
        defconfig: BF609: update spi config name
        irq: blackfin sec: drop duplicated sec priority set
        blackfin: bind different groups of one pinmux function to different state name
        blackfin: fix some bf5xx boards build for missing <linux/gpio.h>
        pm: bf609: cleanup smc nor flash
      32e6e5c3
    • Steven Miao's avatar
      blackfin: vmlinux.lds.S: reserve 32 bytes space at the end of data section for XIP kernel · b76f9823
      Steven Miao authored
      to collect some undefined section to the end of the data section and avoid section overlap
      Signed-off-by: default avatarSteven Miao <realmz6@gmail.com>
      b76f9823
    • Steven Miao's avatar
      defconfig: BF609: update spi config name · ac425b61
      Steven Miao authored
      Signed-off-by: default avatarSteven Miao <realmz6@gmail.com>
      ac425b61
    • Steven Miao's avatar
      814ecd0d
    • Sonic Zhang's avatar
    • Steven Miao's avatar
    • Steven Miao's avatar
      pm: bf609: cleanup smc nor flash · c6a26ce9
      Steven Miao authored
      drop smc pin state change code, pin state will be saved in pinctrl-adi2 driver
      cleanup nor flash init/exit for pm suspend/resume
      Signed-off-by: default avatarSteven Miao <realmz6@gmail.com>
      c6a26ce9
  4. 25 Jul, 2014 2 commits
  5. 24 Jul, 2014 7 commits
    • H. Peter Anvin's avatar
      x86: Merge tag 'ras_urgent' into x86/urgent · bf72f5de
      H. Peter Anvin authored
      Promote one fix for 3.16
      
      This fix was necessary after
      
      9c15a24b ("x86/mce: Improve mcheck_init_device() error handling")
      
      went in. What this patch did was, among others, check the return value
      of misc_register and exit early if it encountered an error. Original
      code sloppily didn't do that.
      
      However,
      
              cef12ee5 ("xen/mce: Add mcelog support for Xen platform")
      
      made it so that xen's init routine xen_late_init_mcelog runs first. This
      was needed for the xen mcelog device which is supposed to be independent
      from the baremetal one.
      
      Initially it was reported that misc_register() fails often on xen and
      that's why it needed fixing. However, it is *supposed* to fail by
      design, when running in dom0 so that the xen mcelog device file gets
      registered first.
      
      And *then* you need the notifier *not* unregistered on the error path so
      that the timer does get deleted properly in the CPU hotplug notifier.
      
      Btw, this fix is needed also on baremetal in the unlikely event that
      misc_register(&mce_chrdev_device) fails there too.
      
      I was unsure whether to rush it in now and decided to delay it to 3.17.
      However, xen people wanted it promoted as it breaks xen when doing cpu
      hotplug there. So, after a bit of simmering in tip/master for initial
      smoke testing, let's move it to 3.16. It fixes a semi-regression which
      got introduced in 3.16 so no need for stable tagging.
      
      tip/x86/ras contains that exact same commit but we can't remove it
      there as it is not the last one. It won't cause any merge issues, as I
      confirmed locally but I should state here the special situation of this
      one fix explicitly anyway.
      
      Thanks.
      Signed-off-by: default avatarH. Peter Anvin <hpa@linux.intel.com>
      bf72f5de
    • Jerome Glisse's avatar
      drm/radeon: fix cut and paste issue for hawaii. · 1b2c4869
      Jerome Glisse authored
      This is a halfway fix for hawaii acceleration. More fixes to come
      but hopefully isolated to userspace.
      Signed-off-by: default avatarJérôme Glisse <jglisse@redhat.com>
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      1b2c4869
    • Dave Airlie's avatar
      Merge branch 'drm-fixes-3.16' of git://people.freedesktop.org/~agd5f/linux into drm-fixes · 97cefc3e
      Dave Airlie authored
      two more radeon fixes.
      
      * 'drm-fixes-3.16' of git://people.freedesktop.org/~agd5f/linux:
        drm/radeon: fix irq ring buffer overflow handling
        drm/radeon: fix error handling in radeon_vm_bo_set_addr
      97cefc3e
    • Dave Airlie's avatar
      Merge tag 'drm-intel-fixes-2014-07-24' of git://anongit.freedesktop.org/drm-intel into drm-fixes · 9d6ed3c6
      Dave Airlie authored
      This time in time! Just 32bit-pae fix from Hugh, semaphores fun from Chris
      and a fix for runtime pm cherry-picked from next.
      
      Paulo is still working on a fix for runtime pm when X does cursor fun when
      the display is off, but that one isn't ready yet.
      
      * tag 'drm-intel-fixes-2014-07-24' of git://anongit.freedesktop.org/drm-intel:
        drm/i915: Simplify i915_gem_release_all_mmaps()
        drm/i915: fix freeze with blank screen booting highmem
        drm/i915: Reorder the semaphore deadlock check, again
      9d6ed3c6
    • HIMANGI SARAOGI's avatar
      parisc: Eliminate memset after alloc_bootmem_pages · 9794144d
      HIMANGI SARAOGI authored
      alloc_bootmem and related function always return zeroed region of
      memory. Thus a memset after calls to these functions is unnecessary.
      
      The following Coccinelle semantic patch was used for making the change:
      
      @@
      expression E,E1;
      @@
      
      E = \(alloc_bootmem\|alloc_bootmem_low\|alloc_bootmem_pages\|alloc_bootmem_low_pages\)(...)
      ... when != E
      - memset(E,0,E1);
      Signed-off-by: default avatarHimangi Saraogi <himangi774@gmail.com>
      Acked-by: default avatarJulia Lawall <julia.lawall@lip6.fr>
      Signed-off-by: default avatarHelge Deller <deller@gmx.de>
      9794144d
    • John David Anglin's avatar
      parisc: Remove SA_RESTORER define · 20dbea49
      John David Anglin authored
      The sa_restorer field in struct sigaction is obsolete and no longer in
      the parisc implementation.  However, the core code assumes the field is
      present if SA_RESTORER is defined. So, the define needs to be removed.
      Signed-off-by: default avatarJohn David Anglin <dave.anglin@bell.net>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: default avatarHelge Deller <deller@gmx.de>
      20dbea49
    • Guenter Roeck's avatar
      hwmon: (smsc47m192) Fix temperature limit and vrm write operations · 043572d5
      Guenter Roeck authored
      Temperature limit clamps are applied after converting the temperature
      from milli-degrees C to degrees C, so either the clamp limit needs
      to be specified in degrees C, not milli-degrees C, or clamping must
      happen before converting to degrees C. Use the latter method to avoid
      overflows.
      
      vrm is an u8, so the written value needs to be limited to [0, 255].
      
      Cc: Axel Lin <axel.lin@ingics.com>
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
      Reviewed-by: default avatarJean Delvare <jdelvare@suse.de>
      043572d5