qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Stefan Hajnoczi <stefanha@gmail.com>
To: Eugenio Perez Martin <eperezma@redhat.com>
Cc: qemu-devel <qemu-devel@nongnu.org>, kvm <kvm@vger.kernel.org>,
	"Alberto Faria" <afaria@redhat.com>,
	"Alex Bennée" <alex.bennee@linaro.org>,
	"German Maglione" <gmaglione@redhat.com>,
	"Marc-André Lureau" <marcandre.lureau@redhat.com>,
	"Richard W.M. Jones" <rjones@redhat.com>,
	"Stefano Garzarella" <sgarzare@redhat.com>,
	"Warner Losh" <imp@bsdimp.com>,
	"Philippe Mathieu-Daudé" <philmd@linaro.org>,
	"Paolo Bonzini" <pbonzini@redhat.com>,
	"Thomas Huth" <thuth@redhat.com>,
	"Daniel Henrique Barboza" <danielhb413@gmail.com>,
	"Song Gao" <gaosong@loongson.cn>,
	"Akihiko Odaki" <akihiko.odaki@daynix.com>,
	"Bernhard Beschow" <shentey@gmail.com>,
	"Nicholas Piggin" <npiggin@gmail.com>,
	"Sean Christopherson" <seanjc@google.com>,
	"Marc Zyngier" <maz@kernel.org>
Subject: Re: Call for GSoC/Outreachy internship project ideas
Date: Mon, 29 Jan 2024 14:39:45 -0500	[thread overview]
Message-ID: <CAJSP0QXMJiRQFJh6383tnCOXyLwAbBYM7ff-mtregO3MKAEC1A@mail.gmail.com> (raw)
In-Reply-To: <CAJaqyWdMNP3V=JL6C8SSbXV5AP_2O9SNJLUS+Go7AjVsrT1FdQ@mail.gmail.com>

On Mon, 29 Jan 2024 at 13:53, Eugenio Perez Martin <eperezma@redhat.com> wrote:
>
> On Mon, Jan 15, 2024 at 5:33 PM Stefan Hajnoczi <stefanha@gmail.com> wrote:
> >
> > Dear QEMU and KVM communities,
> > QEMU will apply for the Google Summer of Code and Outreachy internship
> > programs again this year. Regular contributors can submit project
> > ideas that they'd like to mentor by replying to this email before
> > January 30th.
> >
>
>
> === Add packed virtqueue to Shadow Virtqueue ===

Yes! I'm a fan of packed virtqueues, so I'm excited to see this project idea :).

> Summary: Add the packed virtqueue format support to QEMU's Shadow Virtqueue.
>
> To perform a virtual machine live migration with an external device to
> qemu, qemu needs a way to know which memory the device modifies so it
> is able to resend it. Otherwise the guest would resume with invalid /
> outdated memory in the destination.
>
> This is especially hard with passthrough hardware devices, as
> transports like PCI imposes a few security and performance challenges.
> As a method to overcome this for virtio devices, qemu can offer an
> emulated virtqueue to the device, called Shadow Virtqueue (SVQ),
> instead of allowing the device to communicate directly with the guest.
> SVQ will then forward the writes to the guest, being the effective
> writer in the guest memory and knowing when a portion of it needs to
> be resent.
>
> Compared with original Split Virtqueues, already supported by Shadow
> Virtqueue, Packed virtqueue is a more compact representation that uses
> less memory size and allows both devices and drivers to exchange the
> same amount of information with less memory operations.
>
> The task is to complete the packed virtqueue support for SVQ, using
> the kernel virtio ring driver as a reference. There is already a setup
> that can be used to test the changes.
>
> Links:
> * https://www.redhat.com/en/blog/virtio-devices-and-drivers-overview-headjack-and-phone
> * https://www.redhat.com/en/blog/virtqueues-and-virtio-ring-how-data-travels
> * https://www.redhat.com/en/blog/packed-virtqueue-how-reduce-overhead-virtio
> * https://www.youtube.com/watch?v=x9ARoNVzS04
>
> Details:
> * Skill level: Intermediate
> * Language: C

I have added this project idea to the wiki. I made minor edits (e.g.
consistently using "guest" instead of both "virtual machine" and
"guest" to minimize the amount of terminology). I also added a link to
the vhost-shadow-virtqueue.c source code so applicants have a starting
point for researching the code.

https://wiki.qemu.org/Internships/ProjectIdeas/PackedShadowVirtqueue

Please edit the page to clarify the following:
- Project size: 90 (small), 175 (medium), or 350 (large) hours
- A list of suggested tasks for the coding period that applicants can
research and refine for their project plan

Possible stretch goals if the intern completes packed svq support
early or maybe you have your own ideas:
- Split/rename vhost-shadow-virtqueue.c into a VIRTIO driver-side
virtqueue API (which could be used by any other feature that acts as a
VIRTIO driver, like vhost-user clients) and shadow virtqueue logic
- Implement packed virtqueue support in other components where it is
not yet supported (like kernel vhost)

Stefan


  reply	other threads:[~2024-01-29 19:40 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-01-15 16:32 Call for GSoC/Outreachy internship project ideas Stefan Hajnoczi
     [not found] ` <CAAfnVBn0+627rLGXeLdsvUge0_VegcbTVuQf8rQwtjuJ3hcJnA@mail.gmail.com>
2024-01-24 12:51   ` Stefan Hajnoczi
2024-01-31 23:55     ` Gurchetan Singh
2024-02-01  0:11       ` Stefan Hajnoczi
2024-01-29 18:53 ` Eugenio Perez Martin
2024-01-29 19:39   ` Stefan Hajnoczi [this message]
2024-01-30 12:08     ` Eugenio Perez Martin
2024-01-30 19:34       ` Stefan Hajnoczi
2024-01-31 10:37         ` Eugenio Perez Martin
2024-01-30 19:16 ` Alexander Graf
2024-01-30 20:15   ` Stefan Hajnoczi
2024-01-30 19:40 ` Palmer Dabbelt
2024-01-30 20:28   ` Stefan Hajnoczi
2024-01-31  0:29     ` Palmer Dabbelt
2024-01-31  1:26       ` Alistair Francis
2024-01-31  1:50         ` Palmer Dabbelt
2024-02-01 17:39       ` Alex Bennée
2024-02-01 18:01         ` Palmer Dabbelt
2024-02-01 18:57           ` Alex Bennée
2024-02-01 19:06             ` Palmer Dabbelt
2024-01-31 14:39   ` Stefan Hajnoczi
2024-01-31 15:59     ` Palmer Dabbelt
2024-01-31 18:20       ` Stefan Hajnoczi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAJSP0QXMJiRQFJh6383tnCOXyLwAbBYM7ff-mtregO3MKAEC1A@mail.gmail.com \
    --to=stefanha@gmail.com \
    --cc=afaria@redhat.com \
    --cc=akihiko.odaki@daynix.com \
    --cc=alex.bennee@linaro.org \
    --cc=danielhb413@gmail.com \
    --cc=eperezma@redhat.com \
    --cc=gaosong@loongson.cn \
    --cc=gmaglione@redhat.com \
    --cc=imp@bsdimp.com \
    --cc=kvm@vger.kernel.org \
    --cc=marcandre.lureau@redhat.com \
    --cc=maz@kernel.org \
    --cc=npiggin@gmail.com \
    --cc=pbonzini@redhat.com \
    --cc=philmd@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=rjones@redhat.com \
    --cc=seanjc@google.com \
    --cc=sgarzare@redhat.com \
    --cc=shentey@gmail.com \
    --cc=thuth@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).