mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-04-01 12:04:08 +00:00
xen: Rename the balloon lock
* 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. [ Impact: cleanup ] Signed-off-by: Alex Nixon <alex.nixon@citrix.com> Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com> Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
This commit is contained in:
parent
7347b4082e
commit
19001c8c5b
3 changed files with 19 additions and 11 deletions
|
@ -70,6 +70,13 @@
|
||||||
|
|
||||||
#define MMU_UPDATE_HISTO 30
|
#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
|
#ifdef CONFIG_XEN_DEBUG_FS
|
||||||
|
|
||||||
static struct {
|
static struct {
|
||||||
|
|
|
@ -85,13 +85,6 @@ static struct sys_device balloon_sysdev;
|
||||||
|
|
||||||
static int register_balloon(struct sys_device *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;
|
static struct balloon_stats balloon_stats;
|
||||||
|
|
||||||
/* We increase/decrease in batches which fit in a page */
|
/* We increase/decrease in batches which fit in a page */
|
||||||
|
@ -210,7 +203,7 @@ static int increase_reservation(unsigned long nr_pages)
|
||||||
if (nr_pages > ARRAY_SIZE(frame_list))
|
if (nr_pages > ARRAY_SIZE(frame_list))
|
||||||
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();
|
page = balloon_first_page();
|
||||||
for (i = 0; i < nr_pages; i++) {
|
for (i = 0; i < nr_pages; i++) {
|
||||||
|
@ -254,7 +247,7 @@ static int increase_reservation(unsigned long nr_pages)
|
||||||
balloon_stats.current_pages += rc;
|
balloon_stats.current_pages += rc;
|
||||||
|
|
||||||
out:
|
out:
|
||||||
spin_unlock_irqrestore(&balloon_lock, flags);
|
spin_unlock_irqrestore(&xen_reservation_lock, flags);
|
||||||
|
|
||||||
return rc < 0 ? rc : rc != nr_pages;
|
return rc < 0 ? rc : rc != nr_pages;
|
||||||
}
|
}
|
||||||
|
@ -299,7 +292,7 @@ static int decrease_reservation(unsigned long nr_pages)
|
||||||
kmap_flush_unused();
|
kmap_flush_unused();
|
||||||
flush_tlb_all();
|
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. */
|
/* No more mappings: invalidate P2M and add to balloon. */
|
||||||
for (i = 0; i < nr_pages; i++) {
|
for (i = 0; i < nr_pages; i++) {
|
||||||
|
@ -315,7 +308,7 @@ static int decrease_reservation(unsigned long nr_pages)
|
||||||
|
|
||||||
balloon_stats.current_pages -= nr_pages;
|
balloon_stats.current_pages -= nr_pages;
|
||||||
|
|
||||||
spin_unlock_irqrestore(&balloon_lock, flags);
|
spin_unlock_irqrestore(&xen_reservation_lock, flags);
|
||||||
|
|
||||||
return need_sleep;
|
return need_sleep;
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,6 +9,8 @@
|
||||||
#ifndef __XEN_PUBLIC_MEMORY_H__
|
#ifndef __XEN_PUBLIC_MEMORY_H__
|
||||||
#define __XEN_PUBLIC_MEMORY_H__
|
#define __XEN_PUBLIC_MEMORY_H__
|
||||||
|
|
||||||
|
#include <linux/spinlock.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Increase or decrease the specified domain's memory reservation. Returns a
|
* Increase or decrease the specified domain's memory reservation. Returns a
|
||||||
* -ve errcode on failure, or the # extents successfully allocated or freed.
|
* -ve errcode on failure, or the # extents successfully allocated or freed.
|
||||||
|
@ -142,4 +144,10 @@ struct xen_translate_gpfn_list {
|
||||||
};
|
};
|
||||||
DEFINE_GUEST_HANDLE_STRUCT(xen_translate_gpfn_list);
|
DEFINE_GUEST_HANDLE_STRUCT(xen_translate_gpfn_list);
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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__ */
|
#endif /* __XEN_PUBLIC_MEMORY_H__ */
|
||||||
|
|
Loading…
Add table
Reference in a new issue