18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 28c2ecf20Sopenharmony_ci 38c2ecf20Sopenharmony_ci/* 48c2ecf20Sopenharmony_ci * Xen memory reservation utilities. 58c2ecf20Sopenharmony_ci * 68c2ecf20Sopenharmony_ci * Copyright (c) 2003, B Dragovic 78c2ecf20Sopenharmony_ci * Copyright (c) 2003-2004, M Williamson, K Fraser 88c2ecf20Sopenharmony_ci * Copyright (c) 2005 Dan M. Smith, IBM Corporation 98c2ecf20Sopenharmony_ci * Copyright (c) 2010 Daniel Kiper 108c2ecf20Sopenharmony_ci * Copyright (c) 2018 Oleksandr Andrushchenko, EPAM Systems Inc. 118c2ecf20Sopenharmony_ci */ 128c2ecf20Sopenharmony_ci 138c2ecf20Sopenharmony_ci#ifndef _XENMEM_RESERVATION_H 148c2ecf20Sopenharmony_ci#define _XENMEM_RESERVATION_H 158c2ecf20Sopenharmony_ci 168c2ecf20Sopenharmony_ci#include <linux/highmem.h> 178c2ecf20Sopenharmony_ci 188c2ecf20Sopenharmony_ci#include <xen/page.h> 198c2ecf20Sopenharmony_ci 208c2ecf20Sopenharmony_ciextern bool xen_scrub_pages; 218c2ecf20Sopenharmony_ci 228c2ecf20Sopenharmony_cistatic inline void xenmem_reservation_scrub_page(struct page *page) 238c2ecf20Sopenharmony_ci{ 248c2ecf20Sopenharmony_ci if (xen_scrub_pages) 258c2ecf20Sopenharmony_ci clear_highpage(page); 268c2ecf20Sopenharmony_ci} 278c2ecf20Sopenharmony_ci 288c2ecf20Sopenharmony_ci#ifdef CONFIG_XEN_HAVE_PVMMU 298c2ecf20Sopenharmony_civoid __xenmem_reservation_va_mapping_update(unsigned long count, 308c2ecf20Sopenharmony_ci struct page **pages, 318c2ecf20Sopenharmony_ci xen_pfn_t *frames); 328c2ecf20Sopenharmony_ci 338c2ecf20Sopenharmony_civoid __xenmem_reservation_va_mapping_reset(unsigned long count, 348c2ecf20Sopenharmony_ci struct page **pages); 358c2ecf20Sopenharmony_ci#endif 368c2ecf20Sopenharmony_ci 378c2ecf20Sopenharmony_cistatic inline void xenmem_reservation_va_mapping_update(unsigned long count, 388c2ecf20Sopenharmony_ci struct page **pages, 398c2ecf20Sopenharmony_ci xen_pfn_t *frames) 408c2ecf20Sopenharmony_ci{ 418c2ecf20Sopenharmony_ci#ifdef CONFIG_XEN_HAVE_PVMMU 428c2ecf20Sopenharmony_ci if (!xen_feature(XENFEAT_auto_translated_physmap)) 438c2ecf20Sopenharmony_ci __xenmem_reservation_va_mapping_update(count, pages, frames); 448c2ecf20Sopenharmony_ci#endif 458c2ecf20Sopenharmony_ci} 468c2ecf20Sopenharmony_ci 478c2ecf20Sopenharmony_cistatic inline void xenmem_reservation_va_mapping_reset(unsigned long count, 488c2ecf20Sopenharmony_ci struct page **pages) 498c2ecf20Sopenharmony_ci{ 508c2ecf20Sopenharmony_ci#ifdef CONFIG_XEN_HAVE_PVMMU 518c2ecf20Sopenharmony_ci if (!xen_feature(XENFEAT_auto_translated_physmap)) 528c2ecf20Sopenharmony_ci __xenmem_reservation_va_mapping_reset(count, pages); 538c2ecf20Sopenharmony_ci#endif 548c2ecf20Sopenharmony_ci} 558c2ecf20Sopenharmony_ci 568c2ecf20Sopenharmony_ciint xenmem_reservation_increase(int count, xen_pfn_t *frames); 578c2ecf20Sopenharmony_ci 588c2ecf20Sopenharmony_ciint xenmem_reservation_decrease(int count, xen_pfn_t *frames); 598c2ecf20Sopenharmony_ci 608c2ecf20Sopenharmony_ci#endif 61