<feed xmlns='http://www.w3.org/2005/Atom'>
<title>android_kernel_zuk_msm8996.git/kernel, branch master</title>
<subtitle>null
</subtitle>
<link rel='alternate' type='text/html' href='http://git.compromyse.xyz/android/android_kernel_zuk_msm8996.git/'/>
<entry>
<title>Merge remote-tracking branch 'msm8998/lineage-20'</title>
<updated>2024-10-13T08:06:36+00:00</updated>
<author>
<name>Raghuram Subramani</name>
<email>raghus2247@gmail.com</email>
</author>
<published>2024-10-13T08:06:36+00:00</published>
<link rel='alternate' type='text/html' href='http://git.compromyse.xyz/android/android_kernel_zuk_msm8996.git/commit/?id=6a21d8496b038d1e71fd6a9bd8a95880135665d9'/>
<id>6a21d8496b038d1e71fd6a9bd8a95880135665d9</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>sched/fair Remove duplicate walt_cpu_high_irqload call</title>
<updated>2024-03-06T11:05:33+00:00</updated>
<author>
<name>Alexander Grund</name>
<email>flamefire89@gmail.com</email>
</author>
<published>2024-01-13T13:20:28+00:00</published>
<link rel='alternate' type='text/html' href='http://git.compromyse.xyz/android/android_kernel_zuk_msm8996.git/commit/?id=730045698af7aca1b622d9147d6ac66eb615c2ee'/>
<id>730045698af7aca1b622d9147d6ac66eb615c2ee</id>
<content type='text'>
This is already done a few lines up.

Change-Id: Ifeda223d728bfc4e107407418b11303f7819e277
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This is already done a few lines up.

Change-Id: Ifeda223d728bfc4e107407418b11303f7819e277
</pre>
</div>
</content>
</entry>
<entry>
<title>sched/fair: Remove leftover sched_clock_cpu call</title>
<updated>2024-03-06T11:05:28+00:00</updated>
<author>
<name>Alexander Grund</name>
<email>flamefire89@gmail.com</email>
</author>
<published>2024-01-13T11:57:54+00:00</published>
<link rel='alternate' type='text/html' href='http://git.compromyse.xyz/android/android_kernel_zuk_msm8996.git/commit/?id=dcbb0845252a124a6a753002f3ecec81b59fac8d'/>
<id>dcbb0845252a124a6a753002f3ecec81b59fac8d</id>
<content type='text'>
The usage of `now` in __refill_cfs_bandwidth_runtime was removed in
b933e4d37bc023d27c7394626669bae0a201da52 (sched/fair: Fix low cpu usage with high throttling by removing expiration of cpu-local slices)

Remove the variable and the call setting it.

Change-Id: I1e98ccd2c2298d269b9b447a6e5c79d61518c66e
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The usage of `now` in __refill_cfs_bandwidth_runtime was removed in
b933e4d37bc023d27c7394626669bae0a201da52 (sched/fair: Fix low cpu usage with high throttling by removing expiration of cpu-local slices)

Remove the variable and the call setting it.

Change-Id: I1e98ccd2c2298d269b9b447a6e5c79d61518c66e
</pre>
</div>
</content>
</entry>
<entry>
<title>CHROMIUM: remove Android's cgroup generic permissions checks</title>
<updated>2024-01-10T15:40:04+00:00</updated>
<author>
<name>Dmitry Torokhov</name>
<email>dtor@chromium.org</email>
</author>
<published>2016-10-06T22:53:38+00:00</published>
<link rel='alternate' type='text/html' href='http://git.compromyse.xyz/android/android_kernel_zuk_msm8996.git/commit/?id=a3591a235c89dbc2e0bc03533fb538f6d2aa883b'/>
<id>a3591a235c89dbc2e0bc03533fb538f6d2aa883b</id>
<content type='text'>
The implementation is utterly broken, resulting in all processes being
allows to move tasks between sets (as long as they have access to the
"tasks" attribute), and upstream is heading towards checking only
capability anyway, so let's get rid of this code.

BUG=b:31790445,chromium:647994
TEST=Boot android container, examine logcat

Change-Id: I2f780a5992c34e52a8f2d0b3557fc9d490da2779
Signed-off-by: Dmitry Torokhov &lt;dtor@chromium.org&gt;
Reviewed-on: https://chromium-review.googlesource.com/394967
Reviewed-by: Ricky Zhou &lt;rickyz@chromium.org&gt;
Reviewed-by: John Stultz &lt;john.stultz@linaro.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The implementation is utterly broken, resulting in all processes being
allows to move tasks between sets (as long as they have access to the
"tasks" attribute), and upstream is heading towards checking only
capability anyway, so let's get rid of this code.

