Date: Thu, 07 Nov 2024 16:43:49 +0100 From: Kristof Provost <kp@FreeBSD.org> To: Alan Somers <asomers@freebsd.org> Cc: =?utf-8?q?Olivier_Cochard-Labb=C3=A9?= <olivier@freebsd.org>, Igor Ostapenko <igoro@freebsd.org>, freebsd-testing@freebsd.org, freebsd-hackers@freebsd.org Subject: Re: RFC: Add required_klds metadata to Kyua Message-ID: <AB449214-89D5-49AF-A74E-04210882201D@FreeBSD.org> In-Reply-To: <CAOtMX2j%2BXFL_9CNi0iKUg9aCcH_0dNqzszC=M5wPPy6yhs57Rg@mail.gmail.com> References: <9fc6fc72-4c2c-4b09-bdb5-122a49b45295@FreeBSD.org> <CA%2Bq%2BTcpLeVqHhtL7VHvWsijQO9sxewY5opeUQ895G43EC24qgg@mail.gmail.com> <9975A26D-6AB4-433F-B4B2-515F956BF366@FreeBSD.org> <CAOtMX2j%2BXFL_9CNi0iKUg9aCcH_0dNqzszC=M5wPPy6yhs57Rg@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
[-- Attachment #1 --]
On 7 Nov 2024, at 16:16, Alan Somers wrote:
> I too like the idea of Project A with required_klds or required_kmods.
> But how would you handle situations where a user customizes their
> kernel config to build some feature that's usually a module directly
> into the kernel? I would think that would break any test using
> required_klds.
>
That’s actually fine if we use `kldstat -m` or modfind(). It’ll
still find a “module” even when it’s built into the kernel.
For example, pfsense builds pf into the kernel:
[24.11-BETA][root@pfSense.jupiter.sigsegv.be]/root: kldstat
Id Refs Address Size Name
1 19 0xffff000000000000 28e4d90 kernel
2 1 0xffff0000028e5000 46e278 zfs.ko
3 1 0xffff000002d54000 3e258 opensolaris.ko
4 1 0xffff0000b1c00000 27000 safexcel.ko
5 1 0xffff0000b1c27000 26000 cryptodev.ko
[24.11-BETA][root@pfSense.jupiter.sigsegv.be]/root: kldstat -m pf
Id Refs Name
440 1 pf
Or when it actually is a module:
freebsd_current_zfs# kldstat
Id Refs Address Size Name
1 48 0xffffffff80200000 1f75b10 kernel
2 1 0xffffffff82176000 6320 filemon.ko
3 1 0xffffffff8217d000 78fdf8 zfs.ko
4 1 0xffffffff83010000 2a68 mac_ntpd.ko
5 3 0xffffffff83013000 5adc0 pf.ko
6 1 0xffffffff8306e000 9688 pfsync.ko
7 1 0xffffffff83078000 2260 pflog.ko
8 1 0xffffffff8307b000 128a0 dummynet.ko
9 1 0xffffffff8308e000 9890 carp.ko
10 1 0xffffffff83098000 18148 ipsec.ko
11 1 0xffffffff830b1000 7bf98 sctp.ko
12 1 0xffffffff8312d000 2568 ipdivert.ko
13 1 0xffffffff83130000 88d8 if_bridge.ko
14 1 0xffffffff83139000 5120 bridgestp.ko
15 1 0xffffffff8313f000 52a4 if_epair.ko
freebsd_current_zfs# kldstat -m pf
Id Refs Name
506 1 pf
freebsd_current_zfs# kldunload pfsync
freebsd_current_zfs#
kldunload pflog
freebsd_current_zfs# kldunload pf
freebsd_current_zfs# kldstat -m pf
kldstat: can't find module pf: No such file or directory
—
Kristof
[-- Attachment #2 --]
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/xhtml; charset=utf-8">
</head>
<body><div style="font-family: sans-serif;"><div class="markdown" style="white-space: normal;">
<p dir="auto">On 7 Nov 2024, at 16:16, Alan Somers wrote:</p>
</div><div class="plaintext" style="white-space: normal;"><blockquote style="margin: 0 0 5px; padding-left: 5px; border-left: 2px solid #136BCE; color: #136BCE;"><p dir="auto">I too like the idea of Project A with required_klds or required_kmods.
<br>
But how would you handle situations where a user customizes their
<br>
kernel config to build some feature that's usually a module directly
<br>
into the kernel? I would think that would break any test using
<br>
required_klds.</p>
<br></blockquote></div>
<div class="markdown" style="white-space: normal;">
<p dir="auto">That’s actually fine if we use <code style="padding: 0 0.25em; background-color: #E4E4E4;">kldstat -m</code> or modfind(). It’ll still find a “module” even when it’s built into the kernel.</p>
<p dir="auto">For example, pfsense builds pf into the kernel:</p>
<pre style="margin-left: 15px; margin-right: 15px; padding: 5px; border: thin solid gray; overflow-x: auto; max-width: 90vw; background-color: #E4E4E4;"><code style="padding: 0 0.25em; background-color: #E4E4E4;">[24.11-BETA][root@pfSense.jupiter.sigsegv.be]/root: kldstat
Id Refs Address Size Name
1 19 0xffff000000000000 28e4d90 kernel
2 1 0xffff0000028e5000 46e278 zfs.ko
3 1 0xffff000002d54000 3e258 opensolaris.ko
4 1 0xffff0000b1c00000 27000 safexcel.ko
5 1 0xffff0000b1c27000 26000 cryptodev.ko
[24.11-BETA][root@pfSense.jupiter.sigsegv.be]/root: kldstat -m pf
Id Refs Name
440 1 pf
</code></pre>
<p dir="auto">Or when it actually is a module:</p>
<pre style="margin-left: 15px; margin-right: 15px; padding: 5px; border: thin solid gray; overflow-x: auto; max-width: 90vw; background-color: #E4E4E4;"><code style="padding: 0 0.25em; background-color: #E4E4E4;">freebsd_current_zfs# kldstat
Id Refs Address Size Name
1 48 0xffffffff80200000 1f75b10 kernel
2 1 0xffffffff82176000 6320 filemon.ko
3 1 0xffffffff8217d000 78fdf8 zfs.ko
4 1 0xffffffff83010000 2a68 mac_ntpd.ko
5 3 0xffffffff83013000 5adc0 pf.ko
6 1 0xffffffff8306e000 9688 pfsync.ko
7 1 0xffffffff83078000 2260 pflog.ko
8 1 0xffffffff8307b000 128a0 dummynet.ko
9 1 0xffffffff8308e000 9890 carp.ko
10 1 0xffffffff83098000 18148 ipsec.ko
11 1 0xffffffff830b1000 7bf98 sctp.ko
12 1 0xffffffff8312d000 2568 ipdivert.ko
13 1 0xffffffff83130000 88d8 if_bridge.ko
14 1 0xffffffff83139000 5120 bridgestp.ko
15 1 0xffffffff8313f000 52a4 if_epair.ko
freebsd_current_zfs# kldstat -m pf
Id Refs Name
506 1 pf
freebsd_current_zfs# kldunload pfsync freebsd_current_zfs# kldunload pflog
freebsd_current_zfs# kldunload pf
freebsd_current_zfs# kldstat -m pf
kldstat: can't find module pf: No such file or directory
</code></pre>
<p dir="auto">—<br>
Kristof</p>
</div>
</div>
</body>
</html>
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?AB449214-89D5-49AF-A74E-04210882201D>
