All of lore.kernel.org
 help / color / mirror / Atom feed
From: Vasily Khoruzhick <anarsoul@gmail.com>
To: qemu-devel@nongnu.org
Cc: "xen-devel@lists.xensource.com Devel"
	<xen-devel@lists.xensource.com>, Alexander Graf <agraf@suse.de>,
	Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Subject: Re: [Qemu-devel] [PATCH 08/12] qemu_ram_ptr_length: take ram_addr_t as arguments
Date: Wed, 6 Jul 2011 16:12:31 +0300	[thread overview]
Message-ID: <201107061612.32856.anarsoul@gmail.com> (raw)
In-Reply-To: <1309884673-18965-9-git-send-email-agraf@suse.de>

On Tuesday 05 July 2011 19:51:09 Alexander Graf wrote:
> From: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
> 
> qemu_ram_ptr_length should take ram_addr_t as argument rather than
> target_phys_addr_t because is doing comparisons with RAMBlock addresses.
> 
> cpu_physical_memory_map should create a ram_addr_t address to pass to
> qemu_ram_ptr_length from PhysPageDesc phys_offset.
> 
> Remove code after abort() in qemu_ram_ptr_length.
> 
> Changes in v2:
> 
> - handle 0 size in qemu_ram_ptr_length;
> 
> - rename addr1 to raddr;
> 
> - initialize raddr to ULONG_MAX.
> 
> Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
> Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
> Signed-off-by: Alexander Graf <agraf@suse.de>

Tested-by: Vasily Khoruzhick <anarsoul@gmail.com>