BUG=b:31790445,chromium:647994
TEST=Boot android container, examine logcat

Change-Id: I2f780a5992c34e52a8f2d0b3557fc9d490da2779
Signed-off-by: Dmitry Torokhov &lt;dtor@chromium.org&gt;
Reviewed-on: https://chromium-review.googlesource.com/394967
Reviewed-by: Ricky Zhou &lt;rickyz@chromium.org&gt;
Reviewed-by: John Stultz &lt;john.stultz@linaro.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Revert "sched: tune: Unconditionally allow attach"</title>
<updated>2024-01-10T15:39:58+00:00</updated>
<author>
<name>Bruno Martins</name>
<email>bgcngm@gmail.com</email>
</author>
<published>2024-01-10T15:20:06+00:00</published>
<link rel='alternate' type='text/html' href='http://git.compromyse.xyz/android/android_kernel_zuk_msm8996.git/commit/?id=5e0c41643bbb4d0290ac383f45fdaf684a907f74'/>
<id>5e0c41643bbb4d0290ac383f45fdaf684a907f74</id>
<content type='text'>
This reverts commit f39d0b496aa4e13cbcf23bdf3c22d356bd783b9e.

It is no longer applicable, allow_attach cgroup was ditched upstream.

Change-Id: Ib370171e93a5cb0c9993065b98de2073c905229c
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This reverts commit f39d0b496aa4e13cbcf23bdf3c22d356bd783b9e.

It is no longer applicable, allow_attach cgroup was ditched upstream.

