1. 09 Jul, 2015 5 commits
    • Vineet Gupta's avatar
      b631788a
    • Vineet Gupta's avatar
      ARC: Add llock/scond to futex backend · 9138d413
      Vineet Gupta authored
      Signed-off-by: default avatarVineet Gupta <vgupta@synopsys.com>
      9138d413
    • Joël Porquet's avatar
      arc:irqchip: prepare for drivers/irqchip/irqchip.h removal · 70d93d89
      Joël Porquet authored
      The IRQCHIP_DECLARE macro migrated to 'include/linux/irqchip.h'.
      
      See commit 91e20b50
      ("irqchip: Move IRQCHIP_DECLARE macro to include/linux/irqchip.h").
      
      This patch removes the inclusions of private header 'drivers/irqchip/irqchip.h'
      and if necessary replaces them with inclusions of 'include/linux/irqchip.h'.
      Signed-off-by: default avatarJoel Porquet <joel@porquet.org>
      Signed-off-by: default avatarVineet Gupta <vgupta@synopsys.com>
      70d93d89
    • Vineet Gupta's avatar
      ARC: Make ARC bitops "safer" (add anti-optimization) · 80f42084
      Vineet Gupta authored
      ARCompact/ARCv2 ISA provide that any instructions which deals with
      bitpos/count operand ASL, LSL, BSET, BCLR, BMSK .... will only consider
      lower 5 bits. i.e. auto-clamp the pos to 0-31.
      
      ARC Linux bitops exploited this fact by NOT explicitly masking out upper
      bits for @nr operand in general, saving a bunch of AND/BMSK instructions
      in generated code around bitops.
      
      While this micro-optimization has worked well over years it is NOT safe
      as shifting a number with a value, greater than native size is
      "undefined" per "C" spec.
      
      So as it turns outm EZChip ran into this eventually, in their massive
      muti-core SMP build with 64 cpus. There was a test_bit() inside a loop
      from 63 to 0 and gcc was weirdly optimizing away the first iteration
      (so it was really adhering to standard by implementing undefined behaviour
      vs. removing all the iterations which were phony i.e. (1 << [63..32])
      
      | for i = 63 to 0
      |    X = ( 1 << i )
      |    if X == 0
      |       continue
      
      So fix the code to do the explicit masking at the expense of generating
      additional instructions. Fortunately, this can be mitigated to a large
      extent as gcc has SHIFT_COUNT_TRUNCATED which allows combiner to fold
      masking into shift operation itself. It is currently not enabled in ARC
      gcc backend, but could be done after a bit of testing.
      
      Fixes STAR 9000866918 ("unsafe "undefined behavior" code in kernel")
      Reported-by: default avatarNoam Camus <noamc@ezchip.com>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: default avatarVineet Gupta <vgupta@synopsys.com>
      80f42084
    • Alexey Brodkin's avatar
      ARCv2: [axs103] bump CPU frequency from 75 to 90 MHZ · e2fc61f3
      Alexey Brodkin authored
      With up-to-date FPGA builds ARC cores are supposed to correctly operate
      even with 90 MHz clock (which is a target frequency for AXS103 release).
      Signed-off-by: default avatarAlexey Brodkin <abrodkin@synopsys.com>
      Cc: arc-linux-dev@synopsys.com
      e2fc61f3
  2. 06 Jul, 2015 8 commits
    • Vineet Gupta's avatar
    • Vineet Gupta's avatar
      ARCv2: intc: IDU: support irq affinity · 83ce3e6f
      Vineet Gupta authored
      With this nsim standlone / OSCI have working irq affinity - AXS103 still
      needs some work as IDU is not visible in intc hierarchy yet !
      Signed-off-by: default avatarVineet Gupta <vgupta@synopsys.com>
      83ce3e6f
    • Vineet Gupta's avatar
      ARC: fix unused var wanring · bccea41e
      Vineet Gupta authored
      Fixes: 9bf39ab2 ("vfs: add file_path() helper")
      Signed-off-by: default avatarVineet Gupta <vgupta@synopsys.com>
      bccea41e
    • Vineet Gupta's avatar
      ARC: Don't memzero twice in dma_alloc_coherent for __GFP_ZERO · f718c2ef
      Vineet Gupta authored
      alloc_pages_exact() get gfp flags and handle zero'ing already
      
      And while it, fix the case where ioremap fails: return rightaway.
      Signed-off-by: default avatarVineet Gupta <vgupta@synopsys.com>
      f718c2ef
    • Vineet Gupta's avatar
      ARC: Override toplevel default -O2 with -O3 · 97709069
      Vineet Gupta authored
      ARC kernels have historically been built with -O3, despite top level
      Makefile defaulting to -O2. This was facilitated by implicitly ordering
      of arch makefile include AFTER top level assigned -O2.
      
      An upstream fix to top level a1c48bb1 ("Makefile: Fix unrecognized
      cross-compiler command line options") changed the ordering, making ARC
      -O3 defunct.
      
      Fix that by NOT relying on any ordering whatsoever and use the proper
      arch override facility now present in kbuild (ARCH_*FLAGS)
      
      Depends-on: ("kbuild: Allow arch Makefiles to override {cpp,ld,c}flags")
      Suggested-by: default avatarMichal Marek <mmarek@suse.cz>
      Cc: Geert Uytterhoeven <geert@linux-m68k.org>
      Cc: stable@vger.kernel.org # 3.16+
      Signed-off-by: default avatarVineet Gupta <vgupta@synopsys.com>
      97709069
    • Michal Marek's avatar
      kbuild: Allow arch Makefiles to override {cpp,ld,c}flags · 61754c18
      Michal Marek authored
      Since commit a1c48bb1 (Makefile: Fix unrecognized cross-compiler command
      line options), the arch Makefile is included earlier by the main
      Makefile, preventing the arc architecture to set its -O3 compiler
      option. Since there might be more use cases for an arch Makefile to
      fine-tune the options, add support for ARCH_CPPFLAGS, ARCH_AFLAGS and
      ARCH_CFLAGS variables that are appended to the respective kbuild
      variables. The user still has the final say via the KCPPFLAGS, KAFLAGS
      and KCFLAGS variables.
      Reported-by: default avatarVineet Gupta <Vineet.Gupta1@synopsys.com>
      Cc: stable@vger.kernel.org # 3.16+
      Signed-off-by: default avatarMichal Marek <mmarek@suse.com>
      61754c18
    • Alexey Brodkin's avatar
      ARCv2: guard SLC DMA ops with spinlock · b607eddd
      Alexey Brodkin authored
      SLC maintenance ops need to be serialized by software as there is no
      inherent buffering / quequing of aux commands. It can silently ignore a
      new aux operation if previous one is still ongoing (SLC_CTRL_BUSY)
      
      So gaurd the SLC op using a spin lock
      
      The spin lock doesn't seem to be contended even in heavy workloads such
      as iperf. On FPGA @ 75 MHz.
      
       [1] Before this change:
       ============================================================
        # iperf -c 10.42.0.1
       ------------------------------------------------------------
       Client connecting to 10.42.0.1, TCP port 5001
       TCP window size: 43.8 KByte (default)
       ------------------------------------------------------------
       [  3] local 10.42.0.110 port 38935 connected with 10.42.0.1 port 5001
       [ ID] Interval       Transfer     Bandwidth
       [  3]  0.0-10.0 sec  48.4 MBytes  40.6 Mbits/sec
       ============================================================
      
       [2] After this change:
       ============================================================
       # iperf -c 10.42.0.1
       ------------------------------------------------------------
       Client connecting to 10.42.0.1, TCP port 5001
       TCP window size: 43.8 KByte (default)
       ------------------------------------------------------------
       [  3] local 10.42.0.243 port 60248 connected with 10.42.0.1 port 5001
       [ ID] Interval       Transfer     Bandwidth
       [  3]  0.0-10.0 sec  47.5 MBytes  39.8 Mbits/sec
       # iperf -c 10.42.0.1
       ------------------------------------------------------------
       Client connecting to 10.42.0.1, TCP port 5001
       TCP window size: 43.8 KByte (default)
       ------------------------------------------------------------
       [  3] local 10.42.0.243 port 60249 connected with 10.42.0.1 port 5001
       [ ID] Interval       Transfer     Bandwidth
       [  3]  0.0-10.0 sec  54.9 MBytes  46.0 Mbits/sec
       ============================================================
      Signed-off-by: default avatarAlexey Brodkin <abrodkin@synopsys.com>
      Cc: arc-linux-dev@synopsys.com
      Signed-off-by: default avatarVineet Gupta <vgupta@synopsys.com>
      b607eddd
    • Vineet Gupta's avatar
  3. 05 Jul, 2015 4 commits
    • Linus Torvalds's avatar
      Linux 4.2-rc1 · d770e558
      Linus Torvalds authored
      d770e558
    • Linus Torvalds's avatar
      Merge tag 'platform-drivers-x86-v4.2-2' of... · a585d2b7
      Linus Torvalds authored
      Merge tag 'platform-drivers-x86-v4.2-2' of git://git.infradead.org/users/dvhart/linux-platform-drivers-x86
      
      Pull late x86 platform driver updates from Darren Hart:
       "The following came in a bit later and I wanted them to bake in next a
        few more days before submitting, thus the second pull.
      
        A new intel_pmc_ipc driver, a symmetrical allocation and free fix in
        dell-laptop, a couple minor fixes, and some updated documentation in
        the dell-laptop comments.
      
        intel_pmc_ipc:
         - Add Intel Apollo Lake PMC IPC driver
      
        tc1100-wmi:
         - Delete an unnecessary check before the function call "kfree"
      
        dell-laptop:
         - Fix allocating & freeing SMI buffer page
         - Show info about WiGig and UWB in debugfs
         - Update information about wireless control"
      
      * tag 'platform-drivers-x86-v4.2-2' of git://git.infradead.org/users/dvhart/linux-platform-drivers-x86:
        intel_pmc_ipc: Add Intel Apollo Lake PMC IPC driver
        tc1100-wmi: Delete an unnecessary check before the function call "kfree"
        dell-laptop: Fix allocating & freeing SMI buffer page
        dell-laptop: Show info about WiGig and UWB in debugfs
        dell-laptop: Update information about wireless control
      a585d2b7
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs · 1dc51b82
      Linus Torvalds authored
      Pull more vfs updates from Al Viro:
       "Assorted VFS fixes and related cleanups (IMO the most interesting in
        that part are f_path-related things and Eric's descriptor-related
        stuff).  UFS regression fixes (it got broken last cycle).  9P fixes.
        fs-cache series, DAX patches, Jan's file_remove_suid() work"
      
      [ I'd say this is much more than "fixes and related cleanups".  The
        file_table locking rule change by Eric Dumazet is a rather big and
        fundamental update even if the patch isn't huge.   - Linus ]
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (49 commits)
        9p: cope with bogus responses from server in p9_client_{read,write}
        p9_client_write(): avoid double p9_free_req()
        9p: forgetting to cancel request on interrupted zero-copy RPC
        dax: bdev_direct_access() may sleep
        block: Add support for DAX reads/writes to block devices
        dax: Use copy_from_iter_nocache
        dax: Add block size note to documentation
        fs/file.c: __fget() and dup2() atomicity rules
        fs/file.c: don't acquire files->file_lock in fd_install()
        fs:super:get_anon_bdev: fix race condition could cause dev exceed its upper limitation
        vfs: avoid creation of inode number 0 in get_next_ino
        namei: make set_root_rcu() return void
        make simple_positive() public
        ufs: use dir_pages instead of ufs_dir_pages()
        pagemap.h: move dir_pages() over there
        remove the pointless include of lglock.h
        fs: cleanup slight list_entry abuse
        xfs: Correctly lock inode when removing suid and file capabilities
        fs: Call security_ops->inode_killpriv on truncate
        fs: Provide function telling whether file_remove_privs() will do anything
        ...
      1dc51b82
    • Linus Torvalds's avatar
      bluetooth: fix list handling · 9b284cbd
      Linus Torvalds authored
      Commit 835a6a2f ("Bluetooth: Stop sabotaging list poisoning")
      thought that the code was sabotaging the list poisoning when NULL'ing
      out the list pointers and removed it.
      
      But what was going on was that the bluetooth code was using NULL
      pointers for the list as a way to mark it empty, and that commit just
      broke it (and replaced the test with NULL with a "list_empty()" test on
      a uninitialized list instead, breaking things even further).
      
      So fix it all up to use the regular and real list_empty() handling
      (which does not use NULL, but a pointer to itself), also making sure to
      initialize the list properly (the previous NULL case was initialized
      implicitly by the session being allocated with kzalloc())
      
      This is a combination of patches by Marcel Holtmann and Tedd Ho-Jeong
      An.
      
      [ I would normally expect to get this through the bt tree, but I'm going
        to release -rc1, so I'm just committing this directly   - Linus ]
      Reported-and-tested-by: default avatarJörg Otte <jrg.otte@gmail.com>
      Cc: Alexey Dobriyan <adobriyan@gmail.com>
      Original-by: default avatarTedd Ho-Jeong An <tedd.an@intel.com>
      Original-by: Marcel Holtmann <marcel@holtmann.org>:
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      9b284cbd
  4. 04 Jul, 2015 23 commits