1. 06 3月, 2017 1 次提交
    • V
      ARC: get rate from clk driver instead of reading device tree · 7f35144c
      Vlad Zakharov 提交于
      We were reading clock rate directly from device tree "clock-frequency"
      property of corresponding clock node in show_cpuinfo function.
      
      Such approach is correct only in case cpu is always clocked by
      "fixed-clock". If we use clock driver that allows rate to be changed
      this won't work as rate may change during the time or even
      "clock-frequency" property may not be presented at all.
      
      So this commit replaces reading device tree with getting rate from clock
      driver. This approach is much more flexible and will work for both fixed
      and mutable clocks.
      Signed-off-by: NVlad Zakharov <vzakhar@synopsys.com>
      Signed-off-by: NVineet Gupta <vgupta@synopsys.com>
      7f35144c
  2. 01 12月, 2016 2 次提交
  3. 29 10月, 2016 4 次提交
    • V
      ARC: boot log: refactor cpu name/release printing · d975cbc8
      Vineet Gupta 提交于
      The motivation is to identify ARC750 vs. ARC770 (we currently print
      generic "ARC700").
      
      A given ARC700 release could be 750 or 770, with same ARCNUM (or family
      identifier which is unfortunate). The existing arc_cpu_tbl[] kept a single
      concatenated string for core name and release which thus doesn't work
      for 750 vs. 770 identification.
      
      So split this into 2 tables, one with core names and other with release.
      And while we are at it, get rid of the range checking for family numbers.
      We just document the known to exist cores running Linux and ditch
      others.
      
      With this in place, we add detection of ARC750 which is
       - cores 0x33 and before
       - cores 0x34 and later with MMUv2
      Signed-off-by: NVineet Gupta <vgupta@synopsys.com>
      d975cbc8
    • V
      ARC: boot log: don't assume SWAPE instruction support · a024fd9b
      Vineet Gupta 提交于
      This came to light when helping a customer with oldish ARC750 core who
      were getting instruction errors because of lack of SWAPE but boot log
      was incorrectly printing it as being present
      Signed-off-by: NVineet Gupta <vgupta@synopsys.com>
      a024fd9b
    • V
      ARC: boot log: refactor printing abt features not captured in BCRs · 73e284d2
      Vineet Gupta 提交于
      On older arc700 cores, some of the features configured were not present
      in Build config registers. To print about them at boot, we just use the
      Kconfig option i.e. whether linux is built to use them or not.
      So yes this seems bogus, but what else can be done. Moreover if linux is
      booting with these enabled, then the Kconfig info is a good indicator
      anyways.
      
      Over time these "hacks" accumulated in read_arc_build_cfg_regs() as well
      as arc_cpu_mumbojumbo(). so refactor and move all of those in a single
      place: read_arc_build_cfg_regs(). This causes some code redcution too:
      
      | bloat-o-meter2 arch/arc/kernel/setup.o.0 arch/arc/kernel/setup.o.1
      | add/remove: 0/0 grow/shrink: 2/1 up/down: 64/-132 (-68)
      | function                                     old     new   delta
      | setup_processor                              610     670     +60
      | cpuinfo_arc700                                76      80      +4
      | arc_cpu_mumbojumbo                           752     620    -132
      Signed-off-by: NVineet Gupta <vgupta@synopsys.com>
      73e284d2
    • V
      ARCv2: boot log: print IOC exists as well as enabled status · 711c1f26
      Vineet Gupta 提交于
      Previously we would not print the case when IOC existed but was not
      enabled.
      
      And while at it, reduce one line off boot printing by consolidating
      the Peripheral address space and IO-Coherency which in a way
      applies to them
      Signed-off-by: NVineet Gupta <vgupta@synopsys.com>
      711c1f26
  4. 20 10月, 2016 1 次提交
    • N
      ARC: Adjust cpuinfo for non-continuous cpu ids · 3da43104
      Noam Camus 提交于
      num_possible_cpus() returns how many CPUs may be present on system.
      However we want the highest possible CPU number.
      This may be differ in a sparsed possible CPUs map.
      Such map achived by OF for plat-eznps.
      
      For example if we have:
      possible cpus mask 0,3
      
      Then:
      num_possible_cpus() is equal 2
      	while
      nr_cpu_ids is equal 4.
      
      Only for value 4 c_start() will provide correct cpuinfo at procfs.
      Signed-off-by: NNoam Camus <noamc@ezchip.com>
      Signed-off-by: NVineet Gupta <vgupta@synopsys.com>
      3da43104
  5. 01 10月, 2016 2 次提交
  6. 20 8月, 2016 1 次提交
    • V
      ARC: Support syscall ABI v4 · 840c054f
      Vineet Gupta 提交于
      The syscall ABI includes the gcc functional calling ABI since a syscall
      implies userland caller and kernel callee.
      
      The current gcc ABI (v3) for ARCv2 ISA required 64-bit data be passed in
      even-odd register pairs, (potentially punching reg holes when passing such
      values as args). This was partly driven by the fact that the double-word
      LDD/STD instructions in ARCv2 expect the register alignment and thus gcc
      forcing this avoids extra MOV at the cost of a few unused register (which we
      have plenty anyways).
      
      This however was rejected as part of upstreaming gcc port to HS. So the new
      ABI v4 doesn't enforce the even-odd reg restriction.
      
      Do note that for ARCompact ISA builds v3 and v4 are practically the same in
      terms of gcc code generation.
      
      In terms of change management, we infer the new ABI if gcc 6.x onwards
      is used for building the kernel.
      
      This also needs a stable backport to enable older kernels to work with
      new tools/user-space
      
      Cc: <stable@vger.kernel.org>
      Signed-off-by: NVineet Gupta <vgupta@synopsys.com>
      840c054f
  7. 14 7月, 2016 1 次提交
  8. 24 6月, 2016 1 次提交
  9. 30 5月, 2016 1 次提交
  10. 09 5月, 2016 3 次提交
  11. 19 3月, 2016 1 次提交
    • V
      ARCv2: ioremap: Support dynamic peripheral address space · deaf7565
      Vineet Gupta 提交于
      The peripheral address space is architectural address window which is
      uncached and typically used to wire up peripherals.
      
      For ARC700 cores (ARCompact ISA based) this was fixed to 1GB region
      0xC000_0000 - 0xFFFF_FFFF.
      
      For ARCv2 based HS38 cores the start address is flexible and can be
      0xC, 0xD, 0xE, 0xF 000_000 by programming AUX_NON_VOLATILE_LIMIT reg
      (typically done in bootloader)
      
      Further in cas of PAE, the physical address can extend beyond 4GB so
      need to confine this check, otherwise all pages beyond 4GB will be
      treated as uncached
      Signed-off-by: NVineet Gupta <vgupta@synopsys.com>
      deaf7565
  12. 17 3月, 2016 1 次提交
  13. 15 3月, 2016 1 次提交
  14. 18 2月, 2016 2 次提交
  15. 29 1月, 2016 2 次提交
  16. 17 12月, 2015 1 次提交
    • V
      ARC: dw2 unwind: Reinstante unwinding out of modules · bc79c9a7
      Vineet Gupta 提交于
      The fix which removed linear searching of dwarf (because binary lookup
      data always exists) missed out on the fact that modules don't get the
      binary lookup tables info. This caused unwinding out of modules to stop
      working.
      
      So add binary lookup header setup (equivalent of eh_frame_hdr setup) to
      modules as well.
      
      While at it, confine the header setup to within unwinder code,
      reducing one API exposed out of unwinder code.
      
      Fixes: 2e22502c ARC: dw2 unwind: Remove falllback linear search thru FDE entries
      Cc: <stable@vger.kernel.org>
      Signed-off-by: NVineet Gupta <vgupta@synopsys.com>
      bc79c9a7
  17. 28 10月, 2015 1 次提交
    • V
      ARC: smp: Introduce smp hook @init_early_smp for Master core · e55af4da
      Vineet Gupta 提交于
      This adds a platform agnostic early SMP init hook which is called on
      Master core before calling setup_processor()
      
        setup_arch()
           smp_init_cpus()
               smp_ops.init_early_smp()
           ...
           setup_processor()
      
      How this helps:
       - Used for one time init of certain SMP centric IP blocks, before
         calling setup_processor() which probes various bits of core,
         possibly including this block
      
       - Currently platforms need to call this IP block init from their
         init routines, which doesn't make sense as this is specific to ARC
         core and not platform and otherwise requires copy/paste in all
         (and hence a possible point of failure)
      
      e.g. MCIP init is called from 2 platforms currently (axs10x and sim)
      which will go away once we have this.
      
      This change only adds the hooks but they are empty for now. Next commit
      will populate them and remove the explicit init calls from platforms.
      Signed-off-by: NVineet Gupta <vgupta@synopsys.com>
      e55af4da
  18. 17 10月, 2015 1 次提交
  19. 04 8月, 2015 1 次提交
  20. 03 8月, 2015 1 次提交
  21. 13 7月, 2015 1 次提交
  22. 09 7月, 2015 1 次提交
  23. 22 6月, 2015 4 次提交
  24. 19 6月, 2015 2 次提交
  25. 13 4月, 2015 1 次提交
  26. 02 2月, 2015 1 次提交
  27. 13 10月, 2014 1 次提交