~152 more replies (not shown)

i've decided to set the scheduler strategy to CONFIG_PREEMPT_VOLUNTARY over the linux-zen default of CONFIG_PREEMPT because this laptop has obnoxious specs and they describe CONFIG_PREEMPT as being like for embedded systems (and laptops) whereas CONFIG_PREEMPT_VOLUNTARY is singly characterized as for desktops and i have this thing plugged in 99% of the time

kinda funny about why the status quo is like this. google benefits from the clout saying "yeah yeah yeah we LTO the KERMEL we are FUTURW" regardless of the performance bc as you recall google does not care about computer performance. whereas presumably if gcc lto was not actually useful it wouldn't be worth anyone's time to plumb it into the kernel makefiles

the ceph network filesystem seems vaguely interesting but very corporate and the way they spread their config dependencies (the config dependencies part is at least pretty well done) very deeply into separate subtrees makes it unlikely someone would take the time to remove it all unless they get upset like me and tear it all out

the one part about the dependencies that is not at all well engineered is not giving you a way to disable/enable all dependencies as necessary for the one you want to work. i also think gitignoring .config is a strange decision because it is ridiculously important for users to track their config changes and git is a tool for doing so

omg this shade from CONFIG_FTL

You may find that the algorithms used in this code are patented
unless you live in the Free World where software patents aren't
legal - in the USA you are only permitted to use this on PCMCIA
hardware, although under the terms of the GPL you're obviously
permitted to copy, modify and distribute the code as you wish. Just
not use it.

This option enables verbose reporting for NVMe errors. The
error translation table will grow the kernel image size by
about 4 KB.

marveling at (1) a static table being verbose enough for 4kb (2) how this option very clearly gives a number for the tradeoff. some other options don't give clear indications of magnitude, although some like the scheduler probably can't

there's a paragraph at the bottom of Kconfig-language.rst about SAT solvers which uhhhhhhhb that's pretty cool kernel.org/doc/html/latest/kbu cc @harold @tgamblin i think this is a case where SAT/SMT is more appropriate than ASP since it's easier to enumerate all values

Although SAT solvers [4] haven’t yet been used by Kconfig directly, as noted in the previous subsection, work has been done however to express in boolean abstraction the inferred semantics of Kconfig to translate Kconfig logic into boolean formulas and run a SAT solver on it [5]. Another known related project is CADOS [6] (former VAMOS [7]) and the tools, mainly undertaker [8], which has been introduced first with [9]. The basic concept of undertaker is to extract variability models from Kconfig and put them together with a propositional formula extracted from CPP and build-rules into a SAT solver in order to find dead code, dead files, and dead symbols. If using a SAT solver is desirable on Kconfig one approach would be to evaluate repurposing such efforts somehow on Kconfig. There is enough interest from mentors of existing projects to not only help advise how to integrate this work upstream but also help maintain it long term. Interested developers should visit:

going to spend a few minutes reading more about kconfig and seeing how hard it would be to make a script that kills all deps for me. the problem is that it's easier to do that operating upon the config file itself, but making it useful would be inserting that into the menuconfig/etc [TG]UIs. maybe that's not hard if i see how they're made?

lmao and then whether you want to turn on the (NEW!) PGO feature

# cosmicexplorer@terrestrial-gamma-ray-flash: ~/tools/linux 9:23:45 
; make LLVM=1 rustavailable
Rust is available!
# cosmicexplorer@terrestrial-gamma-ray-flash: ~/tools/linux 9:24:04
; make LLVM=1 rust-analyzer
SYNC include/config/auto.conf
HOSTCC scripts/basic/fixdep
HOSTCC scripts/kconfig/conf.o
HOSTCC scripts/kconfig/confdata.o
HOSTCC scripts/kconfig/expr.o
HOSTCC scripts/kconfig/lexer.lex.o
HOSTCC scripts/kconfig/menu.o
HOSTCC scripts/kconfig/parser.tab.o
HOSTCC scripts/kconfig/preprocess.o
HOSTCC scripts/kconfig/symbol.o
HOSTCC scripts/kconfig/util.o
HOSTLD scripts/kconfig/conf

Restart config...


* General architecture-dependent options
*
Kprobes (KPROBES) [Y/n/?] y
Optimize very unlikely/likely branches (JUMP_LABEL) [Y/?] y
Static key selftest (STATIC_KEYS_SELFTEST) [N/y/?] n
Static call selftest (STATIC_CALL_SELFTEST) [N/y/?] n
Enable seccomp to safely execute untrusted bytecode (SECCOMP) [Y/n/?] y
Show seccomp filter cache status in /proc/pid/seccomp_cache (SECCOMP_CACHE_DEBUG) [N/y/?] n
Stack Protector buffer overflow detection (STACKPROTECTOR) [Y/n/?] y
Strong Stack Protector (STACKPROTECTOR_STRONG) [Y/n/?] y
Link Time Optimization (LTO)
> 1. None (LTO_NONE)
2. Clang Full LTO (EXPERIMENTAL) (LTO_CLANG_FULL) (NEW)
3. Clang ThinLTO (EXPERIMENTAL) (LTO_CLANG_THIN) (NEW)
choice[1-3?]: 1
Enable Clang's AutoFDO build (EXPERIMENTAL) (AUTOFDO_CLANG) [N/y/?] (NEW)

