1. 24 7月, 2016 1 次提交
  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. 01 4月, 2015 1 次提交
  4. 22 2月, 2011 1 次提交
  5. 22 4月, 2009 1 次提交
  6. 11 1月, 2009 1 次提交
    • M
      MIPS: make cp0 counter clocksource/event usable as fallback. · 779e7d41
      Manuel Lauss 提交于
      The current mips clock build infrastructure lets a system only use
      either the MIPS cp0 counter or a SoC specific timer as a clocksource /
      clockevent device.
      
      This patch renames the core cp0 counter clocksource / clockevent functions
      from mips_* to r4k_* and updates the wrappers in asm-mips/time.h to
      call these renamed functions instead.
      
      Chips which can detect whether it is safe to use a chip-specific timer
      can now fall back on the cp0 counter if necessary and possible
      (e.g. Alchemy with a follow-on patch).
      
      Existing behaviour is not changed in any way.
      Signed-off-by: NManuel Lauss <mano@roarinelk.homelinux.net>
      Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      779e7d41
  7. 21 11月, 2008 1 次提交
  8. 12 3月, 2008 1 次提交
  9. 01 12月, 2007 1 次提交
  10. 27 11月, 2007 1 次提交