Coverage Report

Created: 2017-10-25 09:10

/root/src/xen/xen/include/asm/paging.h
Line
Count
Source (jump to first uncovered line)
1
/******************************************************************************
2
 * include/asm-x86/paging.h
3
 *
4
 * Common interface for paging support
5
 * Copyright (c) 2007 Advanced Micro Devices (Wei Huang) 
6
 * Parts of this code are Copyright (c) 2006 by XenSource Inc.
7
 * Parts of this code are Copyright (c) 2006 by Michael A Fetterman
8
 * Parts based on earlier work by Michael A Fetterman, Ian Pratt et al.
9
 *
10
 * This program is free software; you can redistribute it and/or modify
11
 * it under the terms of the GNU General Public License as published by
12
 * the Free Software Foundation; either version 2 of the License, or
13
 * (at your option) any later version.
14
 *
15
 * This program is distributed in the hope that it will be useful,
16
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18
 * GNU General Public License for more details.
19
 *
20
 * You should have received a copy of the GNU General Public License
21
 * along with this program; If not, see <http://www.gnu.org/licenses/>.
22
 */
23
24
#ifndef _XEN_PAGING_H
25
#define _XEN_PAGING_H
26
27
#include <xen/mm.h>
28
#include <public/domctl.h>
29
#include <xen/sched.h>
30
#include <xen/perfc.h>
31
#include <xen/domain_page.h>
32
#include <asm/flushtlb.h>
33
#include <asm/domain.h>
34
35
/*****************************************************************************
36
 * Macros to tell which paging mode a domain is in */
37
38
7.70k
#define PG_SH_shift    20
39
11.2M
#define PG_HAP_shift   21
40
/* We're in one of the shadow modes */
41
#ifdef CONFIG_SHADOW_PAGING
42
7.70k
#define PG_SH_enable   (1U << PG_SH_shift)
43
#else
44
#define PG_SH_enable   0
45
#endif
46
11.2M
#define PG_HAP_enable  (1U << PG_HAP_shift)
47
48
/* common paging mode bits */
49
6.89M
#define PG_mode_shift  10 
50
/* Refcounts based on shadow tables instead of guest tables */
51
18.4E
#define PG_refcounts   (XEN_DOMCTL_SHADOW_ENABLE_REFCOUNT << PG_mode_shift)
52
/* Enable log dirty mode */
53
9.13k
#define PG_log_dirty   (XEN_DOMCTL_SHADOW_ENABLE_LOG_DIRTY << PG_mode_shift)
54
/* Xen does p2m translation, not guest */
55
6.90M
#define PG_translate   (XEN_DOMCTL_SHADOW_ENABLE_TRANSLATE << PG_mode_shift)
56
/* Xen does not steal address space from the domain for its own booking;
57
 * requires VT or similar mechanisms */
58
16
#define PG_external    (XEN_DOMCTL_SHADOW_ENABLE_EXTERNAL << PG_mode_shift)
59
60
/* All paging modes. */
61
1
#define PG_MASK (PG_refcounts | PG_log_dirty | PG_translate | PG_external)
62
63
0
#define paging_mode_enabled(_d)   (!!(_d)->arch.paging.mode)
64
7.70k
#define paging_mode_shadow(_d)    (!!((_d)->arch.paging.mode & PG_SH_enable))
65
11.2M
#define paging_mode_hap(_d)       (!!((_d)->arch.paging.mode & PG_HAP_enable))
66
67
18.4E
#define paging_mode_refcounts(_d) (!!((_d)->arch.paging.mode & PG_refcounts))
68
9.13k
#define paging_mode_log_dirty(_d) (!!((_d)->arch.paging.mode & PG_log_dirty))
69
6.90M
#define paging_mode_translate(_d) (!!((_d)->arch.paging.mode & PG_translate))
70
24
#define paging_mode_external(_d)  (!!((_d)->arch.paging.mode & PG_external))
71
72
#define paging_mode_only_log_dirty(_d)                  \
73
    (((_d)->arch.paging.mode & PG_MASK) == PG_log_dirty)
74
75
/* flags used for paging debug */
76
0
#define PAGING_DEBUG_LOGDIRTY 0
77
78
/*****************************************************************************
79
 * Mode-specific entry points into the shadow code.  
80
 *
81
 * These shouldn't be used directly by callers; rather use the functions
82
 * below which will indirect through this table as appropriate. */
83
84
struct sh_emulate_ctxt;
85
struct shadow_paging_mode {
86
#ifdef CONFIG_SHADOW_PAGING
87
    void          (*detach_old_tables     )(struct vcpu *v);
88
    int           (*x86_emulate_write     )(struct vcpu *v, unsigned long va,
89
                                            void *src, u32 bytes,
90
                                            struct sh_emulate_ctxt *sh_ctxt);
91
    int           (*x86_emulate_cmpxchg   )(struct vcpu *v, unsigned long va,
92
                                            unsigned long old, 
93
                                            unsigned long new,
94
                                            unsigned int bytes,
95
                                            struct sh_emulate_ctxt *sh_ctxt);
96
    bool          (*write_guest_entry     )(struct vcpu *v, intpte_t *p,
97
                                            intpte_t new, mfn_t gmfn);
98
    bool          (*cmpxchg_guest_entry   )(struct vcpu *v, intpte_t *p,
99
                                            intpte_t *old, intpte_t new,
100
                                            mfn_t gmfn);
101
    mfn_t         (*make_monitor_table    )(struct vcpu *v);
102
    void          (*destroy_monitor_table )(struct vcpu *v, mfn_t mmfn);
103
    int           (*guess_wrmap           )(struct vcpu *v, 
104
                                            unsigned long vaddr, mfn_t gmfn);
105
    void          (*pagetable_dying       )(struct vcpu *v, paddr_t gpa);
106
#endif
107
    /* For outsiders to tell what mode we're in */
108
    unsigned int shadow_levels;
109
};
110
111
112
/************************************************/
113
/*        common paging interface               */
114
/************************************************/
115
struct paging_mode {
116
    int           (*page_fault            )(struct vcpu *v, unsigned long va,
117
                                            struct cpu_user_regs *regs);
118
    bool          (*invlpg                )(struct vcpu *v, unsigned long va);
119
    unsigned long (*gva_to_gfn            )(struct vcpu *v,
120
                                            struct p2m_domain *p2m,
121
                                            unsigned long va,
122
                                            uint32_t *pfec);
123
    unsigned long (*p2m_ga_to_gfn         )(struct vcpu *v,
124
                                            struct p2m_domain *p2m,
125
                                            unsigned long cr3,
126
                                            paddr_t ga, uint32_t *pfec,
127
                                            unsigned int *page_order);
128
    void          (*update_cr3            )(struct vcpu *v, int do_locking);
129
    void          (*update_paging_modes   )(struct vcpu *v);
130
    void          (*write_p2m_entry       )(struct domain *d, unsigned long gfn,
131
                                            l1_pgentry_t *p, l1_pgentry_t new,
132
                                            unsigned int level);
133
134
    unsigned int guest_levels;
135
136
    /* paging support extension */
137
    struct shadow_paging_mode shadow;
138
};
139
140
/*****************************************************************************
141
 * Log dirty code */
142
143
/* get the dirty bitmap for a specific range of pfns */
144
void paging_log_dirty_range(struct domain *d,
145
                            unsigned long begin_pfn,
146
                            unsigned long nr,
147
                            uint8_t *dirty_bitmap);
148
149
/* enable log dirty */
150
int paging_log_dirty_enable(struct domain *d, bool_t log_global);
151
152
/* log dirty initialization */
153
void paging_log_dirty_init(struct domain *d, const struct log_dirty_ops *ops);
154
155
/* mark a page as dirty */
156
void paging_mark_dirty(struct domain *d, mfn_t gmfn);
157
/* mark a page as dirty with taking guest pfn as parameter */
158
void paging_mark_pfn_dirty(struct domain *d, pfn_t pfn);
159
160
/* is this guest page dirty? 
161
 * This is called from inside paging code, with the paging lock held. */
162
int paging_mfn_is_dirty(struct domain *d, mfn_t gmfn);
163
164
/*
165
 * Log-dirty radix tree indexing:
166
 *   All tree nodes are PAGE_SIZE bytes, mapped on-demand.
167
 *   Leaf nodes are simple bitmaps; 1 bit per guest pfn.
168
 *   Interior nodes are arrays of LOGDIRTY_NODE_ENTRIES mfns.
169
 * TODO: Dynamic radix tree height. Most guests will only need 2 levels.
170
 *       The fourth level is basically unusable on 32-bit Xen.
171
 * TODO2: Abstract out the radix-tree mechanics?
172
 */
173
0
#define LOGDIRTY_NODE_ENTRIES (1 << PAGETABLE_ORDER)
174
0
#define L1_LOGDIRTY_IDX(pfn) (pfn_x(pfn) & ((1 << (PAGE_SHIFT + 3)) - 1))
175
0
#define L2_LOGDIRTY_IDX(pfn) ((pfn_x(pfn) >> (PAGE_SHIFT + 3)) & \
176
0
                              (LOGDIRTY_NODE_ENTRIES-1))
177
0
#define L3_LOGDIRTY_IDX(pfn) ((pfn_x(pfn) >> (PAGE_SHIFT + 3 + PAGETABLE_ORDER)) & \
178
0
                              (LOGDIRTY_NODE_ENTRIES-1))
179
0
#define L4_LOGDIRTY_IDX(pfn) ((pfn_x(pfn) >> (PAGE_SHIFT + 3 + PAGETABLE_ORDER * 2)) & \
180
0
                              (LOGDIRTY_NODE_ENTRIES-1))
181
182
/* VRAM dirty tracking support */
183
struct sh_dirty_vram {
184
    unsigned long begin_pfn;
185
    unsigned long end_pfn;
186
    paddr_t *sl1ma;
187
    uint8_t *dirty_bitmap;
188
    s_time_t last_dirty;
189
};
190
191
/*****************************************************************************
192
 * Entry points into the paging-assistance code */
