1 | /* SPDX-License-Identifier: GPL-2.0 */ |
---|---|
2 | |
3 | /* |
4 | * Xen memory reservation utilities. |
5 | * |
6 | * Copyright (c) 2003, B Dragovic |
7 | * Copyright (c) 2003-2004, M Williamson, K Fraser |
8 | * Copyright (c) 2005 Dan M. Smith, IBM Corporation |
9 | * Copyright (c) 2010 Daniel Kiper |
10 | * Copyright (c) 2018 Oleksandr Andrushchenko, EPAM Systems Inc. |
11 | */ |
12 | |
13 | #ifndef _XENMEM_RESERVATION_H |
14 | #define _XENMEM_RESERVATION_H |
15 | |
16 | #include <linux/highmem.h> |
17 | |
18 | #include <xen/page.h> |
19 | |
20 | extern bool xen_scrub_pages; |
21 | |
22 | static inline void xenmem_reservation_scrub_page(struct page *page) |
23 | { |
24 | if (xen_scrub_pages) |
25 | clear_highpage(page); |
26 | } |
27 | |
28 | #ifdef CONFIG_XEN_HAVE_PVMMU |
29 | void __xenmem_reservation_va_mapping_update(unsigned long count, |
30 | struct page **pages, |
31 | xen_pfn_t *frames); |
32 | |
33 | void __xenmem_reservation_va_mapping_reset(unsigned long count, |
34 | struct page **pages); |
35 | #endif |
36 | |
37 | static inline void xenmem_reservation_va_mapping_update(unsigned long count, |
38 | struct page **pages, |
39 | xen_pfn_t *frames) |
40 | { |
41 | #ifdef CONFIG_XEN_HAVE_PVMMU |
42 | if (!xen_feature(XENFEAT_auto_translated_physmap)) |
43 | __xenmem_reservation_va_mapping_update(count, pages, frames); |
44 | #endif |
45 | } |
46 | |
47 | static inline void xenmem_reservation_va_mapping_reset(unsigned long count, |
48 | struct page **pages) |
49 | { |
50 | #ifdef CONFIG_XEN_HAVE_PVMMU |
51 | if (!xen_feature(XENFEAT_auto_translated_physmap)) |
52 | __xenmem_reservation_va_mapping_reset(count, pages); |
53 | #endif |
54 | } |
55 | |
56 | int xenmem_reservation_increase(int count, xen_pfn_t *frames); |
57 | |
58 | int xenmem_reservation_decrease(int count, xen_pfn_t *frames); |
59 | |
60 | #endif |
61 |