1. 04 8月, 2015 2 次提交
  2. 03 8月, 2015 1 次提交
  3. 23 7月, 2015 1 次提交
  4. 20 7月, 2015 4 次提交
  5. 18 7月, 2015 1 次提交
  6. 13 7月, 2015 2 次提交
    • V
      ARCv2: support HS38 releases · 624b71ee
      Vineet Gupta 提交于
      Signed-off-by: NVineet Gupta <vgupta@synopsys.com>
      624b71ee
    • A
      ARC: make sure instruction_pointer() returns unsigned value · f51e2f19
      Alexey Brodkin 提交于
      Currently instruction_pointer() returns pt_regs->ret and so return value
      is of type "long", which implicitly stands for "signed long".
      
      While that's perfectly fine when dealing with 32-bit values if return
      value of instruction_pointer() gets assigned to 64-bit variable sign
      extension may happen.
      
      And at least in one real use-case it happens already.
      In perf_prepare_sample() return value of perf_instruction_pointer()
      (which is an alias to instruction_pointer() in case of ARC) is assigned
      to (struct perf_sample_data)->ip (which type is "u64").
      
      And what we see if instuction pointer points to user-space application
      that in case of ARC lays below 0x8000_0000 "ip" gets set properly with
      leading 32 zeros. But if instruction pointer points to kernel address
      space that starts from 0x8000_0000 then "ip" is set with 32 leadig
      "f"-s. I.e. id instruction_pointer() returns 0x8100_0000, "ip" will be
      assigned with 0xffff_ffff__8100_0000. Which is obviously wrong.
      
      In particular that issuse broke output of perf, because perf was unable
      to associate addresses like 0xffff_ffff__8100_0000 with anything from
      /proc/kallsyms.
      
      That's what we used to see:
       ----------->8----------
        6.27%  ls       [unknown]                [k] 0xffffffff8046c5cc
        2.96%  ls       libuClibc-0.9.34-git.so  [.] memcpy
        2.25%  ls       libuClibc-0.9.34-git.so  [.] memset
        1.66%  ls       [unknown]                [k] 0xffffffff80666536
        1.54%  ls       libuClibc-0.9.34-git.so  [.] 0x000224d6
        1.18%  ls       libuClibc-0.9.34-git.so  [.] 0x00022472
       ----------->8----------
      
      With that change perf output looks much better now:
       ----------->8----------
        8.21%  ls       [kernel.kallsyms]        [k] memset
        3.52%  ls       libuClibc-0.9.34-git.so  [.] memcpy
        2.11%  ls       libuClibc-0.9.34-git.so  [.] malloc
        1.88%  ls       libuClibc-0.9.34-git.so  [.] memset
        1.64%  ls       [kernel.kallsyms]        [k] _raw_spin_unlock_irqrestore
        1.41%  ls       [kernel.kallsyms]        [k] __d_lookup_rcu
       ----------->8----------
      Signed-off-by: NAlexey Brodkin <abrodkin@synopsys.com>
      Cc: arc-linux-dev@synopsys.com
      Cc: stable@vger.kernel.org
      Cc: linux-kernel@vger.kernel.org
      Signed-off-by: NVineet Gupta <vgupta@synopsys.com>
      f51e2f19
  7. 09 7月, 2015 5 次提交
    • V
      ARC: slightly refactor macros for boot logging · b631788a
      Vineet Gupta 提交于
      Signed-off-by: NVineet Gupta <vgupta@synopsys.com>
      b631788a
    • V
      ARC: Add llock/scond to futex backend · 9138d413
      Vineet Gupta 提交于
      Signed-off-by: NVineet Gupta <vgupta@synopsys.com>
      9138d413
    • J
      arc:irqchip: prepare for drivers/irqchip/irqchip.h removal · 70d93d89
      Joël Porquet 提交于
      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: NJoel Porquet <joel@porquet.org>
      Signed-off-by: NVineet Gupta <vgupta@synopsys.com>
      70d93d89
    • V
      ARC: Make ARC bitops "safer" (add anti-optimization) · 80f42084
      Vineet Gupta 提交于
      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: NNoam Camus <noamc@ezchip.com>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: NVineet Gupta <vgupta@synopsys.com>
      80f42084
    • A
      ARCv2: [axs103] bump CPU frequency from 75 to 90 MHZ · e2fc61f3
      Alexey Brodkin 提交于
      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: NAlexey Brodkin <abrodkin@synopsys.com>
      Cc: arc-linux-dev@synopsys.com
      e2fc61f3
  8. 06 7月, 2015 7 次提交
    • V
    • V
      ARCv2: intc: IDU: support irq affinity · 83ce3e6f
      Vineet Gupta 提交于
      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: NVineet Gupta <vgupta@synopsys.com>
      83ce3e6f
    • V
      ARC: fix unused var wanring · bccea41e
      Vineet Gupta 提交于
      Fixes: 9bf39ab2 ("vfs: add file_path() helper")
      Signed-off-by: NVineet Gupta <vgupta@synopsys.com>
      bccea41e
    • V
      ARC: Don't memzero twice in dma_alloc_coherent for __GFP_ZERO · f718c2ef
      Vineet Gupta 提交于
      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: NVineet Gupta <vgupta@synopsys.com>
      f718c2ef
    • V
      ARC: Override toplevel default -O2 with -O3 · 97709069
      Vineet Gupta 提交于
      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: NMichal Marek <mmarek@suse.cz>
      Cc: Geert Uytterhoeven <geert@linux-m68k.org>
      Cc: stable@vger.kernel.org # 3.16+
      Signed-off-by: NVineet Gupta <vgupta@synopsys.com>
      97709069
    • A
      ARCv2: guard SLC DMA ops with spinlock · b607eddd
      Alexey Brodkin 提交于
      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: NAlexey Brodkin <abrodkin@synopsys.com>
      Cc: arc-linux-dev@synopsys.com
      Signed-off-by: NVineet Gupta <vgupta@synopsys.com>
      b607eddd
    • V
  9. 01 7月, 2015 1 次提交
  10. 28 6月, 2015 2 次提交
  11. 25 6月, 2015 12 次提交
  12. 24 6月, 2015 1 次提交
  13. 22 6月, 2015 1 次提交