Change-Id: Ib370171e93a5cb0c9993065b98de2073c905229c
</pre>
</div>
</content>
</entry>
<entry>
<title>bpf: add BPF_J{LT,LE,SLT,SLE} instructions</title>
<updated>2024-01-10T14:16:43+00:00</updated>
<author>
<name>Daniel Borkmann</name>
<email>daniel@iogearbox.net</email>
</author>
<published>2017-08-09T23:39:55+00:00</published>
<link rel='alternate' type='text/html' href='http://git.compromyse.xyz/android/android_kernel_zuk_msm8996.git/commit/?id=5ca5889b971ff65cd6843abb03d763e2886cedeb'/>
<id>5ca5889b971ff65cd6843abb03d763e2886cedeb</id>
<content type='text'>
Currently, eBPF only understands BPF_JGT (&gt;), BPF_JGE (&gt;=),
BPF_JSGT (s&gt;), BPF_JSGE (s&gt;=) instructions, this means that
particularly *JLT/*JLE counterparts involving immediates need
to be rewritten from e.g. X &lt; [IMM] by swapping arguments into
[IMM] &gt; X, meaning the immediate first is required to be loaded
into a register Y := [IMM], such that then we can compare with
Y &gt; X. Note that the destination operand is always required to
be a register.

This has the downside of having unnecessarily increased register
pressure, meaning complex program would need to spill other
registers temporarily to stack in order to obtain an unused
register for the [IMM]. Loading to registers will thus also
affect state pruning since we need to account for that register
use and potentially those registers that had to be spilled/filled
again. As a consequence slightly more stack space might have
been used due to spilling, and BPF programs are a bit longer
due to extra code involving the register load and potentially
required spill/fills.

Thus, add BPF_JLT (&lt;), BPF_JLE (&lt;=), BPF_JSLT (s&lt;), BPF_JSLE (s&lt;=)
counterparts to the eBPF instruction set. Modifying LLVM to
remove the NegateCC() workaround in a PoC patch at [1] and
allowing it to also emit the new instructions resulted in
cilium's BPF programs that are injected into the fast-path to
have a reduced program length in the range of 2-3% (e.g.
accumulated main and tail call sections from one of the object
file reduced from 4864 to 4729 insns), reduced complexity in
the range of 10-30% (e.g. accumulated sections reduced in one
of the cases from 116432 to 88428 insns), and reduced stack
usage in the range of 1-5% (e.g. accumulated sections from one
of the object files reduced from 824 to 784b).

The modification for LLVM will be incorporated in a backwards
compatible way. Plan is for LLVM to have i) a target specific
option to offer a possibility to explicitly enable the extension
by the user (as we have with -m target specific extensions today
for various CPU insns), and ii) have the kernel checked for
presence of the extensions and enable them transparently when
the user is selecting more aggressive options such as -march=native
in a bpf target context. (Other frontends generating BPF byte
code, e.g. ply can probe the kernel directly for its code
generation.)

  [1] https://github.com/borkmann/llvm/tree/bpf-insns

Change-Id: Ic56500aaeaf5f3ebdfda094ad6ef4666c82e18c5
Signed-off-by: Daniel Borkmann &lt;daniel@iogearbox.net&gt;
Acked-by: Alexei Starovoitov &lt;ast@kernel.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Currently, eBPF only understands BPF_JGT (&gt;), BPF_JGE (&gt;=),
BPF_JSGT (s&gt;), BPF_JSGE (s&gt;=) instructions, this means that
particularly *JLT/*JLE counterparts involving immediates need
to be rewritten from e.g. X &lt; [IMM] by swapping arguments into
[IMM] &gt; X, meaning the immediate first is required to be loaded
into a register Y := [IMM], such that then we can compare with
Y &gt; X. Note that the destination operand is always required to
be a register.

This has the downside of having unnecessarily increased register
pressure, meaning complex program would need to spill other
registers temporarily to stack in order to obtain an unused
register for the [IMM]. Loading to registers will thus also
affect state pruning since we need to account for that register
use and potentially those registers that had to be spilled/filled
again. As a consequence slightly more stack space might have
been used due to spilling, and BPF programs are a bit longer
due to extra code involving the register load and potentially
required spill/fills.

Thus, add BPF_JLT (&lt;), BPF_JLE (&lt;=), BPF_JSLT (s&lt;), BPF_JSLE (s&lt;=)
counterparts to the eBPF instruction set. Modifying LLVM to
remove the NegateCC() workaround in a PoC patch at [1] and
allowing it to also emit the new instructions resulted in
cilium's BPF programs that are injected into the fast-path to
have a reduced program length in the range of 2-3% (e.g.
accumulated main and tail call sections from one of the object
file reduced from 4864 to 4729 insns), reduced complexity in
the range of 10-30% (e.g. accumulated sections reduced in one
of the cases from 116432 to 88428 insns), and reduced stack
usage in the range of 1-5% (e.g. accumulated sections from one
of the object files reduced from 824 to 784b).

The modification for LLVM will be incorporated in a backwards
compatible way. Plan is for LLVM to have i) a target specific
option to offer a possibility to explicitly enable the extension
by the user (as we have with -m target specific extensions today
for various CPU insns), and ii) have the kernel checked for
presence of the extensions and enable them transparently when
the user is selecting more aggressive options such as -march=native
in a bpf target context. (Other frontends generating BPF byte
code, e.g. ply can probe the kernel directly for its code
generation.)

  [1] https://github.com/borkmann/llvm/tree/bpf-insns

Change-Id: Ic56500aaeaf5f3ebdfda094ad6ef4666c82e18c5
Signed-off-by: Daniel Borkmann &lt;daniel@iogearbox.net&gt;
Acked-by: Alexei Starovoitov &lt;ast@kernel.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>bpf: free up BPF_JMP | BPF_CALL | BPF_X opcode</title>
<updated>2024-01-10T14:16:43+00:00</updated>
<author>
<name>Alexei Starovoitov</name>
<email>ast@fb.com</email>
</author>
<published>2017-05-30T20:31:27+00:00</published>
<link rel='alternate' type='text/html' href='http://git.compromyse.xyz/android/android_kernel_zuk_msm8996.git/commit/?id=29da450cb1a0e7215d3136320daa461ea28fd628'/>
<id>29da450cb1a0e7215d3136320daa461ea28fd628</id>
<content type='text'>
free up BPF_JMP | BPF_CALL | BPF_X opcode to be used by actual
indirect call by register and use kernel internal opcode to
mark call instruction into bpf_tail_call() helper.

Change-Id: I1a45b8e3c13848c9689ce288d4862935ede97fa7
Signed-off-by: Alexei Starovoitov &lt;ast@kernel.org&gt;
Acked-by: Daniel Borkmann &lt;daniel@iogearbox.net&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
free up BPF_JMP | BPF_CALL | BPF_X opcode to be used by actual
indirect call by register and use kernel internal opcode to
mark call instruction into bpf_tail_call() helper.

Change-Id: I1a45b8e3c13848c9689ce288d4862935ede97fa7
Signed-off-by: Alexei Starovoitov &lt;ast@kernel.org&gt;
Acked-by: Daniel Borkmann &lt;daniel@iogearbox.net&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>bpf: remove stubs for cBPF from arch code</title>
<updated>2024-01-10T14:16:43+00:00</updated>
<author>
<name>Daniel Borkmann</name>
<email>daniel@iogearbox.net</email>
</author>
<published>2017-02-16T21:24:49+00:00</published>
<link rel='alternate' type='text/html' href='http://git.compromyse.xyz/android/android_kernel_zuk_msm8996.git/commit/?id=1d2bd276c33545f77d64219b555cfed6097102bb'/>
<id>1d2bd276c33545f77d64219b555cfed6097102bb</id>
<content type='text'>
Remove the dummy bpf_jit_compile() stubs for eBPF JITs and make
that a single __weak function in the core that can be overridden
similarly to the eBPF one. Also remove stale pr_err() mentions
of bpf_jit_compile.

Change-Id: Iac221c09e9ae0879acdd7064d710c4f7cb8f478d
Signed-off-by: Daniel Borkmann &lt;daniel@iogearbox.net&gt;
Acked-by: Alexei Starovoitov &lt;ast@kernel.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Remove the dummy bpf_jit_compile() stubs for eBPF JITs and make
that a single __weak function in the core that can be overridden
similarly to the eBPF one. Also remove stale pr_err() mentions
of bpf_jit_compile.

Change-Id: Iac221c09e9ae0879acdd7064d710c4f7cb8f478d
Signed-off-by: Daniel Borkmann &lt;daniel@iogearbox.net&gt;
Acked-by: Alexei Starovoitov &lt;ast@kernel.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>tracing: Avoid adding tracer option before update_tracer_options</title>
<updated>2024-01-06T11:14:57+00:00</updated>
<author>
<name>Mark-PK Tsai</name>
<email>mark-pk.tsai@mediatek.com</email>
</author>
<published>2022-04-26T12:24:06+00:00</published>
<link rel='alternate' type='text/html' href='http://git.compromyse.xyz/android/android_kernel_zuk_msm8996.git/commit/?id=c39aaece91aacc6d9f64dbfb3b0e83cd37db9476'/>
<id>c39aaece91aacc6d9f64dbfb3b0e83cd37db9476</id>
<content type='text'>
[ Upstream commit ef9188bcc6ca1d8a2ad83e826b548e6820721061 ]

To prepare for support asynchronous tracer_init_tracefs initcall,
avoid calling create_trace_option_files before __update_tracer_options.
Otherwise, create_trace_option_files will show warning because
some tracers in trace_types list are already in tr-&gt;topts.

For example, hwlat_tracer call register_tracer in late_initcall,
and global_trace.dir is already created in tracing_init_dentry,
hwlat_tracer will be put into tr-&gt;topts.
Then if the __update_tracer_options is executed after hwlat_tracer
registered, create_trace_option_files find that hwlat_tracer is
already in tr-&gt;topts.

Link: https://lkml.kernel.org/r/20220426122407.17042-2-mark-pk.tsai@mediatek.com

Link: https://lore.kernel.org/lkml/20220322133339.GA32582@xsang-OptiPlex-9020/
Reported-by: kernel test robot &lt;oliver.sang@intel.com&gt;
Change-Id: Icaa5bcb097b421d2459b082644f84031e89ac88b
Signed-off-by: Mark-PK Tsai &lt;mark-pk.tsai@mediatek.com&gt;
Signed-off-by: Steven Rostedt (Google) &lt;rostedt@goodmis.org&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[ Upstream commit ef9188bcc6ca1d8a2ad83e826b548e6820721061 ]

To prepare for support asynchronous tracer_init_tracefs initcall,
avoid calling create_trace_option_files before __update_tracer_options.
Otherwise, create_trace_option_files will show warning because
some tracers in trace_types list are already in tr-&gt;topts.

For example, hwlat_tracer call register_tracer in late_initcall,
and global_trace.dir is already created in tracing_init_dentry,
hwlat_tracer will be put into tr-&gt;topts.
Then if the __update_tracer_options is executed after hwlat_tracer
registered, create_trace_option_files find that hwlat_tracer is
already in tr-&gt;topts.

Link: https://lkml.kernel.org/r/20220426122407.17042-2-mark-pk.tsai@mediatek.com

Link: https://lore.kernel.org/lkml/20220322133339.GA32582@xsang-OptiPlex-9020/
Reported-by: kernel test robot &lt;oliver.sang@intel.com&gt;
Change-Id: Icaa5bcb097b421d2459b082644f84031e89ac88b
Signed-off-by: Mark-PK Tsai &lt;mark-pk.tsai@mediatek.com&gt;
Signed-off-by: Steven Rostedt (Google) &lt;rostedt@goodmis.org&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>sched_getaffinity: don't assume 'cpumask_size()' is fully initialized</title>
<updated>2024-01-03T17:21:10+00:00</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2023-03-15T02:32:38+00:00</published>
<link rel='alternate' type='text/html' href='http://git.compromyse.xyz/android/android_kernel_zuk_msm8996.git/commit/?id=a44d6ad053b3cc8f3029620ff1e092ea885cc643'/>
<id>a44d6ad053b3cc8f3029620ff1e092ea885cc643</id>
<content type='text'>
[ Upstream commit 6015b1aca1a233379625385feb01dd014aca60b5 ]

The getaffinity() system call uses 'cpumask_size()' to decide how big
the CPU mask is - so far so good.  It is indeed the allocation size of a
cpumask.

But the code also assumes that the whole allocation is initialized
without actually doing so itself.  That's wrong, because we might have
fixed-size allocations (making copying and clearing more efficient), but
not all of it is then necessarily used if 'nr_cpu_ids' is smaller.

Having checked other users of 'cpumask_size()', they all seem to be ok,
either using it purely for the allocation size, or explicitly zeroing
the cpumask before using the size in bytes to copy it.

See for example the ublk_ctrl_get_queue_affinity() function that uses
the proper 'zalloc_cpumask_var()' to make sure that the whole mask is
cleared, whether the storage is on the stack or if it was an external
allocation.

Fix this by just zeroing the allocation before using it.  Do the same
for the compat version of sched_getaffinity(), which had the same logic.

Also, for consistency, make sched_getaffinity() use 'cpumask_bits()' to
access the bits.  For a cpumask_var_t, it ends up being a pointer to the
same data either way, but it's just a good idea to treat it like you
would a 'cpumask_t'.  The compat case already did that.

Reported-by: Ryan Roberts &lt;ryan.roberts@arm.com&gt;
Link: https://lore.kernel.org/lkml/7d026744-6bd6-6827-0471-b5e8eae0be3f@arm.com/
Cc: Yury Norov &lt;yury.norov@gmail.com&gt;
Change-Id: I60139451bd9e9a4b687f0f2097ac1b2813758c45
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
Signed-off-by: Ulrich Hecht &lt;uli+cip@fpond.eu&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[ Upstream commit 6015b1aca1a233379625385feb01dd014aca60b5 ]

The getaffinity() system call uses 'cpumask_size()' to decide how big
the CPU mask is - so far so good.  It is indeed the allocation size of a
cpumask.

But the code also assumes that the whole allocation is initialized
without actually doing so itself.  That's wrong, because we might have
fixed-size allocations (making copying and clearing more efficient), but
not all of it is then necessarily used if 'nr_cpu_ids' is smaller.

Having checked other users of 'cpumask_size()', they all seem to be ok,
either using it purely for the allocation size, or explicitly zeroing
the cpumask before using the size in bytes to copy it.

See for example the ublk_ctrl_get_queue_affinity() function that uses
the proper 'zalloc_cpumask_var()' to make sure that the whole mask is
cleared, whether the storage is on the stack or if it was an external
allocation.

Fix this by just zeroing the allocation before using it.  Do the same
for the compat version of sched_getaffinity(), which had the same logic.

Also, for consistency, make sched_getaffinity() use 'cpumask_bits()' to
access the bits.  For a cpumask_var_t, it ends up being a pointer to the
same data either way, but it's just a good idea to treat it like you
would a 'cpumask_t'.  The compat case already did that.

Reported-by: Ryan Roberts &lt;ryan.roberts@arm.com&gt;
Link: https://lore.kernel.org/lkml/7d026744-6bd6-6827-0471-b5e8eae0be3f@arm.com/
Cc: Yury Norov &lt;yury.norov@gmail.com&gt;
Change-Id: I60139451bd9e9a4b687f0f2097ac1b2813758c45
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
Signed-off-by: Ulrich Hecht &lt;uli+cip@fpond.eu&gt;
</pre>
</div>
</content>
</entry>
</feed>
