mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-08 07:21:27 +00:00
xen/balloon: Share common memory reservation routines
Memory {increase|decrease}_reservation and VA mappings update/reset code used in balloon driver can be made common, so other drivers can also re-use the same functionality without open-coding. Create a dedicated file for the shared code and export corresponding symbols for other kernel modules. Signed-off-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com> Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com> Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
This commit is contained in:
parent
8c3799ee25
commit
ae4c51a50c
4 changed files with 184 additions and 69 deletions
59
include/xen/mem-reservation.h
Normal file
59
include/xen/mem-reservation.h
Normal file
|
@ -0,0 +1,59 @@
|
|||
/* 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>
|
||||
|
||||
static inline void xenmem_reservation_scrub_page(struct page *page)
|
||||
{
|
||||
#ifdef CONFIG_XEN_SCRUB_PAGES
|
||||
clear_highpage(page);
|
||||
#endif
|
||||
}
|
||||
|
||||
#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
|
Loading…
Add table
Add a link
Reference in a new issue