| /* SPDX-License-Identifier: GPL-2.0 */ | 
 |  | 
 | /* | 
 |  * Xen memory reservation utilities. | 
 |  * | 
 |  * Copyright (c) 2003, B Dragovic | 
 |  * Copyright (c) 2003-2004, M Williamson, K Fraser | 
 |  * Copyright (c) 2005 Dan M. Smith, IBM Corporation | 
 |  * Copyright (c) 2010 Daniel Kiper | 
 |  * Copyright (c) 2018 Oleksandr Andrushchenko, EPAM Systems Inc. | 
 |  */ | 
 |  | 
 | #ifndef _XENMEM_RESERVATION_H | 
 | #define _XENMEM_RESERVATION_H | 
 |  | 
 | #include <linux/highmem.h> | 
 |  | 
 | #include <xen/page.h> | 
 |  | 
 | extern bool xen_scrub_pages; | 
 |  | 
 | static inline void xenmem_reservation_scrub_page(struct page *page) | 
 | { | 
 | 	if (xen_scrub_pages) | 
 | 		clear_highpage(page); | 
 | } | 
 |  | 
 | #ifdef CONFIG_XEN_HAVE_PVMMU | 
 | void __xenmem_reservation_va_mapping_update(unsigned long count, | 
 | 					    struct page **pages, | 
 | 					    xen_pfn_t *frames); | 
 |  | 
 | void __xenmem_reservation_va_mapping_reset(unsigned long count, | 
 | 					   struct page **pages); | 
 | #endif | 
 |  | 
 | static inline void xenmem_reservation_va_mapping_update(unsigned long count, | 
 | 							struct page **pages, | 
 | 							xen_pfn_t *frames) | 
 | { | 
 | #ifdef CONFIG_XEN_HAVE_PVMMU | 
 | 	if (!xen_feature(XENFEAT_auto_translated_physmap)) | 
 | 		__xenmem_reservation_va_mapping_update(count, pages, frames); | 
 | #endif | 
 | } | 
 |  | 
 | static inline void xenmem_reservation_va_mapping_reset(unsigned long count, | 
 | 						       struct page **pages) | 
 | { | 
 | #ifdef CONFIG_XEN_HAVE_PVMMU | 
 | 	if (!xen_feature(XENFEAT_auto_translated_physmap)) | 
 | 		__xenmem_reservation_va_mapping_reset(count, pages); | 
 | #endif | 
 | } | 
 |  | 
 | int xenmem_reservation_increase(int count, xen_pfn_t *frames); | 
 |  | 
 | int xenmem_reservation_decrease(int count, xen_pfn_t *frames); | 
 |  | 
 | #endif |