All of lore.kernel.org
 help / color / mirror / Atom feed
From: Paolo Bonzini <pbonzini@redhat.com>
To: Eduardo Habkost <ehabkost@redhat.com>
Cc: qemu-devel@nongnu.org, famz@redhat.com, mprivozn@redhat.com,
	bsd@redhat.com, qemu-stable@nongnu.org,
	Yang Hongyang <yanghy@cn.fujitsu.com>,
	Jason Wang <jasowang@redhat.com>
Subject: Re: [Qemu-devel] [PATCH] vl: Delay initialization of memory backends
Date: Fri, 2 Sep 2016 10:59:21 +0200	[thread overview]
Message-ID: <bab0e5ec-fb80-47fd-af7b-01b4716d574d@redhat.com> (raw)
In-Reply-To: <20160901193445.GF1151@thinpad.lan.raisama.net>



On 01/09/2016 21:34, Eduardo Habkost wrote:
> 1) vhost_user_set_mem_table() fails because dev->mem->nregions is 0
> 2) dev->mem->nregions is supposed to get new entries based on the
>    memory listener callbacks
> 3) vhost_region_add() gets called properly, and calls
>    vhost_set_memory(), but:
> 4) vhost_set_memory() forces add=false if
>    memory_region_get_dirty_log_mask(section->mr) & ~(1 << DIRTY_MEMORY_MIGRATION)
>    (I have no idea why)

DIRTY_MEMORY_MIGRATION is special-cased because, when it is activated,
it is reported to the MemoryListener in two different ways: through
log_global_start/stop and through log_start/stop.  vhost only supports
the former.

> 5) memory_region_init_ram_from_file() sets:
>    mr->dirty_log_mask = tcg_enabled() ? (1 << DIRTY_MEMORY_CODE) : 0;
>    (I don't understand what are the consequences of this)

TCG requires precise dirty page tracking for all memory, in order to
figure out when to recompile code.  It is the same as migration in that
it is global, but it is not the same in that it must be precise at all
times---it cannot use for example memory_region_sync_dirty_bitmap (which
calls log_sync on the MemoryListener to fetch the dirty bitmap from the
vhost server).  So TCG is quite fundamentally incompatible with vhost.

> 6) The tcg_enabled() check above is broken if the memory region
>    is created before configure_accelerator() is called. My patch
>    moves memory backend initialization after
>    configure_accelerator()
> 
> I'm very confused. My patch seems to fix the dirty_log_mask
> initialization at (5) by accident? But for some reason this
> breaks vhost-user and makes it ignore all memory regions if using
> TCG? (vhost-user-test forces accel=tcg, BTW)

Yes, your patch fixes a bug actually.  Perhaps you can add an
x-i-know-what-i-am-doing flag for vhost-user that is used by the test,
or we can just restrict vhost-user-test to KVM and hence x86 Linux hosts.

Paolo

> As I have no idea why vhost_set_memory() ignores the memory
> region based on memory_region_get_dirty_log_mask(), I don't know
> what's supposed to be happening here. Any help would be
> appreciated.
> 

  parent reply	other threads:[~2016-09-02  8:59 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-08-31 20:17 [Qemu-devel] [PATCH] vl: Delay initialization of memory backends Eduardo Habkost
2016-08-31 21:47 ` no-reply
2016-09-01 15:10   ` Eduardo Habkost
2016-09-01 15:41     ` Paolo Bonzini
2016-09-01 17:39       ` Eduardo Habkost
2016-09-01 19:34         ` Eduardo Habkost
2016-09-01 22:29           ` Bandan Das
2016-09-02  8:59           ` Paolo Bonzini [this message]
2016-09-02 14:04             ` Eduardo Habkost
2016-09-02 14:56               ` Paolo Bonzini
2016-09-02 18:10                 ` Eduardo Habkost
2016-09-05 11:53                   ` Paolo Bonzini
2016-09-01 16:52     ` Michal Privoznik
2016-09-01 17:26       ` Eduardo Habkost
2016-09-02  6:13     ` Markus Armbruster

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=bab0e5ec-fb80-47fd-af7b-01b4716d574d@redhat.com \
    --to=pbonzini@redhat.com \
    --cc=bsd@redhat.com \
    --cc=ehabkost@redhat.com \
    --cc=famz@redhat.com \
    --cc=jasowang@redhat.com \
    --cc=mprivozn@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-stable@nongnu.org \
    --cc=yanghy@cn.fujitsu.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.