193
194
/* Initialize the paging resource for vcpu struct. It is called by
195
 * vcpu_initialise() in domain.c */
196
void paging_vcpu_init(struct vcpu *v);
197
198
/* Set up the paging-assistance-specific parts of a domain struct at
199
 * start of day.  Called for every domain from arch_domain_create() */
200
int paging_domain_init(struct domain *d, unsigned int domcr_flags);
201
202
/* Handler for paging-control ops: operations from user-space to enable
203
 * and disable ephemeral shadow modes (test mode and log-dirty mode) and
204
 * manipulate the log-dirty bitmap. */
205
int paging_domctl(struct domain *d, struct xen_domctl_shadow_op *sc,
206
                  XEN_GUEST_HANDLE_PARAM(xen_domctl_t) u_domctl,
207
                  bool_t resuming);
208
209
/* Helper hypercall for dealing with continuations. */
210
long paging_domctl_continuation(XEN_GUEST_HANDLE_PARAM(xen_domctl_t));
211
212
/* Call when destroying a domain */
213
int paging_teardown(struct domain *d);
214
215
/* Call once all of the references to the domain have gone away */
216
void paging_final_teardown(struct domain *d);
217
218
/* Enable an arbitrary paging-assistance mode.  Call once at domain
219
 * creation. */
220
int paging_enable(struct domain *d, u32 mode);
221
222
364k
#define paging_get_hostmode(v)    ((v)->arch.paging.mode)
223
0
#define paging_get_nestedmode(v)  ((v)->arch.paging.nestedmode)
224
const struct paging_mode *paging_get_mode(struct vcpu *v);
225
void paging_update_nestedmode(struct vcpu *v);
226
227
/* Page fault handler
228
 * Called from pagefault handler in Xen, and from the HVM trap handlers
229
 * for pagefaults.  Returns 1 if this fault was an artefact of the
230
 * paging code (and the guest should retry) or 0 if it is not (and the
231
 * fault should be handled elsewhere or passed to the guest).
232
 *
233
 * Note: under shadow paging, this function handles all page faults;
234
 * however, for hardware-assisted paging, this function handles only 
235
 * host page faults (i.e. nested page faults). */
236
static inline int
237
paging_fault(unsigned long va, struct cpu_user_regs *regs)
238
0
{
239
0
    struct vcpu *v = current;
240
0
    return paging_get_hostmode(v)->page_fault(v, va, regs);
241
0
}
Unexecuted instantiation: domctl.c:paging_fault
Unexecuted instantiation: misc-hypercalls.c:paging_fault
Unexecuted instantiation: iret.c:paging_fault
Unexecuted instantiation: emul-priv-op.c:paging_fault
Unexecuted instantiation: emul-inv-op.c:paging_fault
Unexecuted instantiation: emul-gate-op.c:paging_fault
Unexecuted instantiation: descriptor-tables.c:paging_fault
Unexecuted instantiation: callback.c:paging_fault
Unexecuted instantiation: backtrace.c:paging_fault
Unexecuted instantiation: op_model_athlon.c:paging_fault
Unexecuted instantiation: nested_ept.c:paging_fault
Unexecuted instantiation: nested_hap.c:paging_fault
Unexecuted instantiation: hap.c:paging_fault
Unexecuted instantiation: multi.c:paging_fault
Unexecuted instantiation: common.c:paging_fault
Unexecuted instantiation: mem_sharing.c:paging_fault
Unexecuted instantiation: mem_paging.c:paging_fault
Unexecuted instantiation: guest_walk.c:paging_fault
Unexecuted instantiation: altp2m.c:paging_fault
Unexecuted instantiation: p2m-pod.c:paging_fault
Unexecuted instantiation: p2m-ept.c:paging_fault
Unexecuted instantiation: p2m-pt.c:paging_fault
Unexecuted instantiation: p2m.c:paging_fault
Unexecuted instantiation: paging.c:paging_fault
Unexecuted instantiation: vvmx.c:paging_fault
Unexecuted instantiation: vmx.c:paging_fault
Unexecuted instantiation: vmcs.c:paging_fault
Unexecuted instantiation: realmode.c:paging_fault
Unexecuted instantiation: vmcb.c:paging_fault
Unexecuted instantiation: svm.c:paging_fault
Unexecuted instantiation: nestedsvm.c:paging_fault
Unexecuted instantiation: intr.c:paging_fault
Unexecuted instantiation: vpt.c:paging_fault
Unexecuted instantiation: vpic.c:paging_fault
Unexecuted instantiation: vmsi.c:paging_fault
Unexecuted instantiation: vlapic.c:paging_fault
Unexecuted instantiation: viridian.c:paging_fault
Unexecuted instantiation: vioapic.c:paging_fault
Unexecuted instantiation: stdvga.c:paging_fault
Unexecuted instantiation: save.c:paging_fault
Unexecuted instantiation: rtc.c:paging_fault
Unexecuted instantiation: quirks.c:paging_fault
Unexecuted instantiation: pmtimer.c:paging_fault
Unexecuted instantiation: nestedhvm.c:paging_fault
Unexecuted instantiation: mtrr.c:paging_fault
Unexecuted instantiation: monitor.c:paging_fault
Unexecuted instantiation: irq.c:paging_fault
Unexecuted instantiation: ioreq.c:paging_fault
Unexecuted instantiation: intercept.c:paging_fault
Unexecuted instantiation: i8254.c:paging_fault
Unexecuted instantiation: hvm.c:paging_fault
Unexecuted instantiation: hpet.c:paging_fault
Unexecuted instantiation: emulate.c:paging_fault
Unexecuted instantiation: dm.c:paging_fault
Unexecuted instantiation: vmce.c:paging_fault
Unexecuted instantiation: mce_intel.c:paging_fault
Unexecuted instantiation: mce.c:paging_fault
Unexecuted instantiation: vpmu_intel.c:paging_fault
Unexecuted instantiation: vpmu.c:paging_fault
Unexecuted instantiation: intel.c:paging_fault
Unexecuted instantiation: amd.c:paging_fault
Unexecuted instantiation: cpu_idle.c:paging_fault
Unexecuted instantiation: suspend.c:paging_fault
Unexecuted instantiation: xstate.c:paging_fault
Unexecuted instantiation: traps.c:paging_fault
Unexecuted instantiation: time.c:paging_fault
Unexecuted instantiation: smp.c:paging_fault
Unexecuted instantiation: setup.c:paging_fault
Unexecuted instantiation: platform_hypercall.c:paging_fault
Unexecuted instantiation: physdev.c:paging_fault
Unexecuted instantiation: mm.c:paging_fault
Unexecuted instantiation: microcode.c:paging_fault
Unexecuted instantiation: machine_kexec.c:paging_fault
Unexecuted instantiation: msi.c:paging_fault
Unexecuted instantiation: i387.c:paging_fault
Unexecuted instantiation: hypercall.c:paging_fault
Unexecuted instantiation: debug.c:paging_fault
Unexecuted instantiation: crash.c:paging_fault
Unexecuted instantiation: compat.c:paging_fault
Unexecuted instantiation: cpuid.c:paging_fault
Unexecuted instantiation: xsm_core.c:paging_fault
Unexecuted instantiation: pmstat.c:paging_fault
Unexecuted instantiation: iommu_guest.c:paging_fault
Unexecuted instantiation: pci_amd_iommu.c:paging_fault
Unexecuted instantiation: iommu_map.c:paging_fault
Unexecuted instantiation: vtd.c:paging_fault
Unexecuted instantiation: pci.c:paging_fault
Unexecuted instantiation: io.c:paging_fault
Unexecuted instantiation: iommu.c:paging_fault
Unexecuted instantiation: cpufreq.c:paging_fault
Unexecuted instantiation: console.c:paging_fault
Unexecuted instantiation: libelf-loader.c:paging_fault
Unexecuted instantiation: llvm.c:paging_fault
Unexecuted instantiation: tmem_control.c:paging_fault
Unexecuted instantiation: tmem_xen.c:paging_fault
Unexecuted instantiation: tmem.c:paging_fault
Unexecuted instantiation: xenoprof.c:paging_fault
Unexecuted instantiation: vm_event.c:paging_fault
Unexecuted instantiation: sysctl.c:paging_fault
Unexecuted instantiation: symbols.c:paging_fault
Unexecuted instantiation: spinlock.c:paging_fault
Unexecuted instantiation: schedule.c:paging_fault
Unexecuted instantiation: sched_rt.c:paging_fault
Unexecuted instantiation: sched_arinc653.c:paging_fault
Unexecuted instantiation: page_alloc.c:paging_fault
Unexecuted instantiation: multicall.c:paging_fault
Unexecuted instantiation: memory.c:paging_fault
Unexecuted instantiation: mem_access.c:paging_fault
Unexecuted instantiation: kimage.c:paging_fault
Unexecuted instantiation: kexec.c:paging_fault
Unexecuted instantiation: kernel.c:paging_fault
Unexecuted instantiation: guestcopy.c:paging_fault
Unexecuted instantiation: grant_table.c:paging_fault
Unexecuted instantiation: event_fifo.c:paging_fault
Unexecuted instantiation: event_channel.c:paging_fault
Unexecuted instantiation: domain.c:paging_fault
Unexecuted instantiation: ro-page-fault.c:paging_fault
242
243
/* Handle invlpg requests on vcpus. */
244
void paging_invlpg(struct vcpu *v, unsigned long va);
245
246
/*
247
 * Translate a guest virtual address to the frame number that the
248
 * *guest* pagetables would map it to.  Returns INVALID_GFN if the guest
249
 * tables don't map this address for this kind of access.
250
 * *pfec is used to determine which kind of access this is when
251
 * walking the tables.  The caller should set the PFEC_page_present bit
252
 * in *pfec; in the failure case, that bit will be cleared if appropriate.
253
 *
254
 * SDM Intel 64 Volume 3, Chapter Paging, PAGE-FAULT EXCEPTIONS:
255
 * The PFEC_insn_fetch flag is set only when NX or SMEP are enabled.
256
 */
