1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */ 2*4882a593Smuzhiyun /****************************************************************************** 3*4882a593Smuzhiyun * Xen balloon functionality 4*4882a593Smuzhiyun */ 5*4882a593Smuzhiyun #ifndef _XEN_BALLOON_H 6*4882a593Smuzhiyun #define _XEN_BALLOON_H 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun #define RETRY_UNLIMITED 0 9*4882a593Smuzhiyun 10*4882a593Smuzhiyun struct balloon_stats { 11*4882a593Smuzhiyun /* We aim for 'current allocation' == 'target allocation'. */ 12*4882a593Smuzhiyun unsigned long current_pages; 13*4882a593Smuzhiyun unsigned long target_pages; 14*4882a593Smuzhiyun unsigned long target_unpopulated; 15*4882a593Smuzhiyun /* Number of pages in high- and low-memory balloons. */ 16*4882a593Smuzhiyun unsigned long balloon_low; 17*4882a593Smuzhiyun unsigned long balloon_high; 18*4882a593Smuzhiyun unsigned long total_pages; 19*4882a593Smuzhiyun unsigned long schedule_delay; 20*4882a593Smuzhiyun unsigned long max_schedule_delay; 21*4882a593Smuzhiyun unsigned long retry_count; 22*4882a593Smuzhiyun unsigned long max_retry_count; 23*4882a593Smuzhiyun }; 24*4882a593Smuzhiyun 25*4882a593Smuzhiyun extern struct balloon_stats balloon_stats; 26*4882a593Smuzhiyun 27*4882a593Smuzhiyun void balloon_set_new_target(unsigned long target); 28*4882a593Smuzhiyun 29*4882a593Smuzhiyun int alloc_xenballooned_pages(int nr_pages, struct page **pages); 30*4882a593Smuzhiyun void free_xenballooned_pages(int nr_pages, struct page **pages); 31*4882a593Smuzhiyun 32*4882a593Smuzhiyun #ifdef CONFIG_XEN_BALLOON 33*4882a593Smuzhiyun void xen_balloon_init(void); 34*4882a593Smuzhiyun #else xen_balloon_init(void)35*4882a593Smuzhiyunstatic inline void xen_balloon_init(void) 36*4882a593Smuzhiyun { 37*4882a593Smuzhiyun } 38*4882a593Smuzhiyun #endif 39*4882a593Smuzhiyun 40*4882a593Smuzhiyun #endif /* _XEN_BALLOON_H */ 41