Date: Fri, 31 May 2024 00:03:25 -0400 From: Emil Tsalapatis <emil@etsalapatis.com> To: Mario Marietto <marietto2008@gmail.com> Cc: Tomek CEDRO <tomek@cedro.info>, Virtualisation on FreeBSD <freebsd-virtualization@freebsd.org> Subject: Re: [RFC] virtio testing framework Message-ID: <CABFh=a7okvB1J8atzP1hKjVqQim%2BNmk2hk0C58ECZoS9R19V-w@mail.gmail.com> In-Reply-To: <CA%2B1FSiiJkQtdqtK0%2BuvGqzmZYC_b_9U6eA6TRpZ6S47Jpwtaqw@mail.gmail.com> References: <CABFh=a7-v_c_x6pGW86z1AX95FmcCWEuWciNxPmAOWs31V=s5Q@mail.gmail.com> <CAFYkXj=xnnYMk9PUe3j6BA1Z6mt_-Q=1XgpzfZ0bBpnagVXpoA@mail.gmail.com> <CA%2B1FSiiJkQtdqtK0%2BuvGqzmZYC_b_9U6eA6TRpZ6S47Jpwtaqw@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
--0000000000008251b30619b81e45 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Not sure about the followup, but the patch I describe in the original post allows us to write and run tests for virtio drivers inside a VM. I originally wrote this because we have tests for the virtiofs paravirt device where we need to run both the paravirt driver and the device emulation in the same machine. The virtio stack is not designed for this - it expects the virtio driver to be running in the guest, and device emulation to be running in the host. This patchset introduces a way to emulate a virtio device in the guest for the purpose of running these virtiofs tests. The links in the original email describe the design in more detail, but just to reiterate, the code in this patch makes no functional changes to existing code. --Emil On Thu, May 30, 2024 at 6:19=E2=80=AFPM Mario Marietto <marietto2008@gmail.= com> wrote: > Can someone explain to me what the purpose of what you are talking about = ? > > > On Thu, May 30, 2024 at 10:38=E2=80=AFPM Tomek CEDRO <tomek@cedro.info> w= rote: > >> Awesome!! Congrats :-) >> >> Here is some example of running NuttX RTOS on RV in a web browser using >> TinyEMU + VirtIO :-) >> >> https://github.com/lupyuen/nuttx-tinyemu >> >> -- >> CeDeROM, SQ7MHZ, http://www.tomek.cedro.info >> >> On Thu, May 30, 2024, 22:16 Emil Tsalapatis <emil@etsalapatis.com> wrote= : >> >>> Hi everyone, >>> >>> while developing a virtiofs kernel driver I have written a debug >>> virtio transport to test virtio drivers inside a VM without requiring >>> nested virtualization or support from the host. The transport allows >>> paravirt devices to be emulated in local userspace instead of a host, s= o we >>> can create paravirt devices and test them as necessary. For virtiofs in >>> particular, it allows us to reuse the existing FUSE tests since we can = now >>> run both the virtiofs driver and the FUSE server (which is normally in = the >>> host) in a single machine. >>> >>> I have uploaded the WIP code [here <https://reviews.freebsd.org/D45370>= ], >>> and an overview of the design [here >>> <https://gist.github.com/etsal/4280b6f16c1815d64ffda7ecce0b66f5>]. The >>> patch has a ways to go, and currently only supports virtio-blk device >>> emulation as a PoC, but feedback is welcome and appreciated. Please als= o >>> let me know if there is interest in using this for testing other virtio >>> devices apart from virtiofs. >>> >>> --Emil >>> >> > > -- > Mario. > --0000000000008251b30619b81e45 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div>Not sure about the followup, but the patch I describe= in the original post allows us to write and run tests for virtio drivers i= nside a VM. I originally wrote this because we have tests for the virtiofs = paravirt device where we need to run both the paravirt driver and the devic= e emulation in the same machine. The virtio stack is not designed for this = - it expects the virtio driver to be running in the guest, and device emula= tion to be running in the host. This patchset introduces a way to emulate a= virtio device in the guest for the purpose of running these virtiofs tests= . The links in the original email describe the design in more detail, but j= ust to reiterate, the code in this patch makes no functional changes to exi= sting code.<br></div><div><br></div><div>--Emil<br></div></div><br><div cla= ss=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Thu, May 30, 20= 24 at 6:19=E2=80=AFPM Mario Marietto <<a href=3D"mailto:marietto2008@gma= il.com">marietto2008@gmail.com</a>> wrote:<br></div><blockquote class=3D= "gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(2= 04,204,204);padding-left:1ex"><div dir=3D"ltr">Can someone explain to me <s= pan lang=3D"en"><span><span>what the purpose of what you are talking about = ?</span></span></span><span></span><div><br></div></div><br><div class=3D"g= mail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Thu, May 30, 2024 at 1= 0:38=E2=80=AFPM Tomek CEDRO <<a href=3D"mailto:tomek@cedro.info" target= =3D"_blank">tomek@cedro.info</a>> wrote:<br></div><blockquote class=3D"g= mail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204= ,204,204);padding-left:1ex"><div dir=3D"auto"><div>Awesome!! Congrats :-)</= div><div dir=3D"auto"><br></div><div dir=3D"auto">Here is some example of r= unning NuttX RTOS on RV in a web browser using TinyEMU + VirtIO :-)</div><d= iv dir=3D"auto"><br></div><div><a href=3D"https://github.com/lupyuen/nuttx-= tinyemu" target=3D"_blank">https://github.com/lupyuen/nuttx-tinyemu</a><br>= </div><div dir=3D"auto"><br></div><div>--<br>CeDeROM, SQ7MHZ, <a href=3D"ht= tp://www.tomek.cedro.info" target=3D"_blank">http://www.tomek.cedro.info</a= ></div></div><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail= _attr">On Thu, May 30, 2024, 22:16 Emil Tsalapatis <<a href=3D"mailto:em= il@etsalapatis.com" target=3D"_blank">emil@etsalapatis.com</a>> wrote:<b= r></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex= ;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr">= Hi everyone,<br><br>=C2=A0 =C2=A0 while developing a virtiofs kernel driver= I have written a debug virtio transport to test virtio drivers inside a VM= without requiring nested virtualization or support from=20 the host. The transport allows paravirt devices to be emulated in local=20 userspace instead of a host, so we can create paravirt devices and test=20 them as necessary. For virtiofs in particular, it allows us to reuse the existing FUSE tests since we can now run both the virtiofs driver and=20 the FUSE server (which is normally in the host) in a single machine.<br><di= v><br></div><div>I have uploaded the WIP code [<a href=3D"https://reviews.f= reebsd.org/D45370" rel=3D"noreferrer" target=3D"_blank">here</a>], and an o= verview of the design [<a href=3D"https://gist.github.com/etsal/4280b6f16c1= 815d64ffda7ecce0b66f5" rel=3D"noreferrer" target=3D"_blank">here</a>]. The patch has a ways to go, and currently only supports virtio-blk=20 device emulation as a PoC, but feedback is welcome and appreciated.=20 Please also let me know if there is interest in using this for testing=20 other virtio devices apart from virtiofs.</div><font color=3D"#888888"><br>= --Emil</font></div> </blockquote></div> </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> --0000000000008251b30619b81e45--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CABFh=a7okvB1J8atzP1hKjVqQim%2BNmk2hk0C58ECZoS9R19V-w>