257
unsigned long paging_gva_to_gfn(struct vcpu *v,
258
                                unsigned long va,
259
                                uint32_t *pfec);
260
261
/* Translate a guest address using a particular CR3 value.  This is used
262
 * to by nested HAP code, to walk the guest-supplied NPT tables as if
263
 * they were pagetables.
264
 * Use 'paddr_t' for the guest address so it won't overflow when
265
 * l1 or l2 guest is in 32bit PAE mode.
266
 * If the GFN returned is not INVALID_GFN, *page_order gives
267
 * the size of the superpage (if any) it was found in. */
268
static inline unsigned long paging_ga_to_gfn_cr3(struct vcpu *v,
269
                                                 unsigned long cr3,
270
                                                 paddr_t ga,
271
                                                 uint32_t *pfec,
272
                                                 unsigned int *page_order)
273
0
{
274
0
    struct p2m_domain *p2m = v->domain->arch.p2m;
275
0
    return paging_get_hostmode(v)->p2m_ga_to_gfn(v, p2m, cr3, ga, pfec,
276
0
        page_order);
277
0
}
Unexecuted instantiation: ro-page-fault.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: misc-hypercalls.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: iret.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: emul-priv-op.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: emul-inv-op.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: emul-gate-op.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: descriptor-tables.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: callback.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: backtrace.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: op_model_athlon.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: nested_ept.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: nested_hap.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: hap.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: multi.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: common.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: mem_sharing.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: mem_paging.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: guest_walk.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: altp2m.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: p2m-pod.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: p2m-ept.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: p2m-pt.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: p2m.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: paging.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: vvmx.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: vmx.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: vmcs.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: realmode.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: vmcb.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: svm.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: nestedsvm.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: intr.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: vpt.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: vpic.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: vmsi.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: vlapic.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: viridian.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: vioapic.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: stdvga.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: save.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: rtc.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: quirks.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: pmtimer.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: nestedhvm.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: mtrr.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: monitor.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: irq.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: ioreq.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: intercept.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: i8254.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: hvm.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: hpet.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: emulate.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: dm.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: vmce.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: mce_intel.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: mce.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: vpmu_intel.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: vpmu.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: intel.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: amd.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: cpu_idle.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: suspend.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: xstate.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: traps.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: time.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: smp.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: setup.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: platform_hypercall.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: physdev.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: mm.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: microcode.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: machine_kexec.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: msi.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: i387.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: hypercall.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: debug.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: crash.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: compat.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: cpuid.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: xsm_core.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: pmstat.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: iommu_guest.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: pci_amd_iommu.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: iommu_map.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: vtd.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: pci.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: io.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: iommu.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: cpufreq.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: console.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: libelf-loader.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: llvm.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: tmem_control.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: tmem_xen.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: tmem.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: xenoprof.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: vm_event.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: sysctl.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: symbols.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: spinlock.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: schedule.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: sched_rt.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: sched_arinc653.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: page_alloc.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: multicall.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: memory.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: mem_access.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: kimage.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: kexec.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: kernel.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: guestcopy.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: grant_table.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: event_fifo.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: event_channel.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: domain.c:paging_ga_to_gfn_cr3
Unexecuted instantiation: domctl.c:paging_ga_to_gfn_cr3
278
279
/* Update all the things that are derived from the guest's CR3.
280
 * Called when the guest changes CR3; the caller can then use v->arch.cr3
281
 * as the value to load into the host CR3 to schedule this vcpu */
282
static inline void paging_update_cr3(struct vcpu *v)
283
0
{
284
0
    paging_get_hostmode(v)->update_cr3(v, 1);
285
0
}
Unexecuted instantiation: domctl.c:paging_update_cr3
Unexecuted instantiation: misc-hypercalls.c:paging_update_cr3
Unexecuted instantiation: domain.c:paging_update_cr3
Unexecuted instantiation: event_channel.c:paging_update_cr3
Unexecuted instantiation: event_fifo.c:paging_update_cr3
Unexecuted instantiation: grant_table.c:paging_update_cr3
Unexecuted instantiation: guestcopy.c:paging_update_cr3
Unexecuted instantiation: kernel.c:paging_update_cr3
Unexecuted instantiation: kexec.c:paging_update_cr3
Unexecuted instantiation: kimage.c:paging_update_cr3
Unexecuted instantiation: mem_access.c:paging_update_cr3
Unexecuted instantiation: memory.c:paging_update_cr3
Unexecuted instantiation: multicall.c:paging_update_cr3
Unexecuted instantiation: page_alloc.c:paging_update_cr3
Unexecuted instantiation: sched_arinc653.c:paging_update_cr3
Unexecuted instantiation: sched_rt.c:paging_update_cr3
Unexecuted instantiation: schedule.c:paging_update_cr3
Unexecuted instantiation: spinlock.c:paging_update_cr3
Unexecuted instantiation: symbols.c:paging_update_cr3
Unexecuted instantiation: sysctl.c:paging_update_cr3
Unexecuted instantiation: vm_event.c:paging_update_cr3
Unexecuted instantiation: xenoprof.c:paging_update_cr3
Unexecuted instantiation: tmem.c:paging_update_cr3
Unexecuted instantiation: tmem_xen.c:paging_update_cr3
Unexecuted instantiation: tmem_control.c:paging_update_cr3
Unexecuted instantiation: llvm.c:paging_update_cr3
Unexecuted instantiation: libelf-loader.c:paging_update_cr3
Unexecuted instantiation: console.c:paging_update_cr3
Unexecuted instantiation: cpufreq.c:paging_update_cr3
Unexecuted instantiation: ro-page-fault.c:paging_update_cr3
Unexecuted instantiation: iommu.c:paging_update_cr3
Unexecuted instantiation: io.c:paging_update_cr3
Unexecuted instantiation: pci.c:paging_update_cr3
Unexecuted instantiation: vtd.c:paging_update_cr3
Unexecuted instantiation: iommu_map.c:paging_update_cr3
Unexecuted instantiation: pci_amd_iommu.c:paging_update_cr3
Unexecuted instantiation: iommu_guest.c:paging_update_cr3
Unexecuted instantiation: pmstat.c:paging_update_cr3
Unexecuted instantiation: xsm_core.c:paging_update_cr3
Unexecuted instantiation: cpuid.c:paging_update_cr3
Unexecuted instantiation: compat.c:paging_update_cr3
Unexecuted instantiation: crash.c:paging_update_cr3
Unexecuted instantiation: debug.c:paging_update_cr3
Unexecuted instantiation: hypercall.c:paging_update_cr3
Unexecuted instantiation: i387.c:paging_update_cr3
Unexecuted instantiation: msi.c:paging_update_cr3
Unexecuted instantiation: machine_kexec.c:paging_update_cr3
Unexecuted instantiation: microcode.c:paging_update_cr3
Unexecuted instantiation: mm.c:paging_update_cr3
Unexecuted instantiation: physdev.c:paging_update_cr3
Unexecuted instantiation: platform_hypercall.c:paging_update_cr3
Unexecuted instantiation: setup.c:paging_update_cr3
Unexecuted instantiation: smp.c:paging_update_cr3
Unexecuted instantiation: time.c:paging_update_cr3
Unexecuted instantiation: traps.c:paging_update_cr3
Unexecuted instantiation: xstate.c:paging_update_cr3
Unexecuted instantiation: suspend.c:paging_update_cr3
Unexecuted instantiation: cpu_idle.c:paging_update_cr3
Unexecuted instantiation: amd.c:paging_update_cr3
Unexecuted instantiation: intel.c:paging_update_cr3
Unexecuted instantiation: vpmu.c:paging_update_cr3
Unexecuted instantiation: vpmu_intel.c:paging_update_cr3
Unexecuted instantiation: mce.c:paging_update_cr3
Unexecuted instantiation: mce_intel.c:paging_update_cr3
Unexecuted instantiation: vmce.c:paging_update_cr3
Unexecuted instantiation: dm.c:paging_update_cr3
Unexecuted instantiation: emulate.c:paging_update_cr3
Unexecuted instantiation: hpet.c:paging_update_cr3
Unexecuted instantiation: hvm.c:paging_update_cr3
Unexecuted instantiation: i8254.c:paging_update_cr3
Unexecuted instantiation: intercept.c:paging_update_cr3
Unexecuted instantiation: ioreq.c:paging_update_cr3
Unexecuted instantiation: irq.c:paging_update_cr3
Unexecuted instantiation: monitor.c:paging_update_cr3
Unexecuted instantiation: mtrr.c:paging_update_cr3
Unexecuted instantiation: nestedhvm.c:paging_update_cr3
Unexecuted instantiation: pmtimer.c:paging_update_cr3
Unexecuted instantiation: quirks.c:paging_update_cr3
Unexecuted instantiation: rtc.c:paging_update_cr3
Unexecuted instantiation: save.c:paging_update_cr3
Unexecuted instantiation: stdvga.c:paging_update_cr3
Unexecuted instantiation: vioapic.c:paging_update_cr3
Unexecuted instantiation: viridian.c:paging_update_cr3
Unexecuted instantiation: vlapic.c:paging_update_cr3
Unexecuted instantiation: vmsi.c:paging_update_cr3
Unexecuted instantiation: vpic.c:paging_update_cr3
Unexecuted instantiation: vpt.c:paging_update_cr3
Unexecuted instantiation: intr.c:paging_update_cr3
Unexecuted instantiation: nestedsvm.c:paging_update_cr3
Unexecuted instantiation: svm.c:paging_update_cr3
Unexecuted instantiation: vmcb.c:paging_update_cr3
Unexecuted instantiation: realmode.c:paging_update_cr3
Unexecuted instantiation: vmcs.c:paging_update_cr3
Unexecuted instantiation: vmx.c:paging_update_cr3
Unexecuted instantiation: vvmx.c:paging_update_cr3
Unexecuted instantiation: paging.c:paging_update_cr3
Unexecuted instantiation: p2m.c:paging_update_cr3
Unexecuted instantiation: p2m-pt.c:paging_update_cr3
Unexecuted instantiation: p2m-ept.c:paging_update_cr3
Unexecuted instantiation: p2m-pod.c:paging_update_cr3
Unexecuted instantiation: altp2m.c:paging_update_cr3
Unexecuted instantiation: guest_walk.c:paging_update_cr3
Unexecuted instantiation: mem_paging.c:paging_update_cr3
Unexecuted instantiation: mem_sharing.c:paging_update_cr3
Unexecuted instantiation: common.c:paging_update_cr3
Unexecuted instantiation: multi.c:paging_update_cr3
Unexecuted instantiation: hap.c:paging_update_cr3
Unexecuted instantiation: nested_hap.c:paging_update_cr3
Unexecuted instantiation: nested_ept.c:paging_update_cr3
Unexecuted instantiation: op_model_athlon.c:paging_update_cr3
Unexecuted instantiation: backtrace.c:paging_update_cr3
Unexecuted instantiation: callback.c:paging_update_cr3
Unexecuted instantiation: descriptor-tables.c:paging_update_cr3
Unexecuted instantiation: emul-gate-op.c:paging_update_cr3
Unexecuted instantiation: emul-inv-op.c:paging_update_cr3
Unexecuted instantiation: emul-priv-op.c:paging_update_cr3
Unexecuted instantiation: iret.c:paging_update_cr3
286
287
/* Update all the things that are derived from the guest's CR0/CR3/CR4.
288
 * Called to initialize paging structures if the paging mode
289
 * has changed, and when bringing up a VCPU for the first time. */
