1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 /******************************************************************************
3  * include/asm-x86/hap.h
4  *
5  * hardware-assisted paging
6  * Copyright (c) 2007 Advanced Micro Devices (Wei Huang)
7  *
8  * Parts of this code are Copyright (c) 2006 by XenSource Inc.
9  * Parts of this code are Copyright (c) 2006 by Michael A Fetterman
10  * Parts based on earlier work by Michael A Fetterman, Ian Pratt et al.
11  */
12 
13 #ifndef _XEN_HAP_H
14 #define _XEN_HAP_H
15 
16 #define HAP_PRINTK(_f, _a...)                                         \
17     debugtrace_printk("hap: %s(): " _f, __func__, ##_a)
18 
19 /************************************************/
20 /*        hap domain level functions            */
21 /************************************************/
22 void  hap_domain_init(struct domain *d);
23 int   hap_domctl(struct domain *d, struct xen_domctl_shadow_op *sc,
24                  XEN_GUEST_HANDLE_PARAM(xen_domctl_t) u_domctl);
25 int   hap_enable(struct domain *d, u32 mode);
26 void  hap_final_teardown(struct domain *d);
27 void  hap_vcpu_teardown(struct vcpu *v);
28 void  hap_teardown(struct domain *d, bool *preempted);
29 void  hap_vcpu_init(struct vcpu *v);
30 int   hap_track_dirty_vram(struct domain *d,
31                            unsigned long begin_pfn,
32                            unsigned int nr_frames,
33                            XEN_GUEST_HANDLE(void) guest_dirty_bitmap);
34 
35 extern const struct paging_mode *hap_paging_get_mode(struct vcpu *v);
36 int hap_set_allocation(struct domain *d, unsigned int pages, bool *preempted);
37 unsigned int hap_get_allocation(struct domain *d);
38 
39 #endif /* XEN_HAP_H */
40 
41 /*
42  * Local variables:
43  * mode: C
44  * c-file-style: "BSD"
45  * c-basic-offset: 4
46  * indent-tabs-mode: nil
47  * End:
48  */
49