Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 5 Jul 2024 19:05:52 +0200
From:      Mario Marietto <marietto2008@gmail.com>
To:        Nimbly2329 <hjlftdygaqf@use.startmail.com>
Cc:        Dmitry Salychev <dsl@freebsd.org>, freebsd-drivers@freebsd.org
Subject:   Re: Project Proposal: An Standard Driver Virtual Machine
Message-ID:  <CA%2B1FSijU75qV4qbBX3EbbN=QtGm4Q9ET0%2BWXu_a%2BGx3LK1MfZQ@mail.gmail.com>
In-Reply-To: <CA%2B1FSigHtNONn6600hiPhCA5FifvZYDcZz1szUZ0k9UtA0aCtg@mail.gmail.com>
References:  <171996207708.31.7910752540216367279@startmail.com> <86ed8aalkh.fsf@peasant.bootbsd.com> <172003689512.28.10920198816573547978@startmail.com> <CA%2B1FSigHtNONn6600hiPhCA5FifvZYDcZz1szUZ0k9UtA0aCtg@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
--0000000000009ecac4061c8315bc
Content-Type: multipart/alternative; boundary="0000000000009ecac4061c8315bb"

--0000000000009ecac4061c8315bb
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hello.

@Nimbly2329 <hjlftdygaqf@use.startmail.com> : it's not possible to use
loadable kernel drivers between different versions of the FreeBSD kernels.
Check the image below :

[image: kldload-vmm.ko.png]

On Wed, Jul 3, 2024 at 10:09=E2=80=AFPM Mario Marietto <marietto2008@gmail.=
com>
wrote:

> ---> it does allow to use loadable kernel drivers  between different
> version of the FreeBSD kernel
>
> Can someone elaborate more on this ? Because it happened yesterday that I
> tried to load the vmm.ko module present in my FreeBSD 14.0-RELEASE system
> to FreeBSD 14.1-RELEASE system but it hasn't been accepted. The same
> happened with the ZFS module.
>
> On Wed, Jul 3, 2024 at 10:01=E2=80=AFPM Nimbly2329 <hjlftdygaqf@use.start=
mail.com>
> wrote:
>
>>
>> Nimbly2329 <hjlftdygaqf@use.startmail.com> writes:> Motivation:>> In is =
not a obscure fact that driver development is the hardest part in both main=
taining and creating an operating system, and
>> > that FreeBSD struggles to keep the pace with Linux and Windows. And is=
 the the number one cause that there is no way of
