All of lore.kernel.org
 help / color / mirror / Atom feed
From: Igor Mammedov <imammedo@redhat.com>
To: "Michael S. Tsirkin" <mst@redhat.com>
Cc: qemu-devel@nongnu.org, Peter Maydell <peter.maydell@linaro.org>,
	"Dr. David Alan Gilbert" <dgilbert@redhat.com>
Subject: Re: [Qemu-devel] [PULL 22/33] vhost: Move log_dirty check
Date: Tue, 16 Jan 2018 14:27:37 +0100	[thread overview]
Message-ID: <20180116142737.30a4e4cd@redhat.com> (raw)
In-Reply-To: <1516077852-7974-23-git-send-email-mst@redhat.com>

On Tue, 16 Jan 2018 06:48:06 +0200
"Michael S. Tsirkin" <mst@redhat.com> wrote:

> From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
> 
> Move the log_dirty check into vhost_section.
> 
> Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
> Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
As it change looks unsafe to me with current vhost_set_memory(),

I'd leave it out and merge only after switching new
table generation algorithm.

David agreed to take care of it on respin.

> ---
>  hw/virtio/vhost.c      | 20 +++++++++++++-------
>  hw/virtio/trace-events |  3 +++
>  2 files changed, 16 insertions(+), 7 deletions(-)
> 
> diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c
> index 8a85dde..83df043 100644
> --- a/hw/virtio/vhost.c
> +++ b/hw/virtio/vhost.c
> @@ -27,6 +27,7 @@
>  #include "hw/virtio/virtio-access.h"
>  #include "migration/blocker.h"
>  #include "sysemu/dma.h"
> +#include "trace.h"
>  
>  /* enabled until disconnected backend stabilizes */
>  #define _VHOST_DEBUG 1
> @@ -567,18 +568,12 @@ static void vhost_set_memory(MemoryListener *listener,
>                                           memory_listener);
>      hwaddr start_addr = section->offset_within_address_space;
>      ram_addr_t size = int128_get64(section->size);
> -    bool log_dirty =
> -        memory_region_get_dirty_log_mask(section->mr) & ~(1 << DIRTY_MEMORY_MIGRATION);
>      int s = offsetof(struct vhost_memory, regions) +
>          (dev->mem->nregions + 1) * sizeof dev->mem->regions[0];
>      void *ram;
>  
>      dev->mem = g_realloc(dev->mem, s);
>  
> -    if (log_dirty) {
> -        add = false;
> -    }
> -
>      assert(size);
>  
>      /* Optimize no-change case. At least cirrus_vga does this a lot at this time. */
> @@ -611,8 +606,19 @@ static void vhost_set_memory(MemoryListener *listener,
>  
>  static bool vhost_section(MemoryRegionSection *section)
>  {
> -    return memory_region_is_ram(section->mr) &&
> +    bool result;
> +    bool log_dirty = memory_region_get_dirty_log_mask(section->mr) &
> +                     ~(1 << DIRTY_MEMORY_MIGRATION);
> +    result = memory_region_is_ram(section->mr) &&
>          !memory_region_is_rom(section->mr);
> +
> +    /* Vhost doesn't handle any block which is doing dirty-tracking other
> +     * than migration; this typically fires on VGA areas.
> +     */
> +    result &= !log_dirty;
> +
> +    trace_vhost_section(section->mr->name, result);
> +    return result;
>  }
>  
>  static void vhost_begin(MemoryListener *listener)
> diff --git a/hw/virtio/trace-events b/hw/virtio/trace-events
> index 775461a..4a493bc 100644
> --- a/hw/virtio/trace-events
> +++ b/hw/virtio/trace-events
> @@ -1,5 +1,8 @@
>  # See docs/devel/tracing.txt for syntax documentation.
>  
> +# hw/virtio/vhost.c
> +vhost_section(const char *name, int r) "%s:%d"
> +
>  # hw/virtio/virtio.c
>  virtqueue_alloc_element(void *elem, size_t sz, unsigned in_num, unsigned out_num) "elem %p size %zd in_num %u out_num %u"
>  virtqueue_fill(void *vq, const void *elem, unsigned int len, unsigned int idx) "vq %p elem %p len %u idx %u"

  reply	other threads:[~2018-01-16 13:28 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-01-16  4:46 [Qemu-devel] [PULL 00/33] pc, pci, virtio: features, fixes, cleanups Michael S. Tsirkin
2018-01-16  4:46 ` [Qemu-devel] [PULL 01/33] MAINTAINERS: Add myself as maintainer to X86 machines Michael S. Tsirkin
2018-01-16  5:55   ` Thomas Huth
2018-01-16  4:46 ` [Qemu-devel] [PULL 02/33] vhost-user: add new vhost user messages to support virtio config space Michael S. Tsirkin
2018-01-16  4:46 ` [Qemu-devel] [PULL 03/33] vhost-user-blk: introduce a new vhost-user-blk host device Michael S. Tsirkin
2018-01-16  4:46 ` [Qemu-devel] [PULL 04/33] contrib/libvhost-user: enable virtio config space messages Michael S. Tsirkin
2018-01-16  4:46 ` [Qemu-devel] [PULL 05/33] contrib/vhost-user-blk: introduce a vhost-user-blk sample application Michael S. Tsirkin
2018-01-16  4:46 ` [Qemu-devel] [PULL 06/33] qemu: add a cleanup callback function to EventNotifier Michael S. Tsirkin
2018-01-16  4:46 ` [PULL 07/33] virtio: postpone the execution of event_notifier_cleanup function Michael S. Tsirkin
2018-01-16  4:46   ` [Qemu-devel] " Michael S. Tsirkin
2018-01-16  4:46 ` [Qemu-devel] [PULL 08/33] virtio: improve virtio devices initialization time Michael S. Tsirkin
2018-01-16  4:47 ` [Qemu-devel] [PULL 09/33] pci/shpc: Move function to generic header file Michael S. Tsirkin
2018-01-16  4:47 ` [Qemu-devel] [PULL 10/33] vhost-user: fix multiple queue specification Michael S. Tsirkin
2018-01-16  4:47 ` [Qemu-devel] [PULL 11/33] intel-iommu: Redefine macros to enable supporting 48 bit address width Michael S. Tsirkin
2018-01-16  4:47 ` [Qemu-devel] [PULL 12/33] intel-iommu: Extend address width to 48 bits Michael S. Tsirkin
2018-01-16  4:47 ` [Qemu-devel] [PULL 13/33] hw/pci-bridge: fix QEMU crash because of pcie-root-port Michael S. Tsirkin
2018-01-16  4:47 ` [Qemu-devel] [PULL 14/33] ACPI/unit-test: Add a testcase for RAM allocation in numa node Michael S. Tsirkin
2018-01-16  4:47 ` [Qemu-devel] [PULL 15/33] hw/acpi-build: Make next_base easy to follow Michael S. Tsirkin
2018-01-16  4:47 ` [Qemu-devel] [PULL 16/33] vhost-user-test: fix features mask Michael S. Tsirkin
2018-01-16  4:47 ` [Qemu-devel] [PULL 17/33] vhost-user-test: extract read-guest-mem test from main loop Michael S. Tsirkin
2018-01-16  4:47 ` [Qemu-devel] [PULL 18/33] vhost-user-test: setup virtqueues in all tests Michael S. Tsirkin
2018-01-16  4:47 ` [Qemu-devel] [PULL 19/33] vhost-user-test: make features mask an init_virtio_dev() argument Michael S. Tsirkin
2018-01-16  4:47 ` [Qemu-devel] [PULL 20/33] vhost-user-test: use init_virtio_dev in multiqueue test Michael S. Tsirkin
2018-01-16  4:48 ` [Qemu-devel] [PULL 21/33] vhost: Build temporary section list and deref after commit Michael S. Tsirkin
2018-01-16  4:48 ` [Qemu-devel] [PULL 22/33] vhost: Move log_dirty check Michael S. Tsirkin
2018-01-16 13:27   ` Igor Mammedov [this message]
2018-01-16  4:48 ` [Qemu-devel] [PULL 23/33] vhost: Simplify ring verification checks Michael S. Tsirkin
2018-01-16  4:48 ` [Qemu-devel] [PULL 24/33] vhost: Merge sections added to temporary list Michael S. Tsirkin
2018-01-16  4:48 ` [Qemu-devel] [PULL 25/33] x86_iommu: Move machine check to x86_iommu_realize() Michael S. Tsirkin
2018-01-16  4:48 ` [Qemu-devel] [PULL 26/33] x86_iommu: check if machine has PCI bus Michael S. Tsirkin
2018-01-16  4:48 ` [Qemu-devel] [PULL 27/33] tests: acpi: move tested tables array allocation outside of test_acpi_dsdt_table() Michael S. Tsirkin
2018-01-16  4:48 ` [Qemu-devel] [PULL 28/33] tests: acpi: init table descriptor in test_dst_table() Michael S. Tsirkin
2018-01-16  4:48 ` [Qemu-devel] [PULL 29/33] tests: acpi: rename test_acpi_tables()/test_dst_table() to reflect its usage Michael S. Tsirkin
2018-01-16  4:48 ` [Qemu-devel] [PULL 30/33] tests: acpi: add comments to fetch_rsdt_referenced_tables/data->tables usage Michael S. Tsirkin
2018-01-16  4:48 ` [Qemu-devel] [PULL 31/33] vhost-user: factor out msg head and payload Michael S. Tsirkin
2018-01-16  4:48 ` [Qemu-devel] [PULL 32/33] vhost-user: fix misaligned access to payload Michael S. Tsirkin
2018-01-16  4:48 ` [Qemu-devel] [PULL 33/33] vhost: remove assertion to prevent crash Michael S. Tsirkin
2018-01-16 12:24 ` [Qemu-devel] [PULL 00/33] pc, pci, virtio: features, fixes, cleanups Peter Maydell
2018-01-16 12:58   ` Peter Maydell
2018-01-16 12:59   ` Dr. David Alan Gilbert

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=20180116142737.30a4e4cd@redhat.com \
    --to=imammedo@redhat.com \
    --cc=dgilbert@redhat.com \
    --cc=mst@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    /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.