commit | 1ec3401a7d40d62b215d99172b1d07fae0f35f58 | [log] [tgz] |
---|---|---|
author | Arve Hjønnevåg <arve@android.com> | Fri Nov 17 10:21:03 2023 -0800 |
committer | Arve Hjønnevåg <arve@android.com> | Sat Mar 30 00:29:18 2024 +0000 |
tree | 41df6e50721ecd829162a448c191d6ec8e1efb8b | |
parent | 53039a27a5f9bca3f38b911dcca0e3c245a4e793 [diff] |
dev: timer: x86_generic: Fix divisor calculation The old code incorrectly claimed the timer could handle a 55 ms timer, and clamped the millisecond value to 55 before converting from ms to pit timer ticks. The converted value overflow when then clamped to 16 bits resulting in a timer request less than 100 microseconds into the future instead of 55 millioseconds. This resulted in 100% cpu usage while waiting for a timer 55ms or longer. Improve the precision of the conversion by converting directly from nano seconds to pit timer ticks instead of first converting to milliseconds. Then clamp the value after the conversion instead where the boundary is more clear. Also remove code that starts a periodic timer on boot that had no apparent purpose. Bug: 311709679 Change-Id: Ia2cff162b9bf2359973356a5108de87ec860d61b
The LK embedded kernel. An SMP-aware kernel designed for small systems.
See https://github.com/littlekernel/lk for the latest version.
See https://github.com/littlekernel/lk/wiki for documentation.
This will get you a interactive prompt into LK which is running in qemu arm machine ‘virt’ emulation. type ‘help’ for commands.
note 1: for ubuntu: sudo apt-get install gcc-arm-none-eabi or fetch a prebuilt toolchain from http://newos.org/toolchains/arm-eabi-5.3.0-Linux-x86_64.tar.xz