290
static inline void paging_update_paging_modes(struct vcpu *v)
291
96
{
292
96
    paging_get_hostmode(v)->update_paging_modes(v);
293
96
}
Unexecuted instantiation: intel.c:paging_update_paging_modes
Unexecuted instantiation: ro-page-fault.c:paging_update_paging_modes
Unexecuted instantiation: misc-hypercalls.c:paging_update_paging_modes
Unexecuted instantiation: iret.c:paging_update_paging_modes
Unexecuted instantiation: emul-priv-op.c:paging_update_paging_modes
Unexecuted instantiation: emul-inv-op.c:paging_update_paging_modes
Unexecuted instantiation: emul-gate-op.c:paging_update_paging_modes
Unexecuted instantiation: descriptor-tables.c:paging_update_paging_modes
Unexecuted instantiation: callback.c:paging_update_paging_modes
Unexecuted instantiation: backtrace.c:paging_update_paging_modes
Unexecuted instantiation: op_model_athlon.c:paging_update_paging_modes
Unexecuted instantiation: nested_ept.c:paging_update_paging_modes
Unexecuted instantiation: nested_hap.c:paging_update_paging_modes
Unexecuted instantiation: hap.c:paging_update_paging_modes
Unexecuted instantiation: multi.c:paging_update_paging_modes
Unexecuted instantiation: common.c:paging_update_paging_modes
Unexecuted instantiation: mem_sharing.c:paging_update_paging_modes
Unexecuted instantiation: mem_paging.c:paging_update_paging_modes
Unexecuted instantiation: guest_walk.c:paging_update_paging_modes
Unexecuted instantiation: altp2m.c:paging_update_paging_modes
Unexecuted instantiation: p2m-pod.c:paging_update_paging_modes
Unexecuted instantiation: p2m-ept.c:paging_update_paging_modes
Unexecuted instantiation: p2m-pt.c:paging_update_paging_modes
Unexecuted instantiation: p2m.c:paging_update_paging_modes
Unexecuted instantiation: paging.c:paging_update_paging_modes
Unexecuted instantiation: vvmx.c:paging_update_paging_modes
Unexecuted instantiation: vmx.c:paging_update_paging_modes
vmcs.c:paging_update_paging_modes
Line
Count
Source
291
12
{
292
12
    paging_get_hostmode(v)->update_paging_modes(v);
293
12
}
Unexecuted instantiation: realmode.c:paging_update_paging_modes
Unexecuted instantiation: vmcb.c:paging_update_paging_modes
Unexecuted instantiation: nestedsvm.c:paging_update_paging_modes
Unexecuted instantiation: intr.c:paging_update_paging_modes
Unexecuted instantiation: vpt.c:paging_update_paging_modes
Unexecuted instantiation: vpic.c:paging_update_paging_modes
Unexecuted instantiation: vmsi.c:paging_update_paging_modes
Unexecuted instantiation: vlapic.c:paging_update_paging_modes
Unexecuted instantiation: viridian.c:paging_update_paging_modes
Unexecuted instantiation: vioapic.c:paging_update_paging_modes
Unexecuted instantiation: stdvga.c:paging_update_paging_modes
Unexecuted instantiation: save.c:paging_update_paging_modes
Unexecuted instantiation: rtc.c:paging_update_paging_modes
Unexecuted instantiation: quirks.c:paging_update_paging_modes
Unexecuted instantiation: pmtimer.c:paging_update_paging_modes
Unexecuted instantiation: nestedhvm.c:paging_update_paging_modes
Unexecuted instantiation: mtrr.c:paging_update_paging_modes
Unexecuted instantiation: monitor.c:paging_update_paging_modes
Unexecuted instantiation: irq.c:paging_update_paging_modes
Unexecuted instantiation: ioreq.c:paging_update_paging_modes
Unexecuted instantiation: intercept.c:paging_update_paging_modes
Unexecuted instantiation: i8254.c:paging_update_paging_modes
hvm.c:paging_update_paging_modes
Line
Count
Source
291
83
{
292
83
    paging_get_hostmode(v)->update_paging_modes(v);
293
83
}
Unexecuted instantiation: hpet.c:paging_update_paging_modes
Unexecuted instantiation: emulate.c:paging_update_paging_modes
Unexecuted instantiation: dm.c:paging_update_paging_modes
Unexecuted instantiation: vmce.c:paging_update_paging_modes
Unexecuted instantiation: mce_intel.c:paging_update_paging_modes
Unexecuted instantiation: mce.c:paging_update_paging_modes
Unexecuted instantiation: vpmu_intel.c:paging_update_paging_modes
Unexecuted instantiation: vpmu.c:paging_update_paging_modes
Unexecuted instantiation: svm.c:paging_update_paging_modes
Unexecuted instantiation: amd.c:paging_update_paging_modes
Unexecuted instantiation: cpu_idle.c:paging_update_paging_modes
Unexecuted instantiation: suspend.c:paging_update_paging_modes
Unexecuted instantiation: xstate.c:paging_update_paging_modes
Unexecuted instantiation: traps.c:paging_update_paging_modes
Unexecuted instantiation: time.c:paging_update_paging_modes
Unexecuted instantiation: smp.c:paging_update_paging_modes
Unexecuted instantiation: setup.c:paging_update_paging_modes
Unexecuted instantiation: platform_hypercall.c:paging_update_paging_modes
Unexecuted instantiation: physdev.c:paging_update_paging_modes
Unexecuted instantiation: mm.c:paging_update_paging_modes
Unexecuted instantiation: microcode.c:paging_update_paging_modes
Unexecuted instantiation: machine_kexec.c:paging_update_paging_modes
Unexecuted instantiation: msi.c:paging_update_paging_modes
Unexecuted instantiation: i387.c:paging_update_paging_modes
Unexecuted instantiation: hypercall.c:paging_update_paging_modes
Unexecuted instantiation: debug.c:paging_update_paging_modes
Unexecuted instantiation: crash.c:paging_update_paging_modes
Unexecuted instantiation: compat.c:paging_update_paging_modes
Unexecuted instantiation: cpuid.c:paging_update_paging_modes
Unexecuted instantiation: xsm_core.c:paging_update_paging_modes
Unexecuted instantiation: pmstat.c:paging_update_paging_modes
Unexecuted instantiation: iommu_guest.c:paging_update_paging_modes
Unexecuted instantiation: pci_amd_iommu.c:paging_update_paging_modes
Unexecuted instantiation: iommu_map.c:paging_update_paging_modes
Unexecuted instantiation: vtd.c:paging_update_paging_modes
Unexecuted instantiation: pci.c:paging_update_paging_modes
Unexecuted instantiation: io.c:paging_update_paging_modes
Unexecuted instantiation: iommu.c:paging_update_paging_modes
Unexecuted instantiation: cpufreq.c:paging_update_paging_modes
Unexecuted instantiation: console.c:paging_update_paging_modes
Unexecuted instantiation: libelf-loader.c:paging_update_paging_modes
Unexecuted instantiation: llvm.c:paging_update_paging_modes
Unexecuted instantiation: tmem_control.c:paging_update_paging_modes
Unexecuted instantiation: tmem_xen.c:paging_update_paging_modes
Unexecuted instantiation: tmem.c:paging_update_paging_modes
Unexecuted instantiation: xenoprof.c:paging_update_paging_modes
Unexecuted instantiation: vm_event.c:paging_update_paging_modes
Unexecuted instantiation: sysctl.c:paging_update_paging_modes
Unexecuted instantiation: symbols.c:paging_update_paging_modes
Unexecuted instantiation: spinlock.c:paging_update_paging_modes
Unexecuted instantiation: schedule.c:paging_update_paging_modes
Unexecuted instantiation: sched_rt.c:paging_update_paging_modes
Unexecuted instantiation: sched_arinc653.c:paging_update_paging_modes
Unexecuted instantiation: page_alloc.c:paging_update_paging_modes
Unexecuted instantiation: multicall.c:paging_update_paging_modes
Unexecuted instantiation: memory.c:paging_update_paging_modes
Unexecuted instantiation: mem_access.c:paging_update_paging_modes
Unexecuted instantiation: kimage.c:paging_update_paging_modes
Unexecuted instantiation: kexec.c:paging_update_paging_modes
Unexecuted instantiation: kernel.c:paging_update_paging_modes
Unexecuted instantiation: guestcopy.c:paging_update_paging_modes
Unexecuted instantiation: grant_table.c:paging_update_paging_modes
Unexecuted instantiation: event_fifo.c:paging_update_paging_modes
Unexecuted instantiation: event_channel.c:paging_update_paging_modes
domain.c:paging_update_paging_modes
Line
Count
Source
291
1
{
292
1
    paging_get_hostmode(v)->update_paging_modes(v);
293
1
}
Unexecuted instantiation: domctl.c:paging_update_paging_modes
294
295
296
/*
297
 * Write a new value into the guest pagetable, and update the
298
 * paging-assistance state appropriately.  Returns false if we page-faulted,
299
 * true for success.
300
 */
