All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peter Xu <peterx@redhat.com>
To: Wei Wang <wei.w.wang@intel.com>
Cc: qemu-devel@nongnu.org, virtio-dev@lists.oasis-open.org,
	mst@redhat.com, quintela@redhat.com, dgilbert@redhat.com,
	yang.zhang.wz@gmail.com, quan.xu0@gmail.com,
	liliang.opensource@gmail.com, pbonzini@redhat.com,
	nilal@redhat.com
Subject: Re: [Qemu-devel] [PATCH v7 4/5] virtio-balloon: VIRTIO_BALLOON_F_FREE_PAGE_HINT
Date: Fri, 8 Jun 2018 09:37:23 +0800	[thread overview]
Message-ID: <20180608013723.GQ750@xz-mi> (raw)
In-Reply-To: <5B191EA6.3020004@intel.com>

On Thu, Jun 07, 2018 at 08:01:42PM +0800, Wei Wang wrote:
> On 06/07/2018 02:58 PM, Peter Xu wrote:
> > On Thu, Jun 07, 2018 at 01:29:22PM +0800, Wei Wang wrote:
> > > > > > [...]
> > > > > > > +static const VMStateDescription vmstate_virtio_balloon_free_page_report = {
> > > > > > > +    .name = "virtio-balloon-device/free-page-report",
> > > > > > > +    .version_id = 1,
> > > > > > > +    .minimum_version_id = 1,
> > > > > > > +    .needed = virtio_balloon_free_page_support,
> > > > > > > +    .fields = (VMStateField[]) {
> > > > > > > +        VMSTATE_UINT32(free_page_report_cmd_id, VirtIOBalloon),
> > > > > > > +        VMSTATE_UINT32(poison_val, VirtIOBalloon),
> > > > > > (could we move all the poison-related lines into another patch or
> > > > > >     postpone?  after all we don't support it yet, do we?)
> > > > > > 
> > > > >    We don't support migrating poison value, but guest maybe use it, so we are
> > > > > actually disabling this feature in that case. Probably good to leave the
> > > > > code together to handle that case.
> > > > Could we just avoid declaring that feature bit in emulation code
> > > > completely?  I mean, we support VIRTIO_BALLOON_F_FREE_PAGE_HINT first
> > > > as the first step (as you mentioned in commit message, the POISON is a
> > > > TODO).  Then when you really want to completely support the POISON
> > > > bit, you can put all that into a separate patch.  Would that work?
> > > > 
> > > Not really. The F_PAGE_POISON isn't a feature configured via QEMU cmd line
> > > like F_FREE_PAGE_HINT. We always set F_PAGE_POISON if F_FREE_PAGE_HINT is
> > > enabled. It is used to detect if the guest is using page poison.
> > Ok I think I kind of understand.  But it seems strange to me to have
> > this as a feature bit.  I thought it suites more to be a config field
> > so that guest could setup.  Like, we can have 1 byte to setup "whether
> > PAGE_POISON is used in the guest", another 1 byte to setup "what is
> > the PAGE_POISON value if it's enabled".
> 
> This is also suggested by Michael, which sounds good to me. Using config is
> doable, but that doesn't show advantages over using feature bits.
> 
> 
> 
> > 
> > Asked since I see this in virtio spec (v1.0, though I guess it won't
> > change) in chapter "2.2.1 Driver Requirements: Feature Bits":
> > 
> > "The driver MUST NOT accept a feature which the device did not offer"
> > 
> > Then I'm curious what would happen if:
> > 
> > - a emulator (not QEMU) only offered F_FREE_PAGE_HINT, not F_POISON
> > - a guest that enabled PAGE_POISON
> > 
> > Then how the driver could tell the host that PAGE_POISON is enabled
> > considering that guest should never set that feature bit if the
> > emulation code didn't provide it?
> > 
> 
> All the emulator implementations need to follow the virtio spec. We will
> finally have this feature written to the virtio-balloon device section, and
> state that the F_PAGE_POISON needs to be set on the device when
> F_FREE_PAGE_HINT is set on the device.

Okay.  Still I would think a single feature cleaner here since they
are actually tightly bound together, e.g., normally AFAIU this only
happens when we introduce FEATURE1, after a while we introduced
FEATURE2, then we need to have two features there since there are
emulators that are already running only with FEATURE1.

AFAICT the thing behind is that your kernel patches are split (one for
FEATURE1, one for FEATURE2), however when you only have FEATURE1 it's
actually broken (if without the POISON support, PAGE_HINT feature
might be broken).  So it would be nicer if the kernel patches are
squashed so that no commit would broke any guest.  And, if they are
squashed then IMHO we don't need two feature bits at all. ;)

But anyway, I understand it now.  Thanks,

-- 
Peter Xu

  reply	other threads:[~2018-06-08  1:37 UTC|newest]

Thread overview: 93+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-04-24  6:13 [Qemu-devel] [PATCH v7 0/5] virtio-balloon: free page hint reporting support Wei Wang
2018-04-24  6:13 ` [virtio-dev] " Wei Wang
2018-04-24  6:13 ` [Qemu-devel] [PATCH v7 1/5] bitmap: bitmap_count_one_with_offset Wei Wang
2018-04-24  6:13   ` [virtio-dev] " Wei Wang
2018-04-24  6:13 ` [Qemu-devel] [PATCH v7 2/5] migration: use bitmap_mutex in migration_bitmap_clear_dirty Wei Wang
2018-04-24  6:13   ` [virtio-dev] " Wei Wang
2018-06-01  3:37   ` [Qemu-devel] " Peter Xu
2018-04-24  6:13 ` [Qemu-devel] [PATCH v7 3/5] migration: API to clear bits of guest free pages from the dirty bitmap Wei Wang
2018-04-24  6:13   ` [virtio-dev] " Wei Wang
2018-06-01  4:00   ` [Qemu-devel] " Peter Xu
2018-06-01  7:36     ` Wei Wang
2018-06-01  7:36       ` [virtio-dev] " Wei Wang
2018-06-01 10:06       ` Peter Xu
2018-06-01 12:32         ` Wei Wang
2018-06-01 12:32           ` [virtio-dev] " Wei Wang
2018-06-04  2:49           ` Peter Xu
2018-06-04  7:43             ` Wei Wang
2018-06-04  7:43               ` [virtio-dev] " Wei Wang
2018-04-24  6:13 ` [Qemu-devel] [PATCH v7 4/5] virtio-balloon: VIRTIO_BALLOON_F_FREE_PAGE_HINT Wei Wang
2018-04-24  6:13   ` [virtio-dev] " Wei Wang
2018-05-29 15:24   ` [Qemu-devel] " Michael S. Tsirkin
2018-05-29 15:24     ` [virtio-dev] " Michael S. Tsirkin
2018-05-30  9:12     ` [Qemu-devel] " Wei Wang
2018-05-30  9:12       ` [virtio-dev] " Wei Wang
2018-05-30 12:47       ` [Qemu-devel] " Michael S. Tsirkin
2018-05-30 12:47         ` [virtio-dev] " Michael S. Tsirkin
2018-05-31  2:27         ` [Qemu-devel] " Wei Wang
2018-05-31  2:27           ` [virtio-dev] " Wei Wang
2018-05-31 17:42           ` [Qemu-devel] " Michael S. Tsirkin
2018-05-31 17:42             ` [virtio-dev] " Michael S. Tsirkin
2018-06-01  3:18             ` [Qemu-devel] " Wei Wang
2018-06-01  3:18               ` [virtio-dev] " Wei Wang
2018-06-04  8:04         ` [Qemu-devel] " Wei Wang
2018-06-04  8:04           ` [virtio-dev] " Wei Wang
2018-06-05  6:58           ` [Qemu-devel] " Peter Xu
2018-06-05 13:22             ` Wei Wang
2018-06-05 13:22               ` [virtio-dev] " Wei Wang
2018-06-06  5:42               ` [Qemu-devel] " Peter Xu
2018-06-06 10:04                 ` Wei Wang
2018-06-06 10:04                   ` [virtio-dev] " Wei Wang
2018-06-06 11:02                   ` [Qemu-devel] " Peter Xu
2018-06-07  5:24                     ` Wei Wang
2018-06-07  5:24                       ` [virtio-dev] " Wei Wang
2018-06-07  6:32                       ` [Qemu-devel] " Peter Xu
2018-06-07 11:59                         ` Wei Wang
2018-06-07 11:59                           ` [virtio-dev] " Wei Wang
2018-06-08  2:17                           ` [Qemu-devel] " Peter Xu
2018-06-08  7:14                             ` Wei Wang
2018-06-08  7:14                               ` [virtio-dev] " Wei Wang
2018-06-08  7:31                         ` [Qemu-devel] " Wei Wang
2018-06-08  7:31                           ` [virtio-dev] " Wei Wang
2018-06-06  6:43   ` [Qemu-devel] " Peter Xu
2018-06-06 10:11     ` Wei Wang
2018-06-06 10:11       ` [virtio-dev] " Wei Wang
2018-06-07  3:17       ` Peter Xu
2018-06-07  5:29         ` Wei Wang
2018-06-07  5:29           ` [virtio-dev] " Wei Wang
2018-06-07  6:58           ` Peter Xu
2018-06-07 12:01             ` Wei Wang
2018-06-07 12:01               ` [virtio-dev] " Wei Wang
2018-06-08  1:37               ` Peter Xu [this message]
2018-06-08  1:58                 ` Peter Xu
2018-06-08  1:58                 ` Michael S. Tsirkin
2018-06-08  1:58                   ` [virtio-dev] " Michael S. Tsirkin
2018-06-08  2:34                   ` Peter Xu
2018-06-08  2:49                     ` Michael S. Tsirkin
2018-06-08  2:49                       ` [virtio-dev] " Michael S. Tsirkin
2018-06-08  3:34                       ` Peter Xu
2018-04-24  6:13 ` [Qemu-devel] [PATCH v7 5/5] migration: use the free page hint feature from balloon Wei Wang
2018-04-24  6:13   ` [virtio-dev] " Wei Wang
2018-04-24  6:42 ` [Qemu-devel] [PATCH v7 0/5] virtio-balloon: free page hint reporting support Wei Wang
2018-04-24  6:42   ` [virtio-dev] " Wei Wang
2018-05-14  1:22 ` [Qemu-devel] " Wei Wang
2018-05-14  1:22   ` [virtio-dev] " Wei Wang
2018-05-29 15:00 ` [Qemu-devel] " Hailiang Zhang
2018-05-29 15:24   ` Michael S. Tsirkin
2018-05-29 15:24     ` [virtio-dev] " Michael S. Tsirkin
2018-06-01  4:58 ` Peter Xu
2018-06-01  5:07   ` Peter Xu
2018-06-01  7:29     ` Wei Wang
2018-06-01  7:29       ` [virtio-dev] " Wei Wang
2018-06-01 10:02       ` Peter Xu
2018-06-01 12:31         ` Wei Wang
2018-06-01 12:31           ` [virtio-dev] " Wei Wang
2018-06-01  7:21   ` Wei Wang
2018-06-01  7:21     ` [virtio-dev] " Wei Wang
2018-06-01 10:40     ` Peter Xu
2018-06-01 15:33       ` Dr. David Alan Gilbert
2018-06-05  6:42         ` Peter Xu
2018-06-05 14:40           ` Michael S. Tsirkin
2018-06-05 14:40             ` [virtio-dev] " Michael S. Tsirkin
2018-06-05 14:39         ` Michael S. Tsirkin
2018-06-05 14:39           ` [virtio-dev] " Michael S. Tsirkin

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=20180608013723.GQ750@xz-mi \
    --to=peterx@redhat.com \
    --cc=dgilbert@redhat.com \
    --cc=liliang.opensource@gmail.com \
    --cc=mst@redhat.com \
    --cc=nilal@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=quan.xu0@gmail.com \
    --cc=quintela@redhat.com \
    --cc=virtio-dev@lists.oasis-open.org \
    --cc=wei.w.wang@intel.com \
    --cc=yang.zhang.wz@gmail.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.