>> > developing novel and viable operating systems.
>> >
>> > Plan:
>> >
>> > (1) We and maybe with the cooperation of another public source kernel/=
OS projects develop a Standard Driver Virtual
>> > Machine, (2) and then we manage to get it implemented in at least Linu=
x, so that Linus et al. promote that all new drivers
>> > shall be written against the Standard Driver Virtual Machine. (3) Fina=
lly profit in little to no effort in porting drivers from Linux.
>>
>> I wish we had more Spare Time Investment proposals instead of project
>> ones :)
>>
>> Regards,
>> Dmitry
>>
>> -- https://wiki.freebsd.org/DmitrySalychev
>>
>>
>> I have reading some resources regarding FreeBSD drivers, looks like
>> FreeBSD has a superior system to Linux's Dynamic Kernel Module System
>> (dmks), for loading drivers, as by the architecture book (
>> https://download.freebsd.org/doc/en/books/arch-handbook/arch-handbook_en=
.pdf,
>> or in other of the sources at freebsd.org I don't remember exactly) it
>> does allow to use loadable kernel drivers  between different version of =
the
>> FreeBSD kernel, giving both backwards and forward compatibility by desig=
n,
>> through an stable Binary Application Interface.
>>
>>
>> Therefore if where for only being able to write a loadable kernel
>> drivers, that would be enough, but it also has to work with static linke=
d
>> drivers.
>>
>>
>> Does is possible to statically link an otherwise loadable kernel driver
>> final binary?
>>
>> There is a way to implement an device detection from userspace?, so that
>> device drivers can be loaded as needed.
>>
>>
>> If boat of those are possible, then there is an even simpler plan, and
>> that is to make Linux implement the FreeBSD's Driver ABI, and my proposa=
l
>> also is simpler.
>>
>>
>> Regards,
>>
>> Nimbly2329
>>
>>
>> By the way where is the documentation of the FreeBSD's driver ABI?
>>
>
>
> --
> Mario.
>


--=20
Mario.

--0000000000009ecac4061c8315bb
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div>Hello.</div><div><br></div><div><a class=3D"gmail_plu=
sreply" id=3D"plusReplyChip-0" href=3D"mailto:hjlftdygaqf@use.startmail.com=
" tabindex=3D"-1">@Nimbly2329</a> : it&#39;s not possible to use loadable k=
ernel drivers between different versions of the FreeBSD kernels. Check the =
image below :</div><div><br></div><div><img src=3D"cid:ii_ly8y4ica0" alt=3D=
"kldload-vmm.ko.png" width=3D"575" height=3D"452"><br></div></div><br><div =
class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Wed, Jul 3, =
2024 at 10:09=E2=80=AFPM Mario Marietto &lt;<a href=3D"mailto:marietto2008@=
gmail.com">marietto2008@gmail.com</a>&gt; wrote:<br></div><blockquote class=
=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rg=
b(204,204,204);padding-left:1ex"><div dir=3D"ltr"><div>---&gt; it=20
does allow to use loadable kernel drivers=C2=A0 between different version o=
f=20
the FreeBSD kernel</div><div><br></div><div>Can someone elaborate more on t=
his ? Because it happened yesterday that I tried to load the vmm.ko module =
present in my FreeBSD 14.0-RELEASE system to FreeBSD 14.1-RELEASE system bu=
t it hasn&#39;t been accepted. The same happened with the ZFS module. <br><=
/div></div><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_a=
ttr">On Wed, Jul 3, 2024 at 10:01=E2=80=AFPM Nimbly2329 &lt;<a href=3D"mail=
to:hjlftdygaqf@use.startmail.com" target=3D"_blank">hjlftdygaqf@use.startma=
il.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"m=
argin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left=
:1ex"><div><span style=3D"font-family:arial,helvetica,sans-serif"><span sty=
le=3D"color:rgb(59,67,92)"><span style=3D"font-size:medium"></span></span><=
/span><span style=3D"font-family:arial,helvetica,sans-serif"><span style=3D=
"color:rgb(59,67,92)"><span style=3D"font-size:medium"></span></span></span=
><span style=3D"font-family:arial,helvetica,sans-serif"><span style=3D"colo=
r:rgb(59,67,92)"><span style=3D"font-size:medium"></span></span></span><spa=
n style=3D"font-family:arial,helvetica,sans-serif"><span style=3D"font-size=
:medium"><span style=3D"color:rgb(59,67,92)"></span></span></span><br></div=
><blockquote><pre id=3D"m_-4122716595978511451m_-7981900796853909745body.mi=
me.1"><span style=3D"font-family:arial,helvetica,sans-serif"><span style=3D=
"color:rgb(59,67,92)"><span style=3D"font-size:medium"></span></span><span =
style=3D"color:rgb(59,67,92)"><span style=3D"font-size:medium"></span></spa=
n></span>Nimbly2329 &lt;<a href=3D"mailto:hjlftdygaqf@use.startmail.com" ta=
rget=3D"_blank">hjlftdygaqf@use.startmail.com</a>&gt; writes:
<span style=3D"font-family:arial,helvetica,sans-serif"><span style=3D"color=
:rgb(59,67,92)"><span style=3D"font-size:medium"></span></span></span>
<span style=3D"font-family:arial,helvetica,sans-serif"><span style=3D"color=
:rgb(59,67,92)"><span style=3D"font-size:medium"></span></span></span>&gt; =
Motivation:
<span style=3D"font-family:arial,helvetica,sans-serif"><span style=3D"color=
:rgb(59,67,92)"><span style=3D"font-size:medium"></span></span></span>&gt;
<span style=3D"font-family:arial,helvetica,sans-serif"><span style=3D"color=
:rgb(59,67,92)"><span style=3D"font-size:medium"></span></span></span>&gt; =
In is not a obscure fact that driver development is the hardest part in bot=
h maintaining and creating an <span style=3D"font-family:arial,helvetica,sa=
ns-serif"><span style=3D"color:rgb(59,67,92)"><span style=3D"font-size:medi=
um"></span></span><span style=3D"color:rgb(59,67,92)"><span style=3D"font-s=
ize:medium"></span></span><span style=3D"color:rgb(59,67,92)"><span style=
=3D"font-size:medium"></span></span><span style=3D"color:rgb(59,67,92)"><sp=
an style=3D"font-size:medium"></span></span><span style=3D"color:rgb(59,67,=
92)"><span style=3D"font-size:medium"></span></span><span style=3D"color:rg=
b(59,67,92)"><span style=3D"font-size:medium"></span></span><span style=3D"=
color:rgb(59,67,92)"><span style=3D"font-size:medium"></span></span><span s=
tyle=3D"color:rgb(59,67,92)"><span style=3D"font-size:medium"></span></span=
><span style=3D"color:rgb(59,67,92)"><span style=3D"font-size:medium"></spa=
n></span><span style=3D"color:rgb(59,67,92)"><span style=3D"font-size:mediu=
m"></span></span><span style=3D"color:rgb(59,67,92)"><span style=3D"font-si=
ze:medium"></span></span><span style=3D"color:rgb(59,67,92)"><span style=3D=
"font-size:medium"></span></span><span style=3D"color:rgb(59,67,92)"><span =
style=3D"font-size:medium"></span></span><span style=3D"color:rgb(59,67,92)=
"><span style=3D"font-size:medium"></span></span><span style=3D"color:rgb(5=
9,67,92)"><span style=3D"font-size:medium"></span></span><span style=3D"col=
or:rgb(59,67,92)"><span style=3D"font-size:medium"></span></span></span>ope=
rating system, and
&gt; that FreeBSD struggles to keep the pace with Linux and Windows. And is=
 the the number one cause that there is no way of