> ---
>  cpu-common.h |    2 +-
>  exec.c       |   21 ++++++++++++++-------
>  2 files changed, 15 insertions(+), 8 deletions(-)
> 
> diff --git a/cpu-common.h b/cpu-common.h
> index b027e43..e4fcded 100644
> --- a/cpu-common.h
> +++ b/cpu-common.h
> @@ -65,7 +65,7 @@ void qemu_ram_free_from_ptr(ram_addr_t addr);
>  void qemu_ram_remap(ram_addr_t addr, ram_addr_t length);
>  /* This should only be used for ram local to a device.  */
>  void *qemu_get_ram_ptr(ram_addr_t addr);
> -void *qemu_ram_ptr_length(target_phys_addr_t addr, target_phys_addr_t
> *size); +void *qemu_ram_ptr_length(ram_addr_t addr, ram_addr_t *size);
>  /* Same but slower, to use for migration, where the order of
>   * RAMBlocks must not change. */
>  void *qemu_safe_ram_ptr(ram_addr_t addr);
> diff --git a/exec.c b/exec.c
> index 5604946..c0673c2 100644
> --- a/exec.c
> +++ b/exec.c
> @@ -3167,8 +3167,11 @@ void *qemu_safe_ram_ptr(ram_addr_t addr)
> 
>  /* Return a host pointer to guest's ram. Similar to qemu_get_ram_ptr
>   * but takes a size argument */
> -void *qemu_ram_ptr_length(target_phys_addr_t addr, target_phys_addr_t
> *size) +void *qemu_ram_ptr_length(ram_addr_t addr, ram_addr_t *size)
>  {
> +    if (*size == 0) {
> +        return NULL;
> +    }
>      if (xen_enabled()) {
>          return xen_map_cache(addr, *size, 1);
>      } else {
> @@ -3184,9 +3187,6 @@ void *qemu_ram_ptr_length(target_phys_addr_t addr,
> target_phys_addr_t *size)
> 
>          fprintf(stderr, "Bad ram offset %" PRIx64 "\n", (uint64_t)addr);
>          abort();
> -
> -        *size = 0;
> -        return NULL;
>      }
>  }
> 
> @@ -4052,7 +4052,9 @@ void *cpu_physical_memory_map(target_phys_addr_t
> addr, target_phys_addr_t page;
>      unsigned long pd;
>      PhysPageDesc *p;
> -    target_phys_addr_t addr1 = addr;
> +    ram_addr_t raddr = ULONG_MAX;
> +    ram_addr_t rlen;
> +    void *ret;
> 
>      while (len > 0) {
>          page = addr & TARGET_PAGE_MASK;
> @@ -4080,13 +4082,18 @@ void *cpu_physical_memory_map(target_phys_addr_t
> addr, *plen = l;
>              return bounce.buffer;
>          }
> +        if (!todo) {
> +            raddr = (pd & TARGET_PAGE_MASK) + (addr & ~TARGET_PAGE_MASK);
> +        }
> 
>          len -= l;
>          addr += l;
>          todo += l;
>      }
> -    *plen = todo;
> -    return qemu_ram_ptr_length(addr1, plen);
> +    rlen = todo;
> +    ret = qemu_ram_ptr_length(raddr, &rlen);
> +    *plen = rlen;
> +    return ret;
>  }
> 
>  /* Unmaps a memory region previously mapped by cpu_physical_memory_map().

WARNING: multiple messages have this Message-ID (diff)
From: Vasily Khoruzhick <anarsoul@gmail.com>
To: qemu-devel@nongnu.org
Cc: "xen-devel@lists.xensource.com Devel"
	<xen-devel@lists.xensource.com>, Alexander Graf <agraf@suse.de>,
	Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Subject: Re: [PATCH 08/12] qemu_ram_ptr_length: take ram_addr_t as arguments
Date: Wed, 6 Jul 2011 16:12:31 +0300	[thread overview]
Message-ID: <201107061612.32856.anarsoul@gmail.com> (raw)
In-Reply-To: <1309884673-18965-9-git-send-email-agraf@suse.de>

On Tuesday 05 July 2011 19:51:09 Alexander Graf wrote:
> From: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
> 
> qemu_ram_ptr_length should take ram_addr_t as argument rather than
> target_phys_addr_t because is doing comparisons with RAMBlock addresses.
> 
> cpu_physical_memory_map should create a ram_addr_t address to pass to
> qemu_ram_ptr_length from PhysPageDesc phys_offset.
> 
> Remove code after abort() in qemu_ram_ptr_length.
> 
> Changes in v2:
> 
> - handle 0 size in qemu_ram_ptr_length;
> 
> - rename addr1 to raddr;
> 
> - initialize raddr to ULONG_MAX.
> 
> Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
> Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
> Signed-off-by: Alexander Graf <agraf@suse.de>

Tested-by: Vasily Khoruzhick <anarsoul@gmail.com>

> ---
>  cpu-common.h |    2 +-
>  exec.c       |   21 ++++++++++++++-------
>  2 files changed, 15 insertions(+), 8 deletions(-)
> 
> diff --git a/cpu-common.h b/cpu-common.h
> index b027e43..e4fcded 100644
> --- a/cpu-common.h
> +++ b/cpu-common.h
> @@ -65,7 +65,7 @@ void qemu_ram_free_from_ptr(ram_addr_t addr);
>  void qemu_ram_remap(ram_addr_t addr, ram_addr_t length);
>  /* This should only be used for ram local to a device.  */
>  void *qemu_get_ram_ptr(ram_addr_t addr);
> -void *qemu_ram_ptr_length(target_phys_addr_t addr, target_phys_addr_t
> *size); +void *qemu_ram_ptr_length(ram_addr_t addr, ram_addr_t *size);
>  /* Same but slower, to use for migration, where the order of
>   * RAMBlocks must not change. */
>  void *qemu_safe_ram_ptr(ram_addr_t addr);
> diff --git a/exec.c b/exec.c
> index 5604946..c0673c2 100644
> --- a/exec.c
> +++ b/exec.c
> @@ -3167,8 +3167,11 @@ void *qemu_safe_ram_ptr(ram_addr_t addr)
> 
>  /* Return a host pointer to guest's ram. Similar to qemu_get_ram_ptr
>   * but takes a size argument */
> -void *qemu_ram_ptr_length(target_phys_addr_t addr, target_phys_addr_t
> *size) +void *qemu_ram_ptr_length(ram_addr_t addr, ram_addr_t *size)
>  {
> +    if (*size == 0) {
> +        return NULL;
> +    }
>      if (xen_enabled()) {
>          return xen_map_cache(addr, *size, 1);
>      } else {
> @@ -3184,9 +3187,6 @@ void *qemu_ram_ptr_length(target_phys_addr_t addr,
> target_phys_addr_t *size)
> 
>          fprintf(stderr, "Bad ram offset %" PRIx64 "\n", (uint64_t)addr);
>          abort();
> -
> -        *size = 0;
> -        return NULL;
>      }
>  }
> 
> @@ -4052,7 +4052,9 @@ void *cpu_physical_memory_map(target_phys_addr_t
> addr, target_phys_addr_t page;
>      unsigned long pd;
>      PhysPageDesc *p;
> -    target_phys_addr_t addr1 = addr;
> +    ram_addr_t raddr = ULONG_MAX;
> +    ram_addr_t rlen;
> +    void *ret;
> 
>      while (len > 0) {
>          page = addr & TARGET_PAGE_MASK;
> @@ -4080,13 +4082,18 @@ void *cpu_physical_memory_map(target_phys_addr_t
> addr, *plen = l;
>              return bounce.buffer;
>          }
> +        if (!todo) {
> +            raddr = (pd & TARGET_PAGE_MASK) + (addr & ~TARGET_PAGE_MASK);
> +        }
> 
>          len -= l;
>          addr += l;
>          todo += l;
>      }
> -    *plen = todo;
> -    return qemu_ram_ptr_length(addr1, plen);
> +    rlen = todo;
> +    ret = qemu_ram_ptr_length(raddr, &rlen);
> +    *plen = rlen;
> +    return ret;
>  }
> 
>  /* Unmaps a memory region previously mapped by cpu_physical_memory_map().

  reply	other threads:[~2011-07-06 13:13 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-07-05 16:51 [Qemu-devel] [PULL 00/12] Xen patch queue 2011-07-05 Alexander Graf
2011-07-05 16:51 ` Alexander Graf
2011-07-05 16:51 ` [Qemu-devel] [PATCH 01/12] xen: Clean up build system Alexander Graf
2011-07-05 16:51   ` Alexander Graf
2011-07-05 16:51 ` [Qemu-devel] [PATCH 02/12] xen: Clean up map cache API naming Alexander Graf
2011-07-05 16:51   ` Alexander Graf
2011-07-05 16:51 ` [Qemu-devel] [PATCH 03/12] xen: Fold CONFIG_XEN_MAPCACHE into CONFIG_XEN Alexander Graf
2011-07-05 16:51   ` Alexander Graf
2011-07-05 16:51 ` [Qemu-devel] [PATCH 04/12] xen: enable console and disk backend in HVM mode Alexander Graf
2011-07-05 16:51   ` Alexander Graf
2011-07-05 16:51 ` [Qemu-devel] [PATCH 05/12] xen_console: fix memory leak Alexander Graf
2011-07-05 16:51   ` Alexander Graf
2011-07-05 16:51 ` [Qemu-devel] [PATCH 06/12] xen: add vkbd support for PV on HVM guests Alexander Graf
2011-07-05 16:51   ` Alexander Graf
2011-07-05 16:51 ` [Qemu-devel] [PATCH 07/12] xen_disk: cope with missing xenstore "params" node Alexander Graf
2011-07-05 16:51   ` Alexander Graf
2011-07-05 16:51 ` [Qemu-devel] [PATCH 08/12] qemu_ram_ptr_length: take ram_addr_t as arguments Alexander Graf
2011-07-05 16:51   ` Alexander Graf
2011-07-06 13:12   ` Vasily Khoruzhick [this message]
2011-07-06 13:12     ` Vasily Khoruzhick
2011-07-05 16:51 ` [Qemu-devel] [PATCH 09/12] xen_disk: treat "aio" as "raw" Alexander Graf
2011-07-05 16:51   ` Alexander Graf
2011-07-05 16:51 ` [Qemu-devel] [PATCH 10/12] checkpatch: don't error out on }, { lines Alexander Graf
2011-07-05 16:51   ` [PATCH 10/12] checkpatch: don't error out on },{ lines Alexander Graf
2011-07-05 16:51 ` [Qemu-devel] [PATCH 11/12] xen_console: support the new extended xenstore protocol Alexander Graf
2011-07-05 16:51   ` Alexander Graf
2011-07-05 16:51 ` [Qemu-devel] [PATCH 12/12] xen_console: fall back to qemu serial device Alexander Graf
2011-07-05 16:51   ` Alexander Graf
2011-07-19 15:59 ` [Qemu-devel] [PULL 00/12] Xen patch queue 2011-07-05 Anthony Liguori

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=201107061612.32856.anarsoul@gmail.com \
    --to=anarsoul@gmail.com \
    --cc=agraf@suse.de \
    --cc=qemu-devel@nongnu.org \
    --cc=stefano.stabellini@eu.citrix.com \
    --cc=xen-devel@lists.xensource.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.