301
static inline bool paging_write_guest_entry(
302
    struct vcpu *v, intpte_t *p, intpte_t new, mfn_t gmfn)
303
0
{
304
0
#ifdef CONFIG_SHADOW_PAGING
305
0
    if ( unlikely(paging_mode_shadow(v->domain)) && paging_get_hostmode(v) )
306
0
        return paging_get_hostmode(v)->shadow.write_guest_entry(v, p, new,
307
0
                                                                gmfn);
308
0
#endif
309
0
    return !__copy_to_user(p, &new, sizeof(new));
310
0
}
Unexecuted instantiation: misc-hypercalls.c:paging_write_guest_entry
Unexecuted instantiation: domctl.c:paging_write_guest_entry
Unexecuted instantiation: domain.c:paging_write_guest_entry
Unexecuted instantiation: event_channel.c:paging_write_guest_entry
Unexecuted instantiation: event_fifo.c:paging_write_guest_entry
Unexecuted instantiation: grant_table.c:paging_write_guest_entry
Unexecuted instantiation: guestcopy.c:paging_write_guest_entry
Unexecuted instantiation: kernel.c:paging_write_guest_entry
Unexecuted instantiation: kexec.c:paging_write_guest_entry
Unexecuted instantiation: kimage.c:paging_write_guest_entry
Unexecuted instantiation: mem_access.c:paging_write_guest_entry
Unexecuted instantiation: memory.c:paging_write_guest_entry
Unexecuted instantiation: multicall.c:paging_write_guest_entry
Unexecuted instantiation: page_alloc.c:paging_write_guest_entry
Unexecuted instantiation: sched_arinc653.c:paging_write_guest_entry
Unexecuted instantiation: sched_rt.c:paging_write_guest_entry
Unexecuted instantiation: schedule.c:paging_write_guest_entry
Unexecuted instantiation: spinlock.c:paging_write_guest_entry
Unexecuted instantiation: symbols.c:paging_write_guest_entry
Unexecuted instantiation: sysctl.c:paging_write_guest_entry
Unexecuted instantiation: vm_event.c:paging_write_guest_entry
Unexecuted instantiation: xenoprof.c:paging_write_guest_entry
Unexecuted instantiation: tmem.c:paging_write_guest_entry
Unexecuted instantiation: tmem_xen.c:paging_write_guest_entry
Unexecuted instantiation: tmem_control.c:paging_write_guest_entry
Unexecuted instantiation: llvm.c:paging_write_guest_entry
Unexecuted instantiation: libelf-loader.c:paging_write_guest_entry
Unexecuted instantiation: console.c:paging_write_guest_entry
Unexecuted instantiation: cpufreq.c:paging_write_guest_entry
Unexecuted instantiation: iommu.c:paging_write_guest_entry
Unexecuted instantiation: io.c:paging_write_guest_entry
Unexecuted instantiation: pci.c:paging_write_guest_entry
Unexecuted instantiation: vtd.c:paging_write_guest_entry
Unexecuted instantiation: iommu_map.c:paging_write_guest_entry
Unexecuted instantiation: pci_amd_iommu.c:paging_write_guest_entry
Unexecuted instantiation: iommu_guest.c:paging_write_guest_entry
Unexecuted instantiation: pmstat.c:paging_write_guest_entry
Unexecuted instantiation: xsm_core.c:paging_write_guest_entry
Unexecuted instantiation: cpuid.c:paging_write_guest_entry
Unexecuted instantiation: compat.c:paging_write_guest_entry
Unexecuted instantiation: crash.c:paging_write_guest_entry
Unexecuted instantiation: debug.c:paging_write_guest_entry
Unexecuted instantiation: hypercall.c:paging_write_guest_entry
Unexecuted instantiation: i387.c:paging_write_guest_entry
Unexecuted instantiation: msi.c:paging_write_guest_entry
Unexecuted instantiation: machine_kexec.c:paging_write_guest_entry
Unexecuted instantiation: microcode.c:paging_write_guest_entry
Unexecuted instantiation: mm.c:paging_write_guest_entry
Unexecuted instantiation: physdev.c:paging_write_guest_entry
Unexecuted instantiation: platform_hypercall.c:paging_write_guest_entry
Unexecuted instantiation: setup.c:paging_write_guest_entry
Unexecuted instantiation: smp.c:paging_write_guest_entry
Unexecuted instantiation: time.c:paging_write_guest_entry
Unexecuted instantiation: traps.c:paging_write_guest_entry
Unexecuted instantiation: xstate.c:paging_write_guest_entry
Unexecuted instantiation: suspend.c:paging_write_guest_entry
Unexecuted instantiation: cpu_idle.c:paging_write_guest_entry
Unexecuted instantiation: amd.c:paging_write_guest_entry
Unexecuted instantiation: intel.c:paging_write_guest_entry
Unexecuted instantiation: vpmu.c:paging_write_guest_entry
Unexecuted instantiation: ro-page-fault.c:paging_write_guest_entry
Unexecuted instantiation: mce.c:paging_write_guest_entry
Unexecuted instantiation: mce_intel.c:paging_write_guest_entry
Unexecuted instantiation: vmce.c:paging_write_guest_entry
Unexecuted instantiation: dm.c:paging_write_guest_entry
Unexecuted instantiation: emulate.c:paging_write_guest_entry
Unexecuted instantiation: hpet.c:paging_write_guest_entry
Unexecuted instantiation: hvm.c:paging_write_guest_entry
Unexecuted instantiation: i8254.c:paging_write_guest_entry
Unexecuted instantiation: intercept.c:paging_write_guest_entry
Unexecuted instantiation: ioreq.c:paging_write_guest_entry
Unexecuted instantiation: irq.c:paging_write_guest_entry
Unexecuted instantiation: monitor.c:paging_write_guest_entry
Unexecuted instantiation: mtrr.c:paging_write_guest_entry
Unexecuted instantiation: nestedhvm.c:paging_write_guest_entry
Unexecuted instantiation: pmtimer.c:paging_write_guest_entry
Unexecuted instantiation: quirks.c:paging_write_guest_entry
Unexecuted instantiation: rtc.c:paging_write_guest_entry
Unexecuted instantiation: save.c:paging_write_guest_entry
Unexecuted instantiation: stdvga.c:paging_write_guest_entry
Unexecuted instantiation: vioapic.c:paging_write_guest_entry
Unexecuted instantiation: viridian.c:paging_write_guest_entry
Unexecuted instantiation: vlapic.c:paging_write_guest_entry
Unexecuted instantiation: vmsi.c:paging_write_guest_entry
Unexecuted instantiation: vpic.c:paging_write_guest_entry
Unexecuted instantiation: vpt.c:paging_write_guest_entry
Unexecuted instantiation: intr.c:paging_write_guest_entry
Unexecuted instantiation: nestedsvm.c:paging_write_guest_entry
Unexecuted instantiation: svm.c:paging_write_guest_entry
Unexecuted instantiation: vmcb.c:paging_write_guest_entry
Unexecuted instantiation: realmode.c:paging_write_guest_entry
Unexecuted instantiation: vmcs.c:paging_write_guest_entry
Unexecuted instantiation: vmx.c:paging_write_guest_entry
Unexecuted instantiation: vvmx.c:paging_write_guest_entry
Unexecuted instantiation: paging.c:paging_write_guest_entry
Unexecuted instantiation: p2m.c:paging_write_guest_entry
Unexecuted instantiation: p2m-pt.c:paging_write_guest_entry
Unexecuted instantiation: p2m-ept.c:paging_write_guest_entry
Unexecuted instantiation: p2m-pod.c:paging_write_guest_entry
Unexecuted instantiation: altp2m.c:paging_write_guest_entry
Unexecuted instantiation: guest_walk.c:paging_write_guest_entry
Unexecuted instantiation: mem_paging.c:paging_write_guest_entry
Unexecuted instantiation: mem_sharing.c:paging_write_guest_entry
Unexecuted instantiation: common.c:paging_write_guest_entry
Unexecuted instantiation: multi.c:paging_write_guest_entry
Unexecuted instantiation: hap.c:paging_write_guest_entry
Unexecuted instantiation: nested_hap.c:paging_write_guest_entry
Unexecuted instantiation: nested_ept.c:paging_write_guest_entry
Unexecuted instantiation: op_model_athlon.c:paging_write_guest_entry
Unexecuted instantiation: backtrace.c:paging_write_guest_entry
Unexecuted instantiation: callback.c:paging_write_guest_entry
Unexecuted instantiation: descriptor-tables.c:paging_write_guest_entry
Unexecuted instantiation: emul-gate-op.c:paging_write_guest_entry
Unexecuted instantiation: emul-inv-op.c:paging_write_guest_entry
Unexecuted instantiation: emul-priv-op.c:paging_write_guest_entry
Unexecuted instantiation: iret.c:paging_write_guest_entry
Unexecuted instantiation: vpmu_intel.c:paging_write_guest_entry
311
312
313
/*
314
 * Cmpxchg a new value into the guest pagetable, and update the
315
 * paging-assistance state appropriately.  Returns false if we page-faulted,
316
 * true if not.  N.B. caller should check the value of "old" to see if the
317
 * cmpxchg itself was successful.
318
 */