&gt; developing novel and viable operating systems.
&gt;
&gt; Plan:
&gt;
&gt; (1) We and maybe with the cooperation of another public source kernel/=
OS projects develop a Standard Driver Virtual
&gt; Machine, (2) and then we manage to get it implemented in at least Linu=
x, so that Linus et al. promote that all new drivers
&gt; shall be written against the Standard Driver Virtual Machine. (3) Fina=
lly profit in little to no effort in porting drivers from Linux.

I wish we had more Spare Time Investment proposals instead of project
ones :)

Regards,
Dmitry

--=20
<a href=3D"https://wiki.freebsd.org/DmitrySalychev" target=3D"_blank">https=
://wiki.freebsd.org/DmitrySalychev</a>


<br></pre></blockquote><p style=3D"margin:0px;color:rgb(59,67,92);font-fami=
ly:arial,helvetica;font-size:medium">I
 have reading some resources regarding FreeBSD drivers, looks like=20
FreeBSD has a superior system to Linux&#39;s Dynamic Kernel Module System=
=20
(dmks), for loading drivers, as by the architecture book (<a href=3D"https:=
//download.freebsd.org/doc/en/books/arch-handbook/arch-handbook_en.pdf" rel=
=3D"noopener noreferrer" target=3D"_blank">https://download.freebsd.org/doc=
/en/books/arch-handbook/arch-handbook_en.pdf</a>,
 or in other of the sources at <a href=3D"http://freebsd.org" target=3D"_bl=
ank">freebsd.org</a> I don&#39;t remember exactly) it=20
does allow to use loadable kernel drivers=C2=A0 between different version o=
f=20
the FreeBSD kernel, giving both backwards and forward compatibility by=20
design, through an stable Binary Application Interface.<br></p><p style=3D"=
margin:0px;color:rgb(59,67,92);font-family:arial,helvetica;font-size:medium=
"><br></p><p style=3D"margin:0px;color:rgb(59,67,92);font-family:arial,helv=
etica;font-size:medium">Therefore
 if where for only being able to write a loadable kernel drivers, that=20
would be enough, but it also has to work with static linked drivers.<br></p=
><p style=3D"margin:0px;color:rgb(59,67,92);font-family:arial,helvetica;fon=
t-size:medium"><br></p><p style=3D"margin:0px;color:rgb(59,67,92);font-fami=
ly:arial,helvetica;font-size:medium">Does is possible to statically link an=
 otherwise loadable kernel driver final binary?<br></p><p style=3D"margin:0=
px;color:rgb(59,67,92);font-family:arial,helvetica;font-size:medium">There =
is a way to implement an device detection from userspace?, so that device d=
rivers can be loaded as needed.<br></p><p style=3D"margin:0px;color:rgb(59,=
67,92);font-family:arial,helvetica;font-size:medium"><br></p><p style=3D"ma=
rgin:0px;color:rgb(59,67,92);font-family:arial,helvetica;font-size:medium">=
If
 boat of those are possible, then there is an even simpler plan, and=20
