qemu-s390x
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] mem-prealloc: initialize cond and mutex


From: Igor Mammedov
Subject: Re: [PATCH] mem-prealloc: initialize cond and mutex
Date: Mon, 9 Mar 2020 11:03:31 +0100

On Fri,  6 Mar 2020 03:50:14 -0500
Christian Borntraeger <address@hidden> wrote:

> Guests with mem-prealloc do fail with
> qemu-system-s390x: /home/cborntra/REPOS/qemu/util/qemu-thread-posix.c:76: 
> qemu_mutex_lock_impl: Assertion `mutex->initialized' failed.
> qemu-system-s390x: /home/cborntra/REPOS/qemu/util/qemu-thread-posix.c:161: 
> qemu_cond_broadcast: Assertion `cond->initialized' failed.
> 
> Let us initialize cond and mutex.
> 
> Cc: bauerchen <address@hidden>
> Cc: Paolo Bonzini <address@hidden>
> Reported-by: Marc Hartmayer <address@hidden>
> Fixes: 037fb5eb3941 ("mem-prealloc: optimize large guest startup")
> Signed-off-by: Christian Borntraeger <address@hidden>
> ---
>  util/oslib-posix.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/util/oslib-posix.c b/util/oslib-posix.c
> index 897e8f3ba6..52650183d3 100644
> --- a/util/oslib-posix.c
> +++ b/util/oslib-posix.c
> @@ -470,6 +470,8 @@ static bool touch_all_pages(char *area, size_t hpagesize, 
> size_t numpages,
>      char *addr = area;
>      int i = 0;
>  
> +    qemu_cond_init(&page_cond);
> +    qemu_mutex_init(&page_mutex);

Is it possible for touch_all_pages to be called several times?
If it's then it probably needs a guard against that to make
sure it won't explode, something like:

static bool page_mutex_inited;

if(page_mutex_inited)
  page_mutex_inited = true
  qemu_mutex_init(&page_mutex) 
  ...

>      memset_thread_failed = false;
>      threads_created_flag = false;
>      memset_num_threads = get_memset_num_threads(smp_cpus);




reply via email to

[Prev in Thread] Current Thread [Next in Thread]