qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Christian Borntraeger <borntraeger@de.ibm.com>
To: qemu-devel@nongnu.org
Cc: Christian Borntraeger <borntraeger@de.ibm.com>,
	Anthony Liguori <aliguori@us.ibm.com>,
	Marcelo Tosatti <mtosatti@redhat.com>,
	Avi Kivity <avi@redhat.com>
Subject: Re: [Qemu-devel] [RFC/PATCH] qemu: Use valgrind annotations to mark kvm guest memory as defined
Date: Tue, 21 Aug 2012 11:03:40 +0200	[thread overview]
Message-ID: <50334EEC.20501@de.ibm.com> (raw)
In-Reply-To: <1344604305-25312-1-git-send-email-borntraeger@de.ibm.com>

On 10/08/12 15:11, Christian Borntraeger wrote:
> valgrind with kvm produces a big amount of false positives regarding
> "Conditional jump or move depends on uninitialised value(s)". This
> happens because the guest memory is allocated with qemu_vmalloc which
> boils down posix_memalign etc. This function is (correctly) considered
> by valgrind as returning undefined memory.
> 
> Since valgrind is based on jitting code, it will not be able to see
> changes made by the guest to guest memory if this is done by KVM_RUN,
> thus keeping most of the guest memory undefined.
> 
> Now lots of places in qemu will then use guest memory to change behaviour.
> To avoid the flood of these messages, lets declare the whole guest
> memory as defined. This will reduce the noise and allows us to see real
> problems.
> 
> In the future we might want to make this conditional, since there
> is actually something that we can use those false positives for:
> These messages will point to code that depends on guest memory, so
> we can use these backtraces to actually make an audit that is focussed
> only at those code places. For normal development we dont want to
> see those messages, though.


Any opinion about this patch?


 
> Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
> ---
>  configure |    3 ++-
>  kvm-all.c |    7 +++++++
>  2 files changed, 9 insertions(+), 1 deletions(-)
> 
> diff --git a/configure b/configure
> index 280726c..90df0d8 100755
> --- a/configure
> +++ b/configure
> @@ -2900,11 +2900,12 @@ if compile_prog "-Werror" "" ; then
>  fi
> 
>  ########################################
> -# check if we have valgrind/valgrind.h
> +# check if we have valgrind/valgrind.h and valgrind/memcheck.h
> 
>  valgrind_h=no
>  cat > $TMPC << EOF
>  #include <valgrind/valgrind.h>
> +#include <valgrind/memcheck.h>
>  int main(void) {
>    return 0;
>  }
> diff --git a/kvm-all.c b/kvm-all.c
> index 2148b20..33d16cf 100644
> --- a/kvm-all.c
> +++ b/kvm-all.c
> @@ -39,6 +39,10 @@
>  #include <sys/eventfd.h>
>  #endif
> 
> +#ifdef CONFIG_VALGRIND_H
> +#include <valgrind/memcheck.h>
> +#endif
> +
>  /* KVM uses PAGE_SIZE in its definition of COALESCED_MMIO_MAX */
>  #define PAGE_SIZE TARGET_PAGE_SIZE
> 
> @@ -1687,6 +1691,9 @@ void *kvm_vmalloc(ram_addr_t size)
> 
>  void kvm_setup_guest_memory(void *start, size_t size)
>  {
> +#ifdef CONFIG_VALGRIND_H
> +    VALGRIND_MAKE_MEM_DEFINED(start, size);
> +#endif
>      if (!kvm_has_sync_mmu()) {
>          int ret = qemu_madvise(start, size, QEMU_MADV_DONTFORK);
> 

  reply	other threads:[~2012-08-21  9:04 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-08-10 13:11 [Qemu-devel] [RFC/PATCH] qemu: Use valgrind annotations to mark kvm guest memory as defined Christian Borntraeger
2012-08-21  9:03 ` Christian Borntraeger [this message]
2012-08-21  9:58   ` Avi Kivity

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=50334EEC.20501@de.ibm.com \
    --to=borntraeger@de.ibm.com \
    --cc=aliguori@us.ibm.com \
    --cc=avi@redhat.com \
    --cc=mtosatti@redhat.com \
    --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 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).