that is to make Linux implement the FreeBSD&#39;s Driver ABI, and my=20
proposal also is simpler.<br></p><p style=3D"margin:0px;color:rgb(59,67,92)=
;font-family:arial,helvetica;font-size:medium"><br></p><p style=3D"margin:0=
px;color:rgb(59,67,92);font-family:arial,helvetica;font-size:medium">Regard=
s,<br></p><p style=3D"margin:0px;color:rgb(59,67,92);font-family:arial,helv=
etica;font-size:medium">Nimbly2329<br></p><p style=3D"margin:0px;color:rgb(=
59,67,92);font-family:arial,helvetica;font-size:medium"><br></p><p style=3D=
"margin:0px;color:rgb(59,67,92);font-family:arial,helvetica;font-size:mediu=
m">By the way where is the documentation of the FreeBSD&#39;s driver ABI?<b=
r></p>
</blockquote></div><br clear=3D"all"><br><span class=3D"gmail_signature_pre=
fix">-- </span><br><div dir=3D"ltr" class=3D"gmail_signature">Mario.<br></d=
iv>
</blockquote></div><br clear=3D"all"><br><span class=3D"gmail_signature_pre=
fix">-- </span><br><div dir=3D"ltr" class=3D"gmail_signature">Mario.<br></d=
iv>

--0000000000009ecac4061c8315bb--
--0000000000009ecac4061c8315bc
Content-Type: image/png; name="kldload-vmm.ko.png"
Content-Disposition: inline; filename="kldload-vmm.ko.png"
Content-Transfer-Encoding: base64
Content-ID: <ii_ly8y4ica0>
X-Attachment-Id: ii_ly8y4ica0

