WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

Re: [Xen-devel] [PATCH 03/11] Xen: Rename the balloon lock

To: Jeremy Fitzhardinge <jeremy@xxxxxxxx>
Subject: Re: [Xen-devel] [PATCH 03/11] Xen: Rename the balloon lock
From: Isaku Yamahata <yamahata@xxxxxxxxxxxxx>
Date: Fri, 8 May 2009 11:01:23 +0900
Cc: Xen-devel <xen-devel@xxxxxxxxxxxxxxxxxxx>, the arch/x86 maintainers <x86@xxxxxxxxxx>, Linux Kernel Mailing List <linux-kernel@xxxxxxxxxxxxxxx>, Alex Nixon <alex.nixon@xxxxxxxxxx>, Jeremy Fitzhardinge <jeremy.fitzhardinge@xxxxxxxxxx>, Ingo Molnar <mingo@xxxxxxx>
Delivery-date: Thu, 07 May 2009 19:01:54 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <1241732737-7669-4-git-send-email-jeremy@xxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <1241732737-7669-1-git-send-email-jeremy@xxxxxxxx> <1241732737-7669-4-git-send-email-jeremy@xxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Mutt/1.5.6i
Hi. Please please don't move the arch common variable
into x86 specific file. It causes link error on ia64.

Before I sent the patches to fix it twice or so,
but it seems to be dropped.


On Thu, May 07, 2009 at 02:45:29PM -0700, Jeremy Fitzhardinge wrote:
> From: Alex Nixon <alex.nixon@xxxxxxxxxx>
> 
> Impact: cleanup
> 
> * xen_create_contiguous_region needs access to the balloon lock to
>   ensure memory doesn't change under its feet, so expose the balloon
>   lock
> * Change the name of the lock to xen_reservation_lock, to imply it's
>   now less-specific usage.
> 
> Signed-off-by: Alex Nixon <alex.nixon@xxxxxxxxxx>
> Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@xxxxxxxxxx>
> ---
>  arch/x86/xen/mmu.c             |    7 +++++++
>  drivers/xen/balloon.c          |   15 ++++-----------
>  include/xen/interface/memory.h |    8 ++++++++
>  3 files changed, 19 insertions(+), 11 deletions(-)
> 
> diff --git a/arch/x86/xen/mmu.c b/arch/x86/xen/mmu.c
> index d673b03..218cf79 100644
> --- a/arch/x86/xen/mmu.c
> +++ b/arch/x86/xen/mmu.c
> @@ -67,6 +67,13 @@
>  
>  #define MMU_UPDATE_HISTO     30
>  
> +/*
> + * Protects atomic reservation decrease/increase against concurrent 
> increases.
> + * Also protects non-atomic updates of current_pages and driver_pages, and
> + * balloon lists.
> + */
> +DEFINE_SPINLOCK(xen_reservation_lock);
> +
>  #ifdef CONFIG_XEN_DEBUG_FS
>  
>  static struct {
> diff --git a/drivers/xen/balloon.c b/drivers/xen/balloon.c
> index efa4b36..1e7984d 100644
> --- a/drivers/xen/balloon.c
> +++ b/drivers/xen/balloon.c
> @@ -84,13 +84,6 @@ static struct sys_device balloon_sysdev;
>  
>  static int register_balloon(struct sys_device *sysdev);
>  
> -/*
> - * Protects atomic reservation decrease/increase against concurrent 
> increases.
> - * Also protects non-atomic updates of current_pages and driver_pages, and
> - * balloon lists.
> - */
> -static DEFINE_SPINLOCK(balloon_lock);
> -
>  static struct balloon_stats balloon_stats;
>  
>  /* We increase/decrease in batches which fit in a page */
> @@ -209,7 +202,7 @@ static int increase_reservation(unsigned long nr_pages)
>       if (nr_pages > ARRAY_SIZE(frame_list))
>               nr_pages = ARRAY_SIZE(frame_list);
>  
> -     spin_lock_irqsave(&balloon_lock, flags);
> +     spin_lock_irqsave(&xen_reservation_lock, flags);
>  
>       page = balloon_first_page();
>       for (i = 0; i < nr_pages; i++) {
> @@ -267,7 +260,7 @@ static int increase_reservation(unsigned long nr_pages)
>       totalram_pages = balloon_stats.current_pages;
>  
>   out:
> -     spin_unlock_irqrestore(&balloon_lock, flags);
> +     spin_unlock_irqrestore(&xen_reservation_lock, flags);
>  
>       return 0;
>  }
> @@ -312,7 +305,7 @@ static int decrease_reservation(unsigned long nr_pages)
>       kmap_flush_unused();
>       flush_tlb_all();
>  
> -     spin_lock_irqsave(&balloon_lock, flags);
> +     spin_lock_irqsave(&xen_reservation_lock, flags);
>  
>       /* No more mappings: invalidate P2M and add to balloon. */
>       for (i = 0; i < nr_pages; i++) {
> @@ -329,7 +322,7 @@ static int decrease_reservation(unsigned long nr_pages)
>       balloon_stats.current_pages -= nr_pages;
>       totalram_pages = balloon_stats.current_pages;
>  
> -     spin_unlock_irqrestore(&balloon_lock, flags);
> +     spin_unlock_irqrestore(&xen_reservation_lock, flags);
>  
>       return need_sleep;
>  }
> diff --git a/include/xen/interface/memory.h b/include/xen/interface/memory.h
> index f548f7c..9df4bd0 100644
> --- a/include/xen/interface/memory.h
> +++ b/include/xen/interface/memory.h
> @@ -9,6 +9,8 @@
>  #ifndef __XEN_PUBLIC_MEMORY_H__
>  #define __XEN_PUBLIC_MEMORY_H__
>  
> +#include <linux/spinlock.h>
> +
>  /*
>   * Increase or decrease the specified domain's memory reservation. Returns a
>   * -ve errcode on failure, or the # extents successfully allocated or freed.
> @@ -184,4 +186,10 @@ DEFINE_GUEST_HANDLE_STRUCT(xen_memory_map);
>   */
>  #define XENMEM_machine_memory_map   10
>  
> +/*
> + * Prevent the balloon driver from changing the memory reservation during a 
> driver
> + * critical region.
> + */
> +extern spinlock_t xen_reservation_lock;
> +
>  #endif /* __XEN_PUBLIC_MEMORY_H__ */

-- 
yamahata

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel