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