319
static inline bool paging_cmpxchg_guest_entry(
320
    struct vcpu *v, intpte_t *p, intpte_t *old, intpte_t new, mfn_t gmfn)
321
0
{
322
0
#ifdef CONFIG_SHADOW_PAGING
323
0
    if ( unlikely(paging_mode_shadow(v->domain)) && paging_get_hostmode(v) )
324
0
        return paging_get_hostmode(v)->shadow.cmpxchg_guest_entry(v, p, old,
325
0
                                                                  new, gmfn);
326
0
#endif
327
0
    return !cmpxchg_user(p, *old, new);
328
0
}
Unexecuted instantiation: ro-page-fault.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: misc-hypercalls.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: iret.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: emul-priv-op.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: emul-inv-op.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: emul-gate-op.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: descriptor-tables.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: callback.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: backtrace.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: op_model_athlon.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: nested_ept.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: nested_hap.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: hap.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: multi.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: common.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: mem_sharing.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: mem_paging.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: guest_walk.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: altp2m.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: p2m-pod.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: p2m-ept.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: p2m-pt.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: p2m.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: paging.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: vvmx.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: vmx.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: vmcs.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: realmode.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: vmcb.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: svm.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: nestedsvm.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: intr.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: vpt.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: vpic.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: vmsi.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: vlapic.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: viridian.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: vioapic.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: stdvga.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: save.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: rtc.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: quirks.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: pmtimer.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: nestedhvm.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: mtrr.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: monitor.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: irq.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: ioreq.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: intercept.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: i8254.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: hvm.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: hpet.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: emulate.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: dm.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: vmce.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: mce_intel.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: mce.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: vpmu_intel.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: vpmu.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: intel.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: amd.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: cpu_idle.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: suspend.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: xstate.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: traps.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: time.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: smp.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: setup.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: platform_hypercall.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: physdev.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: mm.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: microcode.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: machine_kexec.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: msi.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: i387.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: hypercall.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: debug.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: crash.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: compat.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: cpuid.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: xsm_core.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: pmstat.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: iommu_guest.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: pci_amd_iommu.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: iommu_map.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: vtd.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: pci.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: io.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: iommu.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: cpufreq.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: console.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: libelf-loader.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: llvm.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: tmem_control.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: tmem_xen.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: tmem.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: xenoprof.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: vm_event.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: sysctl.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: symbols.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: spinlock.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: schedule.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: sched_rt.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: sched_arinc653.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: page_alloc.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: multicall.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: memory.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: mem_access.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: kimage.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: kexec.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: kernel.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: guestcopy.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: grant_table.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: event_fifo.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: event_channel.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: domain.c:paging_cmpxchg_guest_entry
Unexecuted instantiation: domctl.c:paging_cmpxchg_guest_entry
329
330
/* Helper function that writes a pte in such a way that a concurrent read 
331
 * never sees a half-written entry that has _PAGE_PRESENT set */
332
static inline void safe_write_pte(l1_pgentry_t *p, l1_pgentry_t new)
333
0
{
334
0
    *p = new;
335
0
}
Unexecuted instantiation: misc-hypercalls.c:safe_write_pte
Unexecuted instantiation: iret.c:safe_write_pte
Unexecuted instantiation: emul-priv-op.c:safe_write_pte
Unexecuted instantiation: emul-inv-op.c:safe_write_pte
Unexecuted instantiation: emul-gate-op.c:safe_write_pte
Unexecuted instantiation: descriptor-tables.c:safe_write_pte
Unexecuted instantiation: callback.c:safe_write_pte
Unexecuted instantiation: backtrace.c:safe_write_pte
Unexecuted instantiation: op_model_athlon.c:safe_write_pte
Unexecuted instantiation: nested_ept.c:safe_write_pte
Unexecuted instantiation: nested_hap.c:safe_write_pte
Unexecuted instantiation: hap.c:safe_write_pte
Unexecuted instantiation: multi.c:safe_write_pte
Unexecuted instantiation: common.c:safe_write_pte
Unexecuted instantiation: mem_sharing.c:safe_write_pte
Unexecuted instantiation: mem_paging.c:safe_write_pte
Unexecuted instantiation: guest_walk.c:safe_write_pte
Unexecuted instantiation: altp2m.c:safe_write_pte
Unexecuted instantiation: p2m-pod.c:safe_write_pte
Unexecuted instantiation: p2m-ept.c:safe_write_pte
Unexecuted instantiation: p2m-pt.c:safe_write_pte
Unexecuted instantiation: p2m.c:safe_write_pte
Unexecuted instantiation: paging.c:safe_write_pte
Unexecuted instantiation: vvmx.c:safe_write_pte
Unexecuted instantiation: vmx.c:safe_write_pte
Unexecuted instantiation: vmcs.c:safe_write_pte
Unexecuted instantiation: realmode.c:safe_write_pte
Unexecuted instantiation: vmcb.c:safe_write_pte
Unexecuted instantiation: svm.c:safe_write_pte
Unexecuted instantiation: nestedsvm.c:safe_write_pte
Unexecuted instantiation: intr.c:safe_write_pte
Unexecuted instantiation: vpt.c:safe_write_pte
Unexecuted instantiation: vpic.c:safe_write_pte
Unexecuted instantiation: vmsi.c:safe_write_pte
Unexecuted instantiation: vlapic.c:safe_write_pte
Unexecuted instantiation: viridian.c:safe_write_pte
Unexecuted instantiation: vioapic.c:safe_write_pte
Unexecuted instantiation: stdvga.c:safe_write_pte
Unexecuted instantiation: save.c:safe_write_pte
Unexecuted instantiation: rtc.c:safe_write_pte
Unexecuted instantiation: quirks.c:safe_write_pte
Unexecuted instantiation: pmtimer.c:safe_write_pte
Unexecuted instantiation: nestedhvm.c:safe_write_pte
Unexecuted instantiation: mtrr.c:safe_write_pte
Unexecuted instantiation: monitor.c:safe_write_pte
Unexecuted instantiation: irq.c:safe_write_pte
Unexecuted instantiation: ioreq.c:safe_write_pte
Unexecuted instantiation: intercept.c:safe_write_pte
Unexecuted instantiation: i8254.c:safe_write_pte
Unexecuted instantiation: hvm.c:safe_write_pte
Unexecuted instantiation: hpet.c:safe_write_pte
Unexecuted instantiation: emulate.c:safe_write_pte
Unexecuted instantiation: dm.c:safe_write_pte
Unexecuted instantiation: vmce.c:safe_write_pte
Unexecuted instantiation: mce_intel.c:safe_write_pte
Unexecuted instantiation: mce.c:safe_write_pte
Unexecuted instantiation: vpmu_intel.c:safe_write_pte
Unexecuted instantiation: vpmu.c:safe_write_pte
Unexecuted instantiation: intel.c:safe_write_pte
Unexecuted instantiation: amd.c:safe_write_pte
Unexecuted instantiation: cpu_idle.c:safe_write_pte
Unexecuted instantiation: suspend.c:safe_write_pte
Unexecuted instantiation: xstate.c:safe_write_pte
Unexecuted instantiation: traps.c:safe_write_pte
Unexecuted instantiation: time.c:safe_write_pte
Unexecuted instantiation: smp.c:safe_write_pte
Unexecuted instantiation: setup.c:safe_write_pte
Unexecuted instantiation: platform_hypercall.c:safe_write_pte
Unexecuted instantiation: physdev.c:safe_write_pte
Unexecuted instantiation: mm.c:safe_write_pte
Unexecuted instantiation: microcode.c:safe_write_pte
Unexecuted instantiation: machine_kexec.c:safe_write_pte
Unexecuted instantiation: msi.c:safe_write_pte
Unexecuted instantiation: i387.c:safe_write_pte
Unexecuted instantiation: hypercall.c:safe_write_pte
Unexecuted instantiation: debug.c:safe_write_pte
Unexecuted instantiation: crash.c:safe_write_pte
Unexecuted instantiation: compat.c:safe_write_pte
Unexecuted instantiation: cpuid.c:safe_write_pte
Unexecuted instantiation: xsm_core.c:safe_write_pte
Unexecuted instantiation: pmstat.c:safe_write_pte
Unexecuted instantiation: iommu_guest.c:safe_write_pte
Unexecuted instantiation: pci_amd_iommu.c:safe_write_pte
Unexecuted instantiation: iommu_map.c:safe_write_pte
Unexecuted instantiation: vtd.c:safe_write_pte
Unexecuted instantiation: pci.c:safe_write_pte
Unexecuted instantiation: io.c:safe_write_pte
Unexecuted instantiation: ro-page-fault.c:safe_write_pte
Unexecuted instantiation: iommu.c:safe_write_pte
Unexecuted instantiation: cpufreq.c:safe_write_pte
Unexecuted instantiation: console.c:safe_write_pte
Unexecuted instantiation: libelf-loader.c:safe_write_pte
Unexecuted instantiation: llvm.c:safe_write_pte
Unexecuted instantiation: tmem_control.c:safe_write_pte
Unexecuted instantiation: tmem_xen.c:safe_write_pte
Unexecuted instantiation: tmem.c:safe_write_pte
Unexecuted instantiation: xenoprof.c:safe_write_pte
Unexecuted instantiation: vm_event.c:safe_write_pte
Unexecuted instantiation: sysctl.c:safe_write_pte
Unexecuted instantiation: symbols.c:safe_write_pte
Unexecuted instantiation: spinlock.c:safe_write_pte
Unexecuted instantiation: schedule.c:safe_write_pte
Unexecuted instantiation: sched_rt.c:safe_write_pte
Unexecuted instantiation: sched_arinc653.c:safe_write_pte
Unexecuted instantiation: page_alloc.c:safe_write_pte
Unexecuted instantiation: multicall.c:safe_write_pte
Unexecuted instantiation: memory.c:safe_write_pte
Unexecuted instantiation: mem_access.c:safe_write_pte
Unexecuted instantiation: kimage.c:safe_write_pte
Unexecuted instantiation: kexec.c:safe_write_pte
Unexecuted instantiation: kernel.c:safe_write_pte
Unexecuted instantiation: guestcopy.c:safe_write_pte
Unexecuted instantiation: grant_table.c:safe_write_pte
Unexecuted instantiation: event_fifo.c:safe_write_pte
Unexecuted instantiation: event_channel.c:safe_write_pte
Unexecuted instantiation: domain.c:safe_write_pte
Unexecuted instantiation: domctl.c:safe_write_pte
336
337
/* Atomically write a P2M entry and update the paging-assistance state 
338
 * appropriately. 
339
 * Arguments: the domain in question, the GFN whose mapping is being updated, 
340
 * a pointer to the entry to be written, the MFN in which the entry resides, 
341
 * the new contents of the entry, and the level in the p2m tree at which 
342
 * we are writing. */
