diff options
| -rw-r--r-- | MAINTAINERS | 1 | ||||
| -rw-r--r-- | arch/arm/xen/p2m.c | 2 | ||||
| -rw-r--r-- | drivers/xen/gntdev.c | 2 | ||||
| -rw-r--r-- | drivers/xen/xen-balloon.c | 19 | 
4 files changed, 15 insertions, 9 deletions
| diff --git a/MAINTAINERS b/MAINTAINERS index d85c08956875..af0cb69f6a3e 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -10179,7 +10179,6 @@ F:	Documentation/parport*.txt  PARAVIRT_OPS INTERFACE  M:	Juergen Gross <jgross@suse.com> -M:	Chris Wright <chrisw@sous-sol.org>  M:	Alok Kataria <akataria@vmware.com>  M:	Rusty Russell <rusty@rustcorp.com.au>  L:	virtualization@lists.linux-foundation.org diff --git a/arch/arm/xen/p2m.c b/arch/arm/xen/p2m.c index e71eefa2e427..0641ba54ab62 100644 --- a/arch/arm/xen/p2m.c +++ b/arch/arm/xen/p2m.c @@ -1,7 +1,7 @@  #include <linux/bootmem.h>  #include <linux/gfp.h>  #include <linux/export.h> -#include <linux/rwlock.h> +#include <linux/spinlock.h>  #include <linux/slab.h>  #include <linux/types.h>  #include <linux/dma-mapping.h> diff --git a/drivers/xen/gntdev.c b/drivers/xen/gntdev.c index 82360594fa8e..57efbd3b053b 100644 --- a/drivers/xen/gntdev.c +++ b/drivers/xen/gntdev.c @@ -1024,6 +1024,7 @@ static int gntdev_mmap(struct file *flip, struct vm_area_struct *vma)  	mutex_unlock(&priv->lock);  	if (use_ptemod) { +		map->pages_vm_start = vma->vm_start;  		err = apply_to_page_range(vma->vm_mm, vma->vm_start,  					  vma->vm_end - vma->vm_start,  					  find_grant_ptes, map); @@ -1061,7 +1062,6 @@ static int gntdev_mmap(struct file *flip, struct vm_area_struct *vma)  					    set_grant_ptes_as_special, NULL);  		}  #endif -		map->pages_vm_start = vma->vm_start;  	}  	return 0; diff --git a/drivers/xen/xen-balloon.c b/drivers/xen/xen-balloon.c index e89136ab851e..b437fccd4e62 100644 --- a/drivers/xen/xen-balloon.c +++ b/drivers/xen/xen-balloon.c @@ -57,7 +57,7 @@ static int register_balloon(struct device *dev);  static void watch_target(struct xenbus_watch *watch,  			 const char *path, const char *token)  { -	unsigned long long new_target; +	unsigned long long new_target, static_max;  	int err;  	static bool watch_fired;  	static long target_diff; @@ -72,13 +72,20 @@ static void watch_target(struct xenbus_watch *watch,  	 * pages. PAGE_SHIFT converts bytes to pages, hence PAGE_SHIFT - 10.  	 */  	new_target >>= PAGE_SHIFT - 10; -	if (watch_fired) { -		balloon_set_new_target(new_target - target_diff); -		return; + +	if (!watch_fired) { +		watch_fired = true; +		err = xenbus_scanf(XBT_NIL, "memory", "static-max", "%llu", +				   &static_max); +		if (err != 1) +			static_max = new_target; +		else +			static_max >>= PAGE_SHIFT - 10; +		target_diff = xen_pv_domain() ? 0 +				: static_max - balloon_stats.target_pages;  	} -	watch_fired = true; -	target_diff = new_target - balloon_stats.target_pages; +	balloon_set_new_target(new_target - target_diff);  }  static struct xenbus_watch target_watch = {  	.node = "memory/target", | 