iVBORw0KGgoAAAANSUhEUgAABDgAAANRCAIAAACJLpvEAAAA0GVYSWZJSSoACAAAAAoAAAEEAAEA
AAA4BAAAAQEEAAEAAABRAwAAAgEDAAMAAACGAAAAEgEDAAEAAAABAAAAGgEFAAEAAACMAAAAGwEF
AAEAAACUAAAAKAEDAAEAAAADAAAAMQECAA0AAACcAAAAMgECABQAAACqAAAAaYcEAAEAAAC+AAAA
AAAAAAgACAAIAJ0EAAAZAAAAnQQAABkAAABHSU1QIDIuMTAuMzgAADIwMjQ6MDc6MDUgMTg6NDc6
NDAAAQABoAMAAQAAAAEAAAAAAAAAZwQwGwAAAYRpQ0NQSUNDIHByb2ZpbGUAAHicfZE9SMNAHMVf
U0tFKh3sIOIQoTq1i4o41ioUoUKoFVp1MLn0C5q0JCkujoJrwcGPxaqDi7OuDq6CIPgB4uzgpOgi
Jf4vKbSI8eC4H+/uPe7eAUKryjSzLwFoumVkUkkxl18Vg68IIoAwxhCTmVmfk6Q0PMfXPXx8vYvz
LO9zf45BtWAywCcSJ1jdsIg3iGc2rTrnfeIIK8sq8TlxzKALEj9yXXH5jXPJYYFnRoxsZp44QiyW
eljpYVY2NOJp4qiq6ZQv5FxWOW9x1qoN1rknf2GooK8sc53mKFJYxBIkiFDQQAVVWIjTqpNiIkP7
SQ//iOOXyKWQqwJGjgXUoEF2/OB/8Ltbszg16SaFkkDgxbY/xoHgLtBu2vb3sW23TwD/M3Cld/21
FjD7SXqzq0WPgPA2cHHd1ZQ94HIHGH6qy4bsSH6aQrEIvJ/RN+WBoVtgYM3trbOP0wcgS12lb4CD
Q2CiRNnrHu/u7+3t3zOd/n4AoUdyuWI52n0AAA12aVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8
P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pgo8eDp4
bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJYTVAgQ29yZSA0LjQuMC1F
eGl2MiI+CiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjIt
cmRmLXN5bnRheC1ucyMiPgogIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICB4bWxu
czp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgIHhtbG5zOnN0RXZ0
PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiCiAgICB4
bWxuczpHSU1QPSJodHRwOi8vd3d3LmdpbXAub3JnL3htcC8iCiAgICB4bWxuczpkYz0iaHR0cDov
L3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRv
YmUuY29tL3RpZmYvMS4wLyIKICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAv
MS4wLyIKICAgeG1wTU06RG9jdW1lbnRJRD0iZ2ltcDpkb2NpZDpnaW1wOjQwNjI2ZjNjLWQ5ODYt
NGI4ZC1hMmE4LTk3OWM2MjEzMDlkMSIKICAgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxZDE3
YTFlOS1hNjdlLTQ3OTktOGZkZC01NzljMzVkMjhjYjEiCiAgIHhtcE1NOk9yaWdpbmFsRG9jdW1l
bnRJRD0ieG1wLmRpZDo5ZGE2YmQ1ZS01ZTVhLTQ5NWEtYWRhMS1mYzRkMTBjNTQ2ZjAiCiAgIEdJ
TVA6QVBJPSIyLjAiCiAgIEdJTVA6UGxhdGZvcm09IlVuaXgiCiAgIEdJTVA6VGltZVN0YW1wPSIx
NzIwMTk0NDYyNTUwMDgzIgogICBHSU1QOlZlcnNpb249IjIuMTAuMzgiCiAgIGRjOkZvcm1hdD0i
aW1hZ2UvcG5nIgogICB0aWZmOk9yaWVudGF0aW9uPSIxIgogICB4bXA6Q3JlYXRvclRvb2w9IkdJ
TVAgMi4xMCIKICAgeG1wOk1ldGFkYXRhRGF0ZT0iMjAyNDowNzowNVQxODo0Nzo0MCswMzowMCIK
ICAgeG1wOk1vZGlmeURhdGU9IjIwMjQ6MDc6MDVUMTg6NDc6NDArMDM6MDAiPgogICA8eG1wTU06
SGlzdG9yeT4KICAgIDxyZGY6U2VxPgogICAgIDxyZGY6bGkKICAgICAgc3RFdnQ6YWN0aW9uPSJz
YXZlZCIKICAgICAgc3RFdnQ6Y2hhbmdlZD0iLyIKICAgICAgc3RFdnQ6aW5zdGFuY2VJRD0ieG1w
LmlpZDplY2Y1Nzg1YS0xMTZjLTQyOTgtYWQxMC0zZGQ0OTkyNGFkMmIiCiAgICAgIHN0RXZ0OnNv
ZnR3YXJlQWdlbnQ9IkdpbXAgMi4xMCAoVW5peCkiCiAgICAgIHN0RXZ0OndoZW49IjIwMjQtMDct
MDVUMTg6NDc6NDIrMDM6MDAiLz4KICAgIDwvcmRmOlNlcT4KICAgPC94bXBNTTpIaXN0b3J5Pgog
IDwvcmRmOkRlc2NyaXB0aW9uPgogPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8P3hwYWNrZXQgZW5kPSJ3
Ij8+yWmXrwAAAAlwSFlzAAASdAAAEnQB3mYfeAAAAAd0SU1FB+gHBQ8vKnHGqesAACAASURBVHja
7d1btqI6uwBQl8OO0XKbVufB8zvcyiXknjDn0yoLgVwI+SQhtxsAAAAAAAAAAAAAAAA093w+n8+n
fAAAAHK5ywIAAECgAgAAcOAv+ptbw72WZZGtAABAA5/zUrb+BgAAiBMz9OsViqw+OXl9KFYBAABS
PLLv0dAvAAAgkcn0AACAQAUAAECgAgAAXCJQMWMeAAAoyjoqAADAjKyjAgAA5JV5jopRYQAAQHeB
CgAAgEAFAAAQqAAAAPQZqJgxDwAAdBeo7MyYf33oDcUAAEAK66gAAAAzMhIMAADIy2R6AABAoAIA
AAAAAAAAAAAAAAAAAAAAAACcZx0VAAAgL68nBgAABCoAAABH/qK/uTXca1kW2QoAADTwOS9l628A
AIA4MUO/XqHI6pOT14diFQAAIMUj+x4N/QIAABKZTA8AAAhUAAAABCoAAMAlAhUz5gEAgKKsowIA
AMzIOioAAEBemeeoGBUGAAB0F6gAAAAIVAAAAIEKAABAn4GKGfMAAEB3gcrOjPnXh95QDAAApLCO
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
rHXhOV8iQ9oujiFKEaXMcQLdDk+IOM+J2+T+71yilKsHKp8Vq9vr7XWSv8OpL9VA9PmQl/pR6wRF
ptYRHsGudnpC7gin9tk2RfTfE5i7Te42l1xHApVhYhUXf7m76RyFXm79n35SNM11epiEUWYR4Cp2
9CvXJX2nOrkkey/lYDK9CPU6UYpCVxMaJkGtA7TJcgmCApXSHYj057Nf760buupnf4FP9CEKFXqF
BCJWQS2a446AcgeOA5Wi3Vb5HpIt4SsQlXjNf5OjZ6w8q+cZGDKdSntiGBZ4PqtHSc/5tqWZWOuq
BcBtjz5Ku9T2eh/lBlS6rahfkztpQyqnffo2OVeeV8sl7fzEHocdiMNFkXa6HTtbZnnp9bsOdfsj
SsjKfTtvxojeMj1jb2trJ1U4eshZpWwZPgOvdNrLpSj96PUvqBFr3erRP7cc+ifelJz//ErpqyP8
jhCxz/DSPNzy7NFD2qVcRx+6DUks92ppb1JG1bo3ndS68BPu5y7DoXtItcjerCj4wEwOX/up0Mon
X9dtnaOnV8VCqytmT3vNFNXZ53Vq3RUasYi0Z8wWM+n7v95HuTpGSft8rU3b+2b4V67czgP98lQX
AKBbVqY/3bXNHusDAABf7rIAAADojScq53hgAgAAFXiiAgAAAAAAAAAAAAAAAGT1fD6fz6d8AACg
LZPpAQCA7vzn9cSvn9KXZQn88udP7+Hf2j9Wyj5LOJsnF5E9W5T7fLVuJxWHT+2+vrW6fUr+uK5L
5ElvV/Ho59m23l6hTZ6+pXWHukjLcKFA5axXQeYdKVRin/RPuU/c4gdGI6duiq8xiu4lrmKtjVwC
dX5ihn5Bj138obvgGRv6rdxwRwEAgQrAtQItgFEsy6K9ZWIPWcBXkycT9PJVIQBgjEAlsfNUYnhG
+OTaxC2rdSvzpmgnLbkmy37+s1rftJNy7yd6+fqv/bR87iF8y57zpE5WR0zlz9IynC2jvHU+vNaV
u4pb7fMzgdHtbYV2qVwZjdImt23nw+tGeF2KPoGzqS5RN6Lbz/BcOpuiEq0N3QUqWe5JgffUxIth
dXLt6qF/tyxxnm1TdGrLQF+NReWrfb5yL9S3WC2m1eSHb3nxKKXhVP7AMgo/z4HauohcyltGIZfk
9O1St2lvW+fP1uQSN83AqXqFro4S7WdgLqXUJS9iGc69SZRS4s4RPrn2d8s+30WbkqL0Lfvsm85U
7pV1WEmea5q0Kqfusj1cR18nEH6eo7d1JSp89ijlIu1S27S3rfNn095bmWa/4rK0nym5FF7uXsQy
nEf9DgFnrz2uYOdyW5bl1M+E41bsw9+6akYpoEqgLtVsP11xnAhUprlzF42bm+SPXwLk0sT38spj
J24lh2Qw9PVebhC/MhKliFI0myQFKpNFKf2P9L1yiuTSzS/67bJIzrvenae0o/1kpEBl+ihFijSd
w/l91HCpyiBKma80ZyrEhnOrLt4mi3P6L9a2ZaSGzBmo7I++AHSXm4RqFcI/Bi1KKVKXqJ/5Ie1n
2zJSQyZw3ylakSgwd3dEWweg/WSwQEX9CxT4QlXUkJ0NAjvin5ekhzAZr80SbZ2WARCrQMFARf0T
CMFFKra2DkD7yWCBSnr9q7mM1+9vzKMsg1giRddpCsct99v5ByOfJzz045T00syeCasHGn35tt6u
jp19RseufbbevymabwHftrWuRM6XSPuVb9Alrve2rQ1N/IVcY+EvFtxZ/WCnJuXaZ+LRT51n9lYp
b4p2TizXOa82SRmT33O55wpFIsrifbYhhbvzz/Ats9TkW/CbSRPLPTHnd9ZXznj0uMpzWEbNr47E
O0JKduU9z7PFl1jnE3O+UAs2RJtcIufz3rWLhi4pNTm9kU9pP1fbrpCTOZuiU61NYJ0HACCpC+s3
Y2ACd1kAAAD05iELgB2Hv8t6OA4AAADsMe4LmMafLACAQWOS1c895wQAAAAAAAAAAABgVObtAQAA
eVlHBQAAEKgAAAAciX89sbciAgAAffmcl7L1NwAAQJyYoV+vUGT1ycnrQ7EKAACQ4pF9j4Z+AQAA
iUymBwAABCoAAAACFQAA4BKBihnzAABAUdZRAQAAZmQdFQAAIK/Mc1SMCgMAALoLVAAAAAQqAACA
QAUAAKDPQMWMeQAAoLtAZWfG/OtDbygGAABSWEcFAACYkZFgAABAXibTAwAAAhUAAAAAAAAAAAAA
AACm89fDSYS/NMy7jwEA4ApMpgcAAGYMVKyjAgAAdBeoAAAACFQAAIDJPaK/+TXc6/1P890BAIBE
kU9UXmHJsizvsOT9t/kqAABAg0DlHaX8/pdYBQAASPfIvkdDvwAAgEQm0wMAAAIVAAAAgQoAAHCJ
QMWMeQAAoKi/6G9uBSoRk+nDYx4z9QEAQKByIsz4fMxyNpwQqAAAAJ8yz1ExKgwAAOguUAEAABCo
AAAAAhUAAIA+A5Xn82kWCgAA0FegsjNjPu6tXwAAAJ+sowIAAHTnEf3Nd8zgKQoAAJCXyfQAAIBA
BQAA4MgjfRcGfQEAAHl5ogIAAAhUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAICp/B8LlZPCSZcSIgAAAABJRU5ErkJggg==
--0000000000009ecac4061c8315bc--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CA%2B1FSijU75qV4qbBX3EbbN=QtGm4Q9ET0%2BWXu_a%2BGx3LK1MfZQ>