and the phony thing is pretty arcane but there is code you van copy directly from already in the top level makefile. but i'm mostly just bewildered that so much effort would be spent to have such an obviously broken result. possibly a last-minute fix done without realizing it would remove the phony declarations. i'm sure this is in the LKML archives

i am NOT using this feature but holy shit look at the syntax they have for doing something with semantics that i have to read three times to get https://www.gnu.org/software/make/manual/html_node/Immediate-Assignment.html

var = one$$two
OUT :::= $(var)
var = three$$four

everything you love about = along with everything you love about :=. cc @leo if they were for real they'd make ::::=

THEY KEEP GOING IN ON MICROSOFT LOL LMAO

CONFIG_USB_NET_RNDIS_HOST:

This option enables hosting "Remote NDIS" USB networking links,
as encouraged by Microsoft (instead of CDC Ethernet!) for use in
various devices that may only support this protocol. A variant
of this protocol (with even less public documentation) seems to
be at the root of Microsoft's "ActiveSync" too.

Avoid using this protocol unless you have no better options.
The protocol specification is incomplete, and is controlled by
(and for) Microsoft; it isn't an "Open" ecosystem or market.

a lot of this stuff is still just marketing space though and it can be pretty manipulative. like CONFIG_KEYBOARD_TWL4030 from texas instruments:

Say Y here if your board use the keypad controller on
TWL4030 family chips. It's safe to say enable this
even on boards that don't use the keypad controller.

"it's safe to say" mirrors the kind of language used on many of the much much more generic drivers, trying to create this facade of being impartial and able to quell your indecision.

it's not the worst instance of this at all, but i feel people (linus) should care a lot more about the impression this stuff gives. then again, maybe he does :/

one thing that is really nice is that every config value corresponds to a value visible and introspectable in the build system and the source code itself. so while larger masses of code that integrate tightly with many other systems might be harder to analyze coughgooglecough, you at least can confirm yeah this does what it says

also was VERY confused when the little notes would say things like "this doesn't add more code to the kernel" because any flag that modifies behavior of something attached to a monolithic kernel is going to modify the kernel but i just realized they definitely just think drivers are not part of the kernel and can do what they want without reflecting upon the kernel. that's a great rationalization you've found there sir great work

ok CONFIG_LEGACY_PTYS acts like dropping support for a BSD standard is a huge moral act because they used master/slave terminology when much earlier in the config many hours i was disgusted to see the terms master/slave deployed to describe an internal linux feature, not even a third-party driver. you need to follow through on this stuff and certainly try harder to make it clear that you're not using it as a cover for ulterior motives

the CONFIG_SERIAL_8250 text has SUCH nice vibes they seem so empathetic and passionate

This selects whether you want to include the driver for the standard
serial ports. The standard answer is Y. People who might say N
here are those that are setting up dedicated Ethernet WWW/FTP
servers, or users that have one of the various bus mice instead of a
serial mouse and don't intend to use their machine's standard serial
port for anything.

To compile this driver as a module, choose M here: the
module will be called 8250.
[WARNING: Do not compile this driver as a module if you are using
non-standard serial ports, since the configuration information will
be lost when the driver is unloaded. This limitation may be lifted
in the future.]

BTW1: If you have a mouseman serial mouse which is not recognized by
the X window system, try running gpm first.

BTW2: If you intend to use a software modem (also called Winmodem)
under Linux, forget it. These modems are crippled and require
proprietary drivers which are only available under Windows.

Most people will say Y or M here, so that they can use serial mice,
modems and similar devices connecting to the standard serial ports.

the subsection labeled "Dallas's 1-wire support" specifically separates masters from slaves in separate subsubsections (slaves underneath the masters of course). then in if check the documentation for the CONFIG_W1_CON setting regarding userspace communication:

There are three types of messages between w1 core and userspace:

  1. Events. They are generated each time new master or slave device found either due to automatic or requested search.
  2. Userspace commands. Includes read/write and search/alarm search commands.
  3. Replies to userspace commands

an "alarm search" for slaves who should be replying to commands is certainly something

now we're into batteries and power sources and four or five separate corporations call the hulking electronics they use to power their cars with the help of the linux operating system "gas gauges" and i had to look it up to make sure we weren't abstracting our driver interfaces to something as ephemeral as liquid fuel.

using their preferred name to refer to the things they contribute to linux isn't really a problem. i was more frustrated by CONFIG_BATTERY_SBS which use the terminology "SBS-compliant gas gauge", as it were the same kind of generic protocol we see elsewhere in the kernel, earlier in the process of setting config.

i had a good laugh to see sbs-battery.c was contributed in 2010 by none other than nvidia corporation, who was no doubt well placed to produce the most offensively wasteful products since the automobile if they literally wrote the book on wasting energy. and it's in our library!