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
--=_MailMate_E1688D6D-F804-4D3F-B9BC-1BE59FE56D88_=
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
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
--=_MailMate_E1688D6D-F804-4D3F-B9BC-1BE59FE56D88_=
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<!DOCTYPE html>
<html>
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/xhtml; charset=3Dutf-8"=
>
</head>
<body><div style=3D"font-family: sans-serif;"><div class=3D"markdown" sty=
le=3D"white-space: normal;">
<p dir=3D"auto">On 7 Nov 2024, at 16:16, Alan Somers wrote:</p>
</div><div class=3D"plaintext" style=3D"white-space: normal;"><blockquote=
style=3D"margin: 0 0 5px; padding-left: 5px; border-left: 2px solid #136=
BCE; color: #136BCE;"><p dir=3D"auto">I too like the idea of Project A wi=
th 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=3D"markdown" style=3D"white-space: normal;">
<p dir=3D"auto">That=E2=80=99s actually fine if we use <code style=3D"pad=
ding: 0 0.25em; background-color: #E4E4E4;">kldstat -m</code> or modfind(=
). It=E2=80=99ll still find a =E2=80=9Cmodule=E2=80=9D even when it=E2=80=
=99s built into the kernel.</p>
<p dir=3D"auto">For example, pfsense builds pf into the kernel:</p>
<pre style=3D"margin-left: 15px; margin-right: 15px; padding: 5px; border=
: thin solid gray; overflow-x: auto; max-width: 90vw; background-color: #=
E4E4E4;"><code style=3D"padding: 0 0.25em; background-color: #E4E4E4;">[2=
4.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=3D"auto">Or when it actually is a module:</p>
<pre style=3D"margin-left: 15px; margin-right: 15px; padding: 5px; border=
: thin solid gray; overflow-x: auto; max-width: 90vw; background-color: #=
E4E4E4;"><code style=3D"padding: 0 0.25em; background-color: #E4E4E4;">fr=
eebsd_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 =
=
fr=
eebsd_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=3D"auto">=E2=80=94<br>
Kristof</p>
</div>
</div>
</body>
</html>
--=_MailMate_E1688D6D-F804-4D3F-B9BC-1BE59FE56D88_=--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?AB449214-89D5-49AF-A74E-04210882201D>