343
struct p2m_domain;
344
345
void paging_write_p2m_entry(struct p2m_domain *p2m, unsigned long gfn,
346
                            l1_pgentry_t *p, l1_pgentry_t new,
347
                            unsigned int level);
348
349
/* Called from the guest to indicate that the a process is being
350
 * torn down and its pagetables will soon be discarded */
351
void pagetable_dying(struct domain *d, paddr_t gpa);
352
353
/* Print paging-assistance info to the console */
354
void paging_dump_domain_info(struct domain *d);
355
void paging_dump_vcpu_info(struct vcpu *v);
356
357
/* Set the pool of shadow pages to the required number of pages.
358
 * Input might be rounded up to at minimum amount of pages, plus
359
 * space for the p2m table.
360
 * Returns 0 for success, non-zero for failure. */
361
int paging_set_allocation(struct domain *d, unsigned int pages,
362
                          bool *preempted);
363
364
/* Is gfn within maxphysaddr for the domain? */
365
static inline bool gfn_valid(const struct domain *d, gfn_t gfn)
366
867k
{
367
867k
    return !(gfn_x(gfn) >> (d->arch.cpuid->extd.maxphysaddr - PAGE_SHIFT));
368
867k
}
Unexecuted instantiation: io.c:gfn_valid
Unexecuted instantiation: ro-page-fault.c:gfn_valid
Unexecuted instantiation: misc-hypercalls.c:gfn_valid
Unexecuted instantiation: iret.c:gfn_valid
Unexecuted instantiation: emul-priv-op.c:gfn_valid
Unexecuted instantiation: emul-inv-op.c:gfn_valid
Unexecuted instantiation: emul-gate-op.c:gfn_valid
Unexecuted instantiation: descriptor-tables.c:gfn_valid
Unexecuted instantiation: callback.c:gfn_valid
Unexecuted instantiation: backtrace.c:gfn_valid
Unexecuted instantiation: op_model_athlon.c:gfn_valid
Unexecuted instantiation: nested_ept.c:gfn_valid
Unexecuted instantiation: nested_hap.c:gfn_valid
Unexecuted instantiation: hap.c:gfn_valid
Unexecuted instantiation: multi.c:gfn_valid
Unexecuted instantiation: common.c:gfn_valid
Unexecuted instantiation: mem_sharing.c:gfn_valid
Unexecuted instantiation: mem_paging.c:gfn_valid
Unexecuted instantiation: guest_walk.c:gfn_valid
Unexecuted instantiation: altp2m.c:gfn_valid
Unexecuted instantiation: p2m-pod.c:gfn_valid
Unexecuted instantiation: p2m-ept.c:gfn_valid
Unexecuted instantiation: p2m-pt.c:gfn_valid
p2m.c:gfn_valid
Line
Count
Source
366
867k
{
367
867k
    return !(gfn_x(gfn) >> (d->arch.cpuid->extd.maxphysaddr - PAGE_SHIFT));
368
867k
}
Unexecuted instantiation: paging.c:gfn_valid
Unexecuted instantiation: vvmx.c:gfn_valid
Unexecuted instantiation: vmx.c:gfn_valid
Unexecuted instantiation: vmcs.c:gfn_valid
Unexecuted instantiation: realmode.c:gfn_valid
Unexecuted instantiation: vmcb.c:gfn_valid
Unexecuted instantiation: svm.c:gfn_valid
Unexecuted instantiation: nestedsvm.c:gfn_valid
Unexecuted instantiation: intr.c:gfn_valid
Unexecuted instantiation: vpt.c:gfn_valid
Unexecuted instantiation: vpic.c:gfn_valid
Unexecuted instantiation: vmsi.c:gfn_valid
Unexecuted instantiation: vlapic.c:gfn_valid
Unexecuted instantiation: viridian.c:gfn_valid
Unexecuted instantiation: vioapic.c:gfn_valid
Unexecuted instantiation: stdvga.c:gfn_valid
Unexecuted instantiation: save.c:gfn_valid
Unexecuted instantiation: rtc.c:gfn_valid
Unexecuted instantiation: quirks.c:gfn_valid
Unexecuted instantiation: pmtimer.c:gfn_valid
Unexecuted instantiation: nestedhvm.c:gfn_valid
Unexecuted instantiation: mtrr.c:gfn_valid
Unexecuted instantiation: monitor.c:gfn_valid
Unexecuted instantiation: irq.c:gfn_valid
Unexecuted instantiation: ioreq.c:gfn_valid
Unexecuted instantiation: intercept.c:gfn_valid
Unexecuted instantiation: i8254.c:gfn_valid
Unexecuted instantiation: hvm.c:gfn_valid
Unexecuted instantiation: hpet.c:gfn_valid
Unexecuted instantiation: emulate.c:gfn_valid
Unexecuted instantiation: dm.c:gfn_valid
Unexecuted instantiation: vmce.c:gfn_valid
Unexecuted instantiation: mce_intel.c:gfn_valid
Unexecuted instantiation: mce.c:gfn_valid
Unexecuted instantiation: vpmu_intel.c:gfn_valid
Unexecuted instantiation: vpmu.c:gfn_valid
Unexecuted instantiation: intel.c:gfn_valid
Unexecuted instantiation: amd.c:gfn_valid
Unexecuted instantiation: cpu_idle.c:gfn_valid
Unexecuted instantiation: suspend.c:gfn_valid
Unexecuted instantiation: xstate.c:gfn_valid
Unexecuted instantiation: traps.c:gfn_valid
Unexecuted instantiation: time.c:gfn_valid
Unexecuted instantiation: smp.c:gfn_valid
Unexecuted instantiation: setup.c:gfn_valid
Unexecuted instantiation: platform_hypercall.c:gfn_valid
Unexecuted instantiation: physdev.c:gfn_valid
Unexecuted instantiation: mm.c:gfn_valid
Unexecuted instantiation: microcode.c:gfn_valid
Unexecuted instantiation: machine_kexec.c:gfn_valid
Unexecuted instantiation: msi.c:gfn_valid
Unexecuted instantiation: i387.c:gfn_valid
Unexecuted instantiation: hypercall.c:gfn_valid
Unexecuted instantiation: debug.c:gfn_valid
Unexecuted instantiation: crash.c:gfn_valid
Unexecuted instantiation: compat.c:gfn_valid
Unexecuted instantiation: cpuid.c:gfn_valid
Unexecuted instantiation: xsm_core.c:gfn_valid
Unexecuted instantiation: pmstat.c:gfn_valid
Unexecuted instantiation: iommu_guest.c:gfn_valid
Unexecuted instantiation: pci_amd_iommu.c:gfn_valid
Unexecuted instantiation: iommu_map.c:gfn_valid
Unexecuted instantiation: vtd.c:gfn_valid
Unexecuted instantiation: pci.c:gfn_valid
Unexecuted instantiation: iommu.c:gfn_valid
Unexecuted instantiation: cpufreq.c:gfn_valid
Unexecuted instantiation: console.c:gfn_valid
Unexecuted instantiation: libelf-loader.c:gfn_valid
Unexecuted instantiation: llvm.c:gfn_valid
Unexecuted instantiation: tmem_control.c:gfn_valid
Unexecuted instantiation: tmem_xen.c:gfn_valid
Unexecuted instantiation: tmem.c:gfn_valid
Unexecuted instantiation: xenoprof.c:gfn_valid
Unexecuted instantiation: vm_event.c:gfn_valid
Unexecuted instantiation: sysctl.c:gfn_valid
Unexecuted instantiation: symbols.c:gfn_valid
Unexecuted instantiation: spinlock.c:gfn_valid
Unexecuted instantiation: schedule.c:gfn_valid
Unexecuted instantiation: sched_rt.c:gfn_valid
Unexecuted instantiation: sched_arinc653.c:gfn_valid
Unexecuted instantiation: page_alloc.c:gfn_valid
Unexecuted instantiation: multicall.c:gfn_valid
Unexecuted instantiation: memory.c:gfn_valid
Unexecuted instantiation: mem_access.c:gfn_valid
Unexecuted instantiation: kimage.c:gfn_valid
Unexecuted instantiation: kexec.c:gfn_valid
Unexecuted instantiation: kernel.c:gfn_valid
Unexecuted instantiation: guestcopy.c:gfn_valid
Unexecuted instantiation: grant_table.c:gfn_valid
Unexecuted instantiation: event_fifo.c:gfn_valid
Unexecuted instantiation: event_channel.c:gfn_valid
Unexecuted instantiation: domain.c:gfn_valid
Unexecuted instantiation: domctl.c:gfn_valid
369
370
/* Maxphysaddr supportable by the paging infrastructure. */
371
static inline unsigned int paging_max_paddr_bits(const struct domain *d)
372
1
{
373
1
    unsigned int bits = paging_mode_hap(d) ? hap_paddr_bits : paddr_bits;
374
1
375
1
    if ( !IS_ENABLED(BIGMEM) && paging_mode_shadow(d) && !is_pv_domain(d) )
376
0
    {
377
0
        /* Shadowed superpages store GFNs in 32-bit page_info fields. */
378
0
        bits = min(bits, 32U + PAGE_SHIFT);
379
0
    }
380
1
381
1
    return bits;
382
1
}
Unexecuted instantiation: domain.c:paging_max_paddr_bits
Unexecuted instantiation: event_channel.c:paging_max_paddr_bits
Unexecuted instantiation: event_fifo.c:paging_max_paddr_bits
Unexecuted instantiation: grant_table.c:paging_max_paddr_bits
Unexecuted instantiation: guestcopy.c:paging_max_paddr_bits
Unexecuted instantiation: kernel.c:paging_max_paddr_bits
Unexecuted instantiation: kexec.c:paging_max_paddr_bits
Unexecuted instantiation: kimage.c:paging_max_paddr_bits
Unexecuted instantiation: mem_access.c:paging_max_paddr_bits
Unexecuted instantiation: memory.c:paging_max_paddr_bits
Unexecuted instantiation: multicall.c:paging_max_paddr_bits
Unexecuted instantiation: page_alloc.c:paging_max_paddr_bits
Unexecuted instantiation: sched_arinc653.c:paging_max_paddr_bits
Unexecuted instantiation: sched_rt.c:paging_max_paddr_bits
Unexecuted instantiation: schedule.c:paging_max_paddr_bits
Unexecuted instantiation: spinlock.c:paging_max_paddr_bits
Unexecuted instantiation: symbols.c:paging_max_paddr_bits
Unexecuted instantiation: sysctl.c:paging_max_paddr_bits
Unexecuted instantiation: vm_event.c:paging_max_paddr_bits
Unexecuted instantiation: xenoprof.c:paging_max_paddr_bits
Unexecuted instantiation: tmem.c:paging_max_paddr_bits
Unexecuted instantiation: tmem_xen.c:paging_max_paddr_bits
Unexecuted instantiation: tmem_control.c:paging_max_paddr_bits
Unexecuted instantiation: llvm.c:paging_max_paddr_bits
Unexecuted instantiation: libelf-loader.c:paging_max_paddr_bits
Unexecuted instantiation: console.c:paging_max_paddr_bits
Unexecuted instantiation: cpufreq.c:paging_max_paddr_bits
Unexecuted instantiation: iommu.c:paging_max_paddr_bits
Unexecuted instantiation: io.c:paging_max_paddr_bits
Unexecuted instantiation: pci.c:paging_max_paddr_bits
Unexecuted instantiation: vtd.c:paging_max_paddr_bits
Unexecuted instantiation: iommu_map.c:paging_max_paddr_bits
Unexecuted instantiation: pci_amd_iommu.c:paging_max_paddr_bits
Unexecuted instantiation: iommu_guest.c:paging_max_paddr_bits
Unexecuted instantiation: pmstat.c:paging_max_paddr_bits
Unexecuted instantiation: xsm_core.c:paging_max_paddr_bits
cpuid.c:paging_max_paddr_bits
Line
Count
Source
372
1
{
373
1
    unsigned int bits = paging_mode_hap(d) ? hap_paddr_bits : paddr_bits;
374
1
375
1
    if ( !IS_ENABLED(BIGMEM) && paging_mode_shadow(d) && !is_pv_domain(d) )
376
0
    {
377
0
        /* Shadowed superpages store GFNs in 32-bit page_info fields. */
378
0
        bits = min(bits, 32U + PAGE_SHIFT);
379
0
    }
380
1
381
1
    return bits;
382
1
}
Unexecuted instantiation: compat.c:paging_max_paddr_bits
Unexecuted instantiation: crash.c:paging_max_paddr_bits
Unexecuted instantiation: debug.c:paging_max_paddr_bits
Unexecuted instantiation: hypercall.c:paging_max_paddr_bits
Unexecuted instantiation: i387.c:paging_max_paddr_bits
Unexecuted instantiation: msi.c:paging_max_paddr_bits
Unexecuted instantiation: machine_kexec.c:paging_max_paddr_bits
Unexecuted instantiation: microcode.c:paging_max_paddr_bits
Unexecuted instantiation: mm.c:paging_max_paddr_bits
Unexecuted instantiation: physdev.c:paging_max_paddr_bits
Unexecuted instantiation: platform_hypercall.c:paging_max_paddr_bits
Unexecuted instantiation: setup.c:paging_max_paddr_bits
Unexecuted instantiation: smp.c:paging_max_paddr_bits
Unexecuted instantiation: time.c:paging_max_paddr_bits
Unexecuted instantiation: traps.c:paging_max_paddr_bits
Unexecuted instantiation: xstate.c:paging_max_paddr_bits
Unexecuted instantiation: suspend.c:paging_max_paddr_bits
Unexecuted instantiation: cpu_idle.c:paging_max_paddr_bits
Unexecuted instantiation: amd.c:paging_max_paddr_bits
Unexecuted instantiation: intel.c:paging_max_paddr_bits
Unexecuted instantiation: vpmu.c:paging_max_paddr_bits
Unexecuted instantiation: vpmu_intel.c:paging_max_paddr_bits
Unexecuted instantiation: mce.c:paging_max_paddr_bits
Unexecuted instantiation: mce_intel.c:paging_max_paddr_bits
Unexecuted instantiation: vmce.c:paging_max_paddr_bits
Unexecuted instantiation: dm.c:paging_max_paddr_bits
Unexecuted instantiation: emulate.c:paging_max_paddr_bits
Unexecuted instantiation: hpet.c:paging_max_paddr_bits
Unexecuted instantiation: hvm.c:paging_max_paddr_bits
Unexecuted instantiation: i8254.c:paging_max_paddr_bits
Unexecuted instantiation: intercept.c:paging_max_paddr_bits
Unexecuted instantiation: ioreq.c:paging_max_paddr_bits
Unexecuted instantiation: irq.c:paging_max_paddr_bits
Unexecuted instantiation: monitor.c:paging_max_paddr_bits
Unexecuted instantiation: mtrr.c:paging_max_paddr_bits
Unexecuted instantiation: nestedhvm.c:paging_max_paddr_bits
Unexecuted instantiation: pmtimer.c:paging_max_paddr_bits
Unexecuted instantiation: quirks.c:paging_max_paddr_bits
Unexecuted instantiation: rtc.c:paging_max_paddr_bits
Unexecuted instantiation: save.c:paging_max_paddr_bits
Unexecuted instantiation: stdvga.c:paging_max_paddr_bits
Unexecuted instantiation: vioapic.c:paging_max_paddr_bits
Unexecuted instantiation: viridian.c:paging_max_paddr_bits
Unexecuted instantiation: vlapic.c:paging_max_paddr_bits
Unexecuted instantiation: vmsi.c:paging_max_paddr_bits
Unexecuted instantiation: vpic.c:paging_max_paddr_bits
Unexecuted instantiation: vpt.c:paging_max_paddr_bits
Unexecuted instantiation: intr.c:paging_max_paddr_bits
Unexecuted instantiation: nestedsvm.c:paging_max_paddr_bits
Unexecuted instantiation: svm.c:paging_max_paddr_bits
Unexecuted instantiation: vmcb.c:paging_max_paddr_bits
Unexecuted instantiation: realmode.c:paging_max_paddr_bits
Unexecuted instantiation: vmcs.c:paging_max_paddr_bits
Unexecuted instantiation: vmx.c:paging_max_paddr_bits
Unexecuted instantiation: vvmx.c:paging_max_paddr_bits
Unexecuted instantiation: paging.c:paging_max_paddr_bits
Unexecuted instantiation: p2m.c:paging_max_paddr_bits
Unexecuted instantiation: p2m-pt.c:paging_max_paddr_bits
Unexecuted instantiation: p2m-ept.c:paging_max_paddr_bits
Unexecuted instantiation: p2m-pod.c:paging_max_paddr_bits
Unexecuted instantiation: altp2m.c:paging_max_paddr_bits
Unexecuted instantiation: guest_walk.c:paging_max_paddr_bits
Unexecuted instantiation: mem_paging.c:paging_max_paddr_bits
Unexecuted instantiation: mem_sharing.c:paging_max_paddr_bits
Unexecuted instantiation: common.c:paging_max_paddr_bits
Unexecuted instantiation: multi.c:paging_max_paddr_bits
Unexecuted instantiation: hap.c:paging_max_paddr_bits
Unexecuted instantiation: nested_hap.c:paging_max_paddr_bits
Unexecuted instantiation: nested_ept.c:paging_max_paddr_bits
Unexecuted instantiation: op_model_athlon.c:paging_max_paddr_bits
Unexecuted instantiation: backtrace.c:paging_max_paddr_bits
Unexecuted instantiation: callback.c:paging_max_paddr_bits
Unexecuted instantiation: descriptor-tables.c:paging_max_paddr_bits
Unexecuted instantiation: emul-gate-op.c:paging_max_paddr_bits
Unexecuted instantiation: emul-inv-op.c:paging_max_paddr_bits
Unexecuted instantiation: emul-priv-op.c:paging_max_paddr_bits
Unexecuted instantiation: iret.c:paging_max_paddr_bits
Unexecuted instantiation: misc-hypercalls.c:paging_max_paddr_bits
Unexecuted instantiation: ro-page-fault.c:paging_max_paddr_bits
Unexecuted instantiation: domctl.c:paging_max_paddr_bits
383
384
#endif /* XEN_PAGING_H */
385
386
/*
387
 * Local variables:
388
 * mode: C
389
 * c-file-style: "BSD"
390
 * c-basic-offset: 4
391
 * indent-tabs-mode: nil
392
 * End:
393
 */