1. 28 6月, 2016 1 次提交
    • D
      clocksource/drivers/mips-gic-timer: Convert init function to return error · d8152bf8
      Daniel Lezcano 提交于
      The init functions do not return any error. They behave as the following:
      
        - panic, thus leading to a kernel crash while another timer may work and
             make the system boot up correctly
      
        or
      
        - print an error and let the caller unaware if the state of the system
      
      Change that by converting the init functions to return an error conforming
      to the CLOCKSOURCE_OF_RET prototype.
      
      Proper error handling (rollback, errno value) will be changed later case
      by case, thus this change just return back an error or success in the init
      function.
      Signed-off-by: NDaniel Lezcano <daniel.lezcano@linaro.org>
      d8152bf8
  2. 11 11月, 2015 1 次提交
    • A
      MIPS: VDSO: Add implementations of gettimeofday() and clock_gettime() · a7f4df4e
      Alex Smith 提交于
      Add user-mode implementations of gettimeofday() and clock_gettime() to
      the VDSO. This is currently usable with 2 clocksources: the CP0 count
      register, which is accessible to user-mode via RDHWR on R2 and later
      cores, or the MIPS Global Interrupt Controller (GIC) timer, which
      provides a "user-mode visible" section containing a mirror of its
      counter registers. This section must be mapped into user memory, which
      is done below the VDSO data page.
      
      When a supported clocksource is not in use, the VDSO functions will
      return -ENOSYS, which causes libc to fall back on the standard syscall
      path.
      
      When support for neither of these clocksources is compiled into the
      kernel at all, the VDSO still provides clock_gettime(), as the coarse
      realtime/monotonic clocks can still be implemented. However,
      gettimeofday() is not provided in this case as nothing can be done
      without a suitable clocksource. This causes the symbol lookup to fail
      in libc and it will then always use the standard syscall path.
      
      This patch includes a workaround for a bug in QEMU which results in
      RDHWR on the CP0 count register always returning a constant (incorrect)
      value. A fix for this has been submitted, and the workaround can be
      removed after the fix has been in stable releases for a reasonable
      amount of time.
      
      A simple performance test which calls gettimeofday() 1000 times in a
      loop and calculates the average execution time gives the following
      results on a Malta + I6400 (running at 20MHz):
      
       - Syscall:    ~31000 ns
       - VDSO (GIC): ~15000 ns
       - VDSO (CP0): ~9500 ns
      
      [markos.chandras@imgtec.com:
      - Minor code re-arrangements in order for mappings to be made
      in the order they appear to the process' address space.
      - Move do_{monotonic, realtime} outside of the MIPS_CLOCK_VSYSCALL ifdef
      - Use gic_get_usm_range so we can do the GIC mapping in the
      arch/mips/kernel/vdso instead of the GIC irqchip driver]
      Signed-off-by: NAlex Smith <alex.smith@imgtec.com>
      Signed-off-by: NMarkos Chandras <markos.chandras@imgtec.com>
      Cc: linux-kernel@vger.kernel.org
      Cc: linux-mips@linux-mips.org
      Patchwork: https://patchwork.linux-mips.org/patch/11338/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      a7f4df4e
  3. 03 9月, 2015 4 次提交
  4. 10 8月, 2015 1 次提交
  5. 01 4月, 2015 1 次提交
    • A
      CLOCKSOURCE: mips-gic: Allow GIC clock to be specified in device-tree · 5b4e8453
      Andrew Bresticker 提交于
      As an alternative to the "clock-frequency" property, allow the GIC
      timer operating clock to be specified in the device-tree instead.
      This is useful on systems which use common clock or where the GIC
      is not fixed to a particular frequency and is instead, for example,
      derived from the CPU clock.
      Signed-off-by: NAndrew Bresticker <abrestic@chromium.org>
      Cc: James Hogan <james.hogan@imgtec.com>
      Cc: Rob Herring <robh+dt@kernel.org>
      Cc: Pawel Moll <pawel.moll@arm.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Ian Campbell <ijc+devicetree@hellion.org.uk>
      Cc: Kumar Gala <galak@codeaurora.org>
      Cc: Daniel Lezcano <daniel.lezcano@linaro.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: devicetree@vger.kernel.org
      Cc: linux-mips@linux-mips.org
      Cc: linux-kernel@vger.kernel.org
      Patchwork: https://patchwork.linux-mips.org/patch/9309/
      5b4e8453
  6. 31 3月, 2015 1 次提交
  7. 24 11月, 2014 12 次提交
  8. 09 5月, 2013 1 次提交
    • S
      MIPS: Refactor GIC clocksource code. · dfa762e1
      Steven J. Hill 提交于
      Reorganize some of the GIC clocksource driver code. Below is a list of
      the various changes.
      
        * No longer select CSRC_GIC by default for Malta platform.
        * Limit choice for either the GIC or R4K clocksource, not both.
        * Change location in Makefile.
        * Created new 'gic_read_count' function in common 'irq-gic.c' file.
        * Change 'git_hpt_read' function in 'csrc-gic.c' to use new function.
        * Surround GIC specific code in Malta platform code with #ifdef's.
        * Only initialize the GIC clocksource if it was selected. Original
          code called it unconditionally if a GIC was found.
      Signed-off-by: NSteven J. Hill <Steven.Hill@imgtec.com>
      dfa762e1
  9. 17 2月, 2013 1 次提交