Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

introduce CO:RE enum readers and use them for scx_central #894

Merged
merged 14 commits into from
Nov 7, 2024

Conversation

etsal
Copy link
Contributor

@etsal etsal commented Nov 5, 2024

The values of kernel enums get hardcoded into the BPF scheduler at compile time, which possibly prevents us from deploying the compiled BPF program on kernels with modified values for these enums (as explained in #863). CO:RE methods provide a solution to this by allowing the scheduler to read enums at load time from the running kernel.

Introduce an scx_enums struct that is populated at runtime with the enum values from the running kernel, and replace hardcoded enum values in the code with accesses to that struct. This diff demonstrates how to do so in existing schedulers using scx_central as a proof of concept.

@etsal etsal requested a review from htejun November 5, 2024 16:30
struct scx_enums _scx_enum;

#define SCX_ENUM(name) \
(_scx_enum.SCX_##name)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This makes each enum access a memory dereference. If you make each enum a const volatile variable and set them from the userspace side during init, then the verifier will handle them as consts and we can init them as a part of the SCX_OPS_LOAD() or SCX_OPS_ATTACH().

For example, there can be const volatile u64 __SCX_ENQ_WAKEUP; which is initialized during load and then #define SCX_ENQ_WAKEUP __SCX_ENQ_WAKEUP would make it transparent for the scheduler implementations.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I tried setting it that way, but there was the issue where the userspace component didn't have access to the vmlinux.h definitions and so could not set the initial value of the variables. I tried including vmlinux.h and got a bunch of errors but they must have been due to improperly structuring the header includes - I will go back to that and update.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it's fine to fail loading if the enums are not available through BTF.

@etsal
Copy link
Contributor Author

etsal commented Nov 5, 2024

New version that sets all the enums before loading the scheduler. Two points:

  1. I removed the enums out of the struct just in case gathering them all into a struct prevented the verifier from turning them to consts.
  2. SCX_ENUM _INIT can be rolled into SCX_OPS_INIT if all the schedulers call SCX_ENUM_DEFINE() in their BPF program.


bool timer_pinned = true;
u64 nr_total, nr_locals, nr_queued, nr_lost_pids;
u64 nr_timers, nr_dispatches, nr_mismatches, nr_retries;
u64 nr_overflows;

SCX_ENUM_DEFINE();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

SCX_OPS_LOAD() already assumes UEI_DEFINE(), so adding another dependency is just fine. We can add e.g. SCX_COMMON_DEFINE() to make it easier.

Copy link
Contributor

@htejun htejun left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I left some minor comments but it's looking pretty good. Thanks. The userspace portion would need to be duplicated in scx_utils for rust scheds and it'd be nice to have a sanity check on BPF side so that we don't accidentally run with 0 for these enums.

("scx_enq_flags", "SCX_ENQ_REENQ"),
("scx_enq_flags", "SCX_ENQ_LAST"),
("scx_enq_flags", "SCX_ENQ_CLEAR_OPSS"),
("scx_enq_flags", "SCX_ENQ_DSQ_PRIQ"),
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It might be a bit more complicated but would it be worthwhile to make the script take enum type name only and enumerate all the members automatically?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That would make maintaining the autogen'ed files significantly easier, but I think it would be better to do it in a separate diff on top because this one is getting on the large side

@@ -46,6 +46,7 @@
* Copyright (c) 2022 David Vernet <[email protected]>
*/
#include <scx/common.bpf.h>
#include <scx/enums.bpf.h>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd make either common.bpf.h or compat.bpf.h include this file automatically.

@@ -13,6 +13,7 @@
#include <libgen.h>
#include <bpf/bpf.h>
#include <scx/common.h>
#include <scx/enums.h>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ditto.

@@ -55,9 +56,11 @@ int main(int argc, char **argv)
signal(SIGTERM, sigint_handler);
restart:
skel = SCX_OPS_OPEN(central_ops, scx_central);
SCX_ENUM_INIT(skel);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

And make this a part of SCX_OPS_OPEN().

* and run it from the root directory to update this file.
*/

const volatile u64 __SCX_OPS_NAME_LEN;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In case this file ends up being included in multiple compilation units, __weak may be useful.

@hodgesds
Copy link
Contributor

hodgesds commented Nov 6, 2024

It might be worth hooking up the script to generate the enums through meson as well. If this is purely for rust schedulers then having the bpf_builder generate the enum could also be rather nice

@etsal
Copy link
Contributor Author

etsal commented Nov 6, 2024

It might be worth hooking up the script to generate the enums through meson as well. If this is purely for rust schedulers then having the bpf_builder generate the enum could also be rather nice

I was thinking we can use this script the same way as scripts/gen_vmlinux_h, to explicitly "upgrade" the headers to a more recent version, and treating the headers as part of the repo instead of as a build artifact.

For Rust I manually generate enum generating lazy static BTF enum reads in src/compat.rs following how we currently import SCX_OPS_SWITCH_PARTIAL. This doesn't scale, but right now the only enums we really need on the userspace side are SCX_SLICE_DFL and SCX_SLICE_INF, so AFAICT it suffices for the time being.

@etsal
Copy link
Contributor Author

etsal commented Nov 6, 2024

I left some minor comments but it's looking pretty good. Thanks. The userspace portion would need to be duplicated in scx_utils for rust scheds and it'd be nice to have a sanity check on BPF side so that we don't accidentally run with 0 for these enums.

For the userspace side, it turns out we only need a couple enums - mostly SCX_SLICE_* macros. We could autogenerate all enum definitions for Rust - it would be a matter of generating a lazy_static! macro for each one - but as I said in the other comment, I am not sure if it is worth it.

Regarding the sanity check, we could add one specifically for SCX_SLICE_* and embed it in SCX_OPS_OPEN(). For the more general case do we want to distinguish between an enum that is explicitly 0 and one that is uninitialized? One way is to assume that 0 is an error and fix this if we get a false positive in the future.

@etsal
Copy link
Contributor Author

etsal commented Nov 6, 2024

Right now the Rust code requires including the new Enums struct with all the scx userspace enums, and the import_enums! macro used in scx_ops_open! to set the BPF-side enums. It would be nice if we could instead embed the set routine into the BPF skeleton so that scheduler author shouldn't have to ever interact with import_enums.

While we could also embed the userspace enum struct in the BPF skeleton, I think it is useful for the schedulers themselves. Right now we manually define in compat.rs a variable for each enum we want to use in userspace, so I think it's nice to provide all possible enums with a single struct.

Copy link
Contributor

@htejun htejun left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks great. Thanks!

@etsal etsal added this pull request to the merge queue Nov 7, 2024
Merged via the queue into sched-ext:main with commit b962ea8 Nov 7, 2024
21 checks passed
@etsal etsal deleted the core_enums branch November 7, 2024 02:30
JakeHillion added a commit to JakeHillion/scx that referenced this pull request Nov 20, 2024
9bdccdd Merge pull request sched-ext#943 from JakeHillion/pr943
b4b1879 Merge pull request sched-ext#947 from sirlucjan/scx_loader_update
f2384fe scx_loader: update docs
198f079 Merge pull request sched-ext#930 from hodgesds/topo-irq
41781fe scx_layered: Add netdev IRQ balancing node support
e30e5d8 scx_utils: Add netdev support
8c09ae2 Merge pull request sched-ext#942 from CachyOS/feat/loader-add-flash
c258199 replace goto with unrolled loop in antistall_set
d5d4f46 scx_loader: add scx_flash as supported scheduler
489ce8a Merge pull request sched-ext#939 from sched-ext/htejun/layered-updates
dbcd233 scx_layered: Work around verification failure in antistall_set() on old kernels
61f378c Merge pull request sched-ext#931 from multics69/lavd-osu
88c7d47 Merge pull request sched-ext#934 from sched-ext/htejun/layered-updates
aec9e86 Merge branch 'main' into htejun/layered-updates
10bf25a topology, scx_layered: Make --disable-topology handling more consistent
ff0e9c6 Merge pull request sched-ext#933 from hodgesds/layered-verifier-nested
1869dd8 scx_layered: Fix verifier issues on older kernels
68e1741 scx_layered: Use cached cpu_ctx->hi_fallback_dsq_id and cpu_ctx->cached_idx
827af0b scx_layered: Fix dsq_id indexing bugs
f2c9e7f scx_layered: Don't use tctx->last_cpu when picking target llc
519a27f Merge pull request sched-ext#932 from sched-ext/htejun/layered-updates
ce30010 scx_layered: Don't limit antistall execution to layered_cpumask
77eec19 Merge pull request sched-ext#929 from sched-ext/htejun/layered-updates
65b49f8 Merge pull request sched-ext#928 from purplewall1206/patch-1
8e6e3de Merge branch 'main' into patch-1
a7fcda8 Merge pull request sched-ext#924 from sched-ext/scx-fair
5b4b6df Merge branch 'main' into scx-fair
3292be7 scx_lavd: Factor the task's runtime more aggressively in  a deadline calculation
56e0dae scx_layered: Fix linter disagreement
93a0bc9 scx_layered: Fix consume_preempting() when --local-llc-iteration
51d4945 scx_layered: Don't call scx_bpf_cpuperf_set() unnecessarily
678b101 scheds: introduce scx_flash
c7faf70 fix compile errors
75dd81e scx_layered: Improve topology aware select_cpu()
2b52d17 scx_layered: Encapsulate per-task layered cpumask caching
1293ae2 scx_layered: Stat output format update
66223bf Merge pull request sched-ext#926 from JakeHillion/pr926
d35d527 layered: split out common parts of LayerKind
9016416 Merge pull request sched-ext#925 from hodgesds/layered-lol
1afb7d5 scx_layered: Fix formatting
79125ef Merge pull request sched-ext#919 from hodgesds/layered-dispatch-local
3a3a7d7 Merge branch 'main' into layered-dispatch-local
db46e27 Merge pull request sched-ext#923 from hodgesds/layered-dsq-preempt-fix
4fc0509 scx_layered: Add flag to control llc iteration on dispatch
0096c06 scx_layered: Fix cost accounting for dsqs
72f21db Merge pull request sched-ext#922 from hodgesds/layered-cost-dump-fixes
7631049 Merge pull request sched-ext#921 from hodgesds/layered-formatting-fix
f7009f7 scx_layered: Fix dump format
ff15f25 scx_layered: Fix formatting
6733168 Merge pull request sched-ext#918 from hodgesds/layered-slice-helper
775d09a scx_layered: Consume from local LLCs for dispatch
4fb05d9 Merge pull request sched-ext#920 from hodgesds/layered-consume-fix
b2505e7 Merge branch 'main' into layered-consume-fix
1ed387d scx_layered: Fix error in dispatch consumption
cad3413 scx_layered: Add helper for layer slice duration
835f0d0 Merge pull request sched-ext#890 from likewhatevs/layered-dsq-timer
89f4aa1 scx_layered: add antistall
38512bf Merge pull request sched-ext#916 from sched-ext/htejun/scx_layered-verifier-workaround
bb91ad0 scx_layered: Work around older kernels choking on function calls from sleepable progs
5280206 Merge pull request sched-ext#915 from LohithCV/lavd_doc_err
a2e119a scx_lavd: docs: fix typos
007fed0 Merge pull request sched-ext#913 from hodgesds/layered-fallback-dump
3b47782 scx_layered: Add fallback costs to dump
73926d6 Merge pull request sched-ext#912 from hodgesds/layered-mask-cleanup
5ae1b84 Merge pull request sched-ext#908 from JakeHillion/pr908
ee4fd3d scx_layered: Cleanup cpumask
9a282e0 Merge pull request sched-ext#911 from hodgesds/layered-idle-smt-cleanup
637fc3f scx_layered: Use layer idle_smt option
f71a9d0 Merge pull request sched-ext#910 from hodgesds/layered-cost-verifier-fix
7db2ef2 scx_layered: Fix verifier issue on older kernels
ba54808 layered/topo: lift layer specific checks out of per-LLC loop
218cbea Merge pull request sched-ext#907 from sched-ext/scx-loader-update-bpfland-options
191cc7f scx_loader: tune scx_bpfland default options
416de68 Merge pull request sched-ext#904 from multics69/lavd-drop-padding
56357a7 Merge pull request sched-ext#903 from multics69/lavd-issue-897
d7e1f69 Merge pull request sched-ext#906 from hodgesds/layered-verifier-fix
3cc849f scx_layered: Fix verifier issue when tracing
d6ba3b7 Merge pull request sched-ext#896 from hodgesds/layered-dsq-cost
487baa4 scx_layered: Add fallback DSQ cost accounting
debe991 Merge pull request sched-ext#905 from likewhatevs/kconfig-cache-update
27a506f add CONFIG_IKCONFIG to ci Kconfig and bump cache ver
22cb9e9 scx_lavd: drop padding in cpdom_cpumask, which was a workaround
e9ba2d5 scx_lavd: update cur_logical_clk atomically
d0111b3 Merge pull request sched-ext#900 from likewhatevs/enable-iconfig-proc
b962ea8 Merge pull request sched-ext#894 from etsal/core_enums
5e35a12 remove stray print
7d44511 fix missing/extraneous newline
4288040 Merge branch 'main' of https://github.com/sched-ext/scx into core_enums
de5f2f9 regenerate autogen Rust file
f088540 fix linting error in autogenerated code
2f174db use the enum singleton in the userspace scheduler components
1cabed9 Autogenerate enums and BPF enum setters for Rust schedulers
d500c50 add autogenerated enum definitions for Rust schedulers
fc6ad5c add CONFIG_IKHEADERS_PROC to ci kconfig
479d515 Merge branch 'main' into core_enums
23f302c add SCX_SLICE_* macros to scx_utils and use them for the Rust schedulers
c545d23 factor enum handling into existing headers/operations
a1d0e7e autogenerate scx enum definitions
31b9fb4 set all enums in userspace before loading
ff861d3 introduce CO:RE enum readers and use them for scx_central
JakeHillion added a commit to JakeHillion/scx that referenced this pull request Nov 20, 2024
9bdccdd Merge pull request sched-ext#943 from JakeHillion/pr943
b4b1879 Merge pull request sched-ext#947 from sirlucjan/scx_loader_update
f2384fe scx_loader: update docs
198f079 Merge pull request sched-ext#930 from hodgesds/topo-irq
41781fe scx_layered: Add netdev IRQ balancing node support
e30e5d8 scx_utils: Add netdev support
8c09ae2 Merge pull request sched-ext#942 from CachyOS/feat/loader-add-flash
c258199 replace goto with unrolled loop in antistall_set
d5d4f46 scx_loader: add scx_flash as supported scheduler
489ce8a Merge pull request sched-ext#939 from sched-ext/htejun/layered-updates
dbcd233 scx_layered: Work around verification failure in antistall_set() on old kernels
61f378c Merge pull request sched-ext#931 from multics69/lavd-osu
88c7d47 Merge pull request sched-ext#934 from sched-ext/htejun/layered-updates
aec9e86 Merge branch 'main' into htejun/layered-updates
10bf25a topology, scx_layered: Make --disable-topology handling more consistent
ff0e9c6 Merge pull request sched-ext#933 from hodgesds/layered-verifier-nested
1869dd8 scx_layered: Fix verifier issues on older kernels
68e1741 scx_layered: Use cached cpu_ctx->hi_fallback_dsq_id and cpu_ctx->cached_idx
827af0b scx_layered: Fix dsq_id indexing bugs
f2c9e7f scx_layered: Don't use tctx->last_cpu when picking target llc
519a27f Merge pull request sched-ext#932 from sched-ext/htejun/layered-updates
ce30010 scx_layered: Don't limit antistall execution to layered_cpumask
77eec19 Merge pull request sched-ext#929 from sched-ext/htejun/layered-updates
65b49f8 Merge pull request sched-ext#928 from purplewall1206/patch-1
8e6e3de Merge branch 'main' into patch-1
a7fcda8 Merge pull request sched-ext#924 from sched-ext/scx-fair
5b4b6df Merge branch 'main' into scx-fair
3292be7 scx_lavd: Factor the task's runtime more aggressively in  a deadline calculation
56e0dae scx_layered: Fix linter disagreement
93a0bc9 scx_layered: Fix consume_preempting() when --local-llc-iteration
51d4945 scx_layered: Don't call scx_bpf_cpuperf_set() unnecessarily
678b101 scheds: introduce scx_flash
c7faf70 fix compile errors
75dd81e scx_layered: Improve topology aware select_cpu()
2b52d17 scx_layered: Encapsulate per-task layered cpumask caching
1293ae2 scx_layered: Stat output format update
66223bf Merge pull request sched-ext#926 from JakeHillion/pr926
d35d527 layered: split out common parts of LayerKind
9016416 Merge pull request sched-ext#925 from hodgesds/layered-lol
1afb7d5 scx_layered: Fix formatting
79125ef Merge pull request sched-ext#919 from hodgesds/layered-dispatch-local
3a3a7d7 Merge branch 'main' into layered-dispatch-local
db46e27 Merge pull request sched-ext#923 from hodgesds/layered-dsq-preempt-fix
4fc0509 scx_layered: Add flag to control llc iteration on dispatch
0096c06 scx_layered: Fix cost accounting for dsqs
72f21db Merge pull request sched-ext#922 from hodgesds/layered-cost-dump-fixes
7631049 Merge pull request sched-ext#921 from hodgesds/layered-formatting-fix
f7009f7 scx_layered: Fix dump format
ff15f25 scx_layered: Fix formatting
6733168 Merge pull request sched-ext#918 from hodgesds/layered-slice-helper
775d09a scx_layered: Consume from local LLCs for dispatch
4fb05d9 Merge pull request sched-ext#920 from hodgesds/layered-consume-fix
b2505e7 Merge branch 'main' into layered-consume-fix
1ed387d scx_layered: Fix error in dispatch consumption
cad3413 scx_layered: Add helper for layer slice duration
835f0d0 Merge pull request sched-ext#890 from likewhatevs/layered-dsq-timer
89f4aa1 scx_layered: add antistall
38512bf Merge pull request sched-ext#916 from sched-ext/htejun/scx_layered-verifier-workaround
bb91ad0 scx_layered: Work around older kernels choking on function calls from sleepable progs
5280206 Merge pull request sched-ext#915 from LohithCV/lavd_doc_err
a2e119a scx_lavd: docs: fix typos
007fed0 Merge pull request sched-ext#913 from hodgesds/layered-fallback-dump
3b47782 scx_layered: Add fallback costs to dump
73926d6 Merge pull request sched-ext#912 from hodgesds/layered-mask-cleanup
5ae1b84 Merge pull request sched-ext#908 from JakeHillion/pr908
ee4fd3d scx_layered: Cleanup cpumask
9a282e0 Merge pull request sched-ext#911 from hodgesds/layered-idle-smt-cleanup
637fc3f scx_layered: Use layer idle_smt option
f71a9d0 Merge pull request sched-ext#910 from hodgesds/layered-cost-verifier-fix
7db2ef2 scx_layered: Fix verifier issue on older kernels
ba54808 layered/topo: lift layer specific checks out of per-LLC loop
218cbea Merge pull request sched-ext#907 from sched-ext/scx-loader-update-bpfland-options
191cc7f scx_loader: tune scx_bpfland default options
416de68 Merge pull request sched-ext#904 from multics69/lavd-drop-padding
56357a7 Merge pull request sched-ext#903 from multics69/lavd-issue-897
d7e1f69 Merge pull request sched-ext#906 from hodgesds/layered-verifier-fix
3cc849f scx_layered: Fix verifier issue when tracing
d6ba3b7 Merge pull request sched-ext#896 from hodgesds/layered-dsq-cost
487baa4 scx_layered: Add fallback DSQ cost accounting
debe991 Merge pull request sched-ext#905 from likewhatevs/kconfig-cache-update
27a506f add CONFIG_IKCONFIG to ci Kconfig and bump cache ver
22cb9e9 scx_lavd: drop padding in cpdom_cpumask, which was a workaround
e9ba2d5 scx_lavd: update cur_logical_clk atomically
d0111b3 Merge pull request sched-ext#900 from likewhatevs/enable-iconfig-proc
b962ea8 Merge pull request sched-ext#894 from etsal/core_enums
5e35a12 remove stray print
7d44511 fix missing/extraneous newline
4288040 Merge branch 'main' of https://github.com/sched-ext/scx into core_enums
de5f2f9 regenerate autogen Rust file
f088540 fix linting error in autogenerated code
2f174db use the enum singleton in the userspace scheduler components
1cabed9 Autogenerate enums and BPF enum setters for Rust schedulers
d500c50 add autogenerated enum definitions for Rust schedulers
fc6ad5c add CONFIG_IKHEADERS_PROC to ci kconfig
479d515 Merge branch 'main' into core_enums
23f302c add SCX_SLICE_* macros to scx_utils and use them for the Rust schedulers
c545d23 factor enum handling into existing headers/operations
a1d0e7e autogenerate scx enum definitions
31b9fb4 set all enums in userspace before loading
ff861d3 introduce CO:RE enum readers and use them for scx_central
JakeHillion added a commit that referenced this pull request Nov 20, 2024
9bdccdd Merge pull request #943 from JakeHillion/pr943
b4b1879 Merge pull request #947 from sirlucjan/scx_loader_update
f2384fe scx_loader: update docs
198f079 Merge pull request #930 from hodgesds/topo-irq
41781fe scx_layered: Add netdev IRQ balancing node support
e30e5d8 scx_utils: Add netdev support
8c09ae2 Merge pull request #942 from CachyOS/feat/loader-add-flash
c258199 replace goto with unrolled loop in antistall_set
d5d4f46 scx_loader: add scx_flash as supported scheduler
489ce8a Merge pull request #939 from sched-ext/htejun/layered-updates
dbcd233 scx_layered: Work around verification failure in antistall_set() on old kernels
61f378c Merge pull request #931 from multics69/lavd-osu
88c7d47 Merge pull request #934 from sched-ext/htejun/layered-updates
aec9e86 Merge branch 'main' into htejun/layered-updates
10bf25a topology, scx_layered: Make --disable-topology handling more consistent
ff0e9c6 Merge pull request #933 from hodgesds/layered-verifier-nested
1869dd8 scx_layered: Fix verifier issues on older kernels
68e1741 scx_layered: Use cached cpu_ctx->hi_fallback_dsq_id and cpu_ctx->cached_idx
827af0b scx_layered: Fix dsq_id indexing bugs
f2c9e7f scx_layered: Don't use tctx->last_cpu when picking target llc
519a27f Merge pull request #932 from sched-ext/htejun/layered-updates
ce30010 scx_layered: Don't limit antistall execution to layered_cpumask
77eec19 Merge pull request #929 from sched-ext/htejun/layered-updates
65b49f8 Merge pull request #928 from purplewall1206/patch-1
8e6e3de Merge branch 'main' into patch-1
a7fcda8 Merge pull request #924 from sched-ext/scx-fair
5b4b6df Merge branch 'main' into scx-fair
3292be7 scx_lavd: Factor the task's runtime more aggressively in  a deadline calculation
56e0dae scx_layered: Fix linter disagreement
93a0bc9 scx_layered: Fix consume_preempting() when --local-llc-iteration
51d4945 scx_layered: Don't call scx_bpf_cpuperf_set() unnecessarily
678b101 scheds: introduce scx_flash
c7faf70 fix compile errors
75dd81e scx_layered: Improve topology aware select_cpu()
2b52d17 scx_layered: Encapsulate per-task layered cpumask caching
1293ae2 scx_layered: Stat output format update
66223bf Merge pull request #926 from JakeHillion/pr926
d35d527 layered: split out common parts of LayerKind
9016416 Merge pull request #925 from hodgesds/layered-lol
1afb7d5 scx_layered: Fix formatting
79125ef Merge pull request #919 from hodgesds/layered-dispatch-local
3a3a7d7 Merge branch 'main' into layered-dispatch-local
db46e27 Merge pull request #923 from hodgesds/layered-dsq-preempt-fix
4fc0509 scx_layered: Add flag to control llc iteration on dispatch
0096c06 scx_layered: Fix cost accounting for dsqs
72f21db Merge pull request #922 from hodgesds/layered-cost-dump-fixes
7631049 Merge pull request #921 from hodgesds/layered-formatting-fix
f7009f7 scx_layered: Fix dump format
ff15f25 scx_layered: Fix formatting
6733168 Merge pull request #918 from hodgesds/layered-slice-helper
775d09a scx_layered: Consume from local LLCs for dispatch
4fb05d9 Merge pull request #920 from hodgesds/layered-consume-fix
b2505e7 Merge branch 'main' into layered-consume-fix
1ed387d scx_layered: Fix error in dispatch consumption
cad3413 scx_layered: Add helper for layer slice duration
835f0d0 Merge pull request #890 from likewhatevs/layered-dsq-timer
89f4aa1 scx_layered: add antistall
38512bf Merge pull request #916 from sched-ext/htejun/scx_layered-verifier-workaround
bb91ad0 scx_layered: Work around older kernels choking on function calls from sleepable progs
5280206 Merge pull request #915 from LohithCV/lavd_doc_err
a2e119a scx_lavd: docs: fix typos
007fed0 Merge pull request #913 from hodgesds/layered-fallback-dump
3b47782 scx_layered: Add fallback costs to dump
73926d6 Merge pull request #912 from hodgesds/layered-mask-cleanup
5ae1b84 Merge pull request #908 from JakeHillion/pr908
ee4fd3d scx_layered: Cleanup cpumask
9a282e0 Merge pull request #911 from hodgesds/layered-idle-smt-cleanup
637fc3f scx_layered: Use layer idle_smt option
f71a9d0 Merge pull request #910 from hodgesds/layered-cost-verifier-fix
7db2ef2 scx_layered: Fix verifier issue on older kernels
ba54808 layered/topo: lift layer specific checks out of per-LLC loop
218cbea Merge pull request #907 from sched-ext/scx-loader-update-bpfland-options
191cc7f scx_loader: tune scx_bpfland default options
416de68 Merge pull request #904 from multics69/lavd-drop-padding
56357a7 Merge pull request #903 from multics69/lavd-issue-897
d7e1f69 Merge pull request #906 from hodgesds/layered-verifier-fix
3cc849f scx_layered: Fix verifier issue when tracing
d6ba3b7 Merge pull request #896 from hodgesds/layered-dsq-cost
487baa4 scx_layered: Add fallback DSQ cost accounting
debe991 Merge pull request #905 from likewhatevs/kconfig-cache-update
27a506f add CONFIG_IKCONFIG to ci Kconfig and bump cache ver
22cb9e9 scx_lavd: drop padding in cpdom_cpumask, which was a workaround
e9ba2d5 scx_lavd: update cur_logical_clk atomically
d0111b3 Merge pull request #900 from likewhatevs/enable-iconfig-proc
b962ea8 Merge pull request #894 from etsal/core_enums
5e35a12 remove stray print
7d44511 fix missing/extraneous newline
4288040 Merge branch 'main' of https://github.com/sched-ext/scx into core_enums
de5f2f9 regenerate autogen Rust file
f088540 fix linting error in autogenerated code
2f174db use the enum singleton in the userspace scheduler components
1cabed9 Autogenerate enums and BPF enum setters for Rust schedulers
d500c50 add autogenerated enum definitions for Rust schedulers
fc6ad5c add CONFIG_IKHEADERS_PROC to ci kconfig
479d515 Merge branch 'main' into core_enums
23f302c add SCX_SLICE_* macros to scx_utils and use them for the Rust schedulers
c545d23 factor enum handling into existing headers/operations
a1d0e7e autogenerate scx enum definitions
31b9fb4 set all enums in userspace before loading
ff861d3 introduce CO:RE enum readers and use them for scx_central
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants