All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ingo Molnar <mingo@elte.hu>
To: Sasha Levin <levinsasha928@gmail.com>
Cc: penberg@kernel.org, kvm@vger.kernel.org, asias.hejun@gmail.com,
	gorcunov@gmail.com, prasadjoshi124@gmail.com
Subject: Re: [PATCH v2 8/8] kvm tools: Use brlock in MMIO and IOPORT
Date: Mon, 30 May 2011 10:47:59 +0200	[thread overview]
Message-ID: <20110530084759.GI30513@elte.hu> (raw)
In-Reply-To: <1306744247-26051-8-git-send-email-levinsasha928@gmail.com>


* Sasha Levin <levinsasha928@gmail.com> wrote:

> @@ -55,41 +56,53 @@ static const char *to_direction(u8 is_write)
>  bool kvm__register_mmio(u64 phys_addr, u64 phys_addr_len, void (*kvm_mmio_callback_fn)(u64 addr, u8 *data, u32 len, u8 is_write))
>  {
>  	struct mmio_mapping *mmio;
> +	int ret;
>  
>  	mmio = malloc(sizeof(*mmio));
>  	if (mmio == NULL)
>  		return false;
>  
> +	br_write_lock();
>  	*mmio = (struct mmio_mapping) {
>  		.node = RB_INT_INIT(phys_addr, phys_addr + phys_addr_len),
>  		.kvm_mmio_callback_fn = kvm_mmio_callback_fn,
>  	};

The initialization here does not use any global state AFAICS so it 
does not need the write lock, right?

>  
> -	return mmio_insert(&mmio_tree, mmio);
> +	ret = mmio_insert(&mmio_tree, mmio);
> +	br_write_unlock();

Shouldnt mmio_insert() thus have the write_lock()/unlock() sequence?

>  bool kvm__deregister_mmio(u64 phys_addr)
>  {
>  	struct mmio_mapping *mmio;
>  
> +	br_write_lock();
>  	mmio = mmio_search_single(&mmio_tree, phys_addr);
>  	if (mmio == NULL)
>  		return false;

Here we leak the write lock!

>  bool kvm__emulate_mmio(struct kvm *kvm, u64 phys_addr, u8 *data, u32 len, u8 is_write)
>  {
> -	struct mmio_mapping *mmio = mmio_search(&mmio_tree, phys_addr, len);
> +	struct mmio_mapping *mmio;
> +
> +	br_read_lock();
> +	mmio = mmio_search(&mmio_tree, phys_addr, len);
>  
>  	if (mmio)
>  		mmio->kvm_mmio_callback_fn(phys_addr, data, len, is_write);
>  	else
>  		fprintf(stderr, "Warning: Ignoring MMIO %s at %016llx (length %u)\n",
>  			to_direction(is_write), phys_addr, len);
> +	br_read_unlock();
>  
>  	return true;
>  }

Yummie, scalability here we come! :-)

Thanks,

	Ingo

  reply	other threads:[~2011-05-30  8:48 UTC|newest]

Thread overview: 72+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-05-30  8:30 [PATCH v2 1/8] kvm tools: Use correct value for user signal base Sasha Levin
2011-05-30  8:30 ` [PATCH v2 2/8] kvm tools: Remove wrong global definition of kvm Sasha Levin
2011-05-30  8:38   ` Ingo Molnar
2011-05-30  8:59     ` Sasha Levin
2011-05-30  8:30 ` [PATCH v2 3/8] kvm tools: Allow pausing guests Sasha Levin
2011-05-30  8:39   ` Ingo Molnar
2011-05-30  8:30 ` [PATCH v2 4/8] kvm tools: Pause/resume guest using SIGUSR2 Sasha Levin
2011-05-30  8:41   ` Ingo Molnar
2011-05-30  8:30 ` [PATCH v2 5/8] kvm tools: Add a brlock Sasha Levin
2011-05-30  8:30 ` [PATCH v2 6/8] kvm tools: Add rwlock wrapper Sasha Levin
2011-05-30  8:43   ` Ingo Molnar
2011-05-30  9:29     ` Pekka Enberg
2011-05-30  9:34       ` Sasha Levin
2011-05-30  9:40         ` Pekka Enberg
2011-05-30  9:46           ` Sasha Levin
2011-05-30  9:48             ` Pekka Enberg
2011-05-30  9:54               ` Ingo Molnar
2011-05-30 11:11                 ` Takuya Yoshikawa
2011-05-30 11:12                   ` Sasha Levin
2011-05-30 11:26                     ` Takuya Yoshikawa
2011-05-30 11:39                       ` Avi Kivity
2011-05-30 11:49                         ` Ingo Molnar
2011-05-30 11:55                           ` Pekka Enberg
2011-05-30 11:58                             ` Sasha Levin
2011-05-30 12:20                               ` Ingo Molnar
2011-05-30 12:22                                 ` Sasha Levin
2011-05-30 12:25                                   ` Avi Kivity
2011-05-30 12:23                                 ` Avi Kivity
2011-05-30 12:30                                   ` Pekka Enberg
2011-05-30 12:32                                     ` Avi Kivity
2011-05-30 14:10                                   ` Ingo Molnar
2011-05-30 14:30                                     ` Avi Kivity
2011-05-30 14:43                                       ` Ingo Molnar
2011-05-30 14:50                                         ` Avi Kivity
2011-05-30 19:32                                           ` Ingo Molnar
2011-05-30 12:04                           ` Avi Kivity
2011-05-30 12:36                             ` Ingo Molnar
2011-05-30 12:44                               ` Avi Kivity
2011-05-30 12:46                                 ` Pekka Enberg
2011-05-30 12:48                                   ` Avi Kivity
2011-05-30 13:05                               ` Sasha Levin
2011-06-03  7:27                               ` Sasha Levin
2011-06-03  7:34                                 ` Ingo Molnar
2011-06-03  7:54                                   ` Sasha Levin
2011-06-03 19:31                                     ` Paul E. McKenney
2011-06-03 19:56                                       ` Sasha Levin
2011-06-03 20:22                                         ` Paul E. McKenney
2011-06-03 21:03                                           ` Sasha Levin
2011-06-03 21:20                                             ` Paul E. McKenney
2011-06-03 22:54                                               ` Sasha Levin
2011-06-03 23:05                                                 ` Paul E. McKenney
2011-06-04  6:26                                                   ` Sasha Levin
2011-06-04 16:30                                                     ` Paul E. McKenney
2011-06-14 22:26                                                       ` Sasha Levin
2011-06-14 23:42                                                         ` Paul E. McKenney
2011-06-15  1:25                                                           ` Sasha Levin
2011-06-15  4:22                                                             ` Paul E. McKenney
2011-06-05 12:12                               ` Avi Kivity
2011-05-30 14:16                           ` Takuya Yoshikawa
2011-05-30  9:56             ` Ingo Molnar
2011-05-30 10:05               ` Sasha Levin
2011-05-30 10:13                 ` Ingo Molnar
2011-05-30 10:22                   ` Sasha Levin
2011-05-30 10:30                     ` Ingo Molnar
2011-05-30 10:41                       ` Sasha Levin
2011-05-30  8:30 ` [PATCH v2 7/8] kvm tools: Add debug mode to brlock Sasha Levin
2011-05-30  8:30 ` [PATCH v2 8/8] kvm tools: Use brlock in MMIO and IOPORT Sasha Levin
2011-05-30  8:47   ` Ingo Molnar [this message]
2011-05-30  8:56     ` Sasha Levin
2011-05-30  8:35 ` [PATCH v2 1/8] kvm tools: Use correct value for user signal base Ingo Molnar
2011-05-30  8:40   ` Sasha Levin
2011-05-30  8:49     ` Ingo Molnar

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=20110530084759.GI30513@elte.hu \
    --to=mingo@elte.hu \
    --cc=asias.hejun@gmail.com \
    --cc=gorcunov@gmail.com \
    --cc=kvm@vger.kernel.org \
    --cc=levinsasha928@gmail.com \
    --cc=penberg@kernel.org \
    --cc=prasadjoshi124@gmail.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.