mirror of
https://github.com/rd-stuffs/msm-4.14.git
synced 2025-02-20 11:45:48 +08:00
Sending synchronous IPIs to other CPUs involves spinning with preemption disabled in order to wait for each IPI to finish. Keeping preemption off for long periods of time like this is bad for system jitter, not to mention the perf event IPIs are sent and flushed one at a time for each event for each CPU rather than all at once for all the CPUs. Since the way perf events are currently read is quite naive, rewrite it to make it exploit parallelism and go much faster. IPIs for reading each perf event are now sent to all CPUs asynchronously so that each CPU can work on reading the events in parallel, and the dispatching CPU now sleeps rather than spins when waiting for the IPIs to finish. Before the dispatching CPU starts waiting though, it works on reading events for itself and then reading events which can be read from any CPU in order to derive further parallelism, and then waits for the IPIs to finish afterwards if they haven't already. Furthermore, there's now only one IPI sent to read all of a CPU's events rather than an IPI sent for reading each event, which significantly speeds up the event reads and reduces the number of IPIs sent. This also checks for active SCM calls on a per-CPU basis rather than a global basis so that unrelated CPUs don't get their counter reads skipped and so that some CPUs can still receive fresh counter readings. Overall, this makes the memlat driver much faster and more efficient, and eliminates significant system jitter previously caused by IPI abuse. Change-Id: I238c4e57f672a0337e2377c8fd38d0f6a1dbc2d0 Signed-off-by: Sultan Alsawaf <sultan@kerneltoast.com> Signed-off-by: Richard Raya <rdxzv.dev@gmail.com>
…
Merge branch 'deprecated/android-4.14-stable' of https://android.googlesource.com/kernel/common into HEAD
Merge tag 'LA.UM.9.1.r1-15900.01-SMxxx0.QSSI14.0' of https://git.codelinaro.org/clo/la/platform/vendor/opensource/audio-kernel into HEAD
…
…
…
…
…
…
Linux kernel ============ This file was moved to Documentation/admin-guide/README.rst Please notice that there are several guides for kernel developers and users. These guides can be rendered in a number of formats, like HTML and PDF. In order to build the documentation, use ``make htmldocs`` or ``make pdfdocs``. There are various text files in the Documentation/ subdirectory, several of them using the Restructured Text markup notation. See Documentation/00-INDEX for a list of what is contained in each file. Please read the Documentation/process/changes.rst file, as it contains the requirements for building and running the kernel, and information about the problems which may result by upgrading your kernel.
Description
Languages
C
98.1%
Assembly
1.2%
Makefile
0.3%