| /* SPDX-License-Identifier: GPL-2.0 */ | 
 | /****************************************************************************** | 
 |  * Xen balloon functionality | 
 |  */ | 
 |  | 
 | #define RETRY_UNLIMITED	0 | 
 |  | 
 | struct balloon_stats { | 
 | 	/* We aim for 'current allocation' == 'target allocation'. */ | 
 | 	unsigned long current_pages; | 
 | 	unsigned long target_pages; | 
 | 	unsigned long target_unpopulated; | 
 | 	/* Number of pages in high- and low-memory balloons. */ | 
 | 	unsigned long balloon_low; | 
 | 	unsigned long balloon_high; | 
 | 	unsigned long total_pages; | 
 | 	unsigned long schedule_delay; | 
 | 	unsigned long max_schedule_delay; | 
 | 	unsigned long retry_count; | 
 | 	unsigned long max_retry_count; | 
 | }; | 
 |  | 
 | extern struct balloon_stats balloon_stats; | 
 |  | 
 | void balloon_set_new_target(unsigned long target); | 
 |  | 
 | int alloc_xenballooned_pages(int nr_pages, struct page **pages); | 
 | void free_xenballooned_pages(int nr_pages, struct page **pages); | 
 |  | 
 | #ifdef CONFIG_XEN_BALLOON | 
 | void xen_balloon_init(void); | 
 | #else | 
 | static inline void xen_balloon_init(void) | 
 | { | 
 | } | 
 | #endif |