iPXE
memory.h
Go to the documentation of this file.
1/* SPDX-License-Identifier: MIT */
2/******************************************************************************
3 * memory.h
4 *
5 * Memory reservation and information.
6 *
7 * Copyright (c) 2005, Keir Fraser <keir@xensource.com>
8 */
9
10#ifndef __XEN_PUBLIC_MEMORY_H__
11#define __XEN_PUBLIC_MEMORY_H__
12
14FILE_SECBOOT ( PERMITTED );
15
16#include "xen.h"
17#include "physdev.h"
18
19/*
20 * Increase or decrease the specified domain's memory reservation. Returns the
21 * number of extents successfully allocated or freed.
22 * arg == addr of struct xen_memory_reservation.
23 */
24#define XENMEM_increase_reservation 0
25#define XENMEM_decrease_reservation 1
26#define XENMEM_populate_physmap 6
27
28#if __XEN_INTERFACE_VERSION__ >= 0x00030209
29/*
30 * Maximum # bits addressable by the user of the allocated region (e.g., I/O
31 * devices often have a 32-bit limitation even in 64-bit systems). If zero
32 * then the user has no addressing restriction. This field is not used by
33 * XENMEM_decrease_reservation.
34 */
35#define XENMEMF_address_bits(x) (x)
36#define XENMEMF_get_address_bits(x) ((x) & 0xffu)
37/* NUMA node to allocate from. */
38#define XENMEMF_node(x) (((x) + 1) << 8)
39#define XENMEMF_get_node(x) ((((x) >> 8) - 1) & 0xffu)
40/* Flag to populate physmap with populate-on-demand entries */
41#define XENMEMF_populate_on_demand (1<<16)
42/* Flag to request allocation only from the node specified */
43#define XENMEMF_exact_node_request (1<<17)
44#define XENMEMF_exact_node(n) (XENMEMF_node(n) | XENMEMF_exact_node_request)
45/* Flag to indicate the node specified is virtual node */
46#define XENMEMF_vnode (1<<18)
47#endif
48
50
51 /*
52 * XENMEM_increase_reservation:
53 * OUT: MFN (*not* GMFN) bases of extents that were allocated
54 * XENMEM_decrease_reservation:
55 * IN: GMFN bases of extents to free
56 * XENMEM_populate_physmap:
57 * IN: GPFN bases of extents to populate with memory
58 * OUT: GMFN bases of extents that were allocated
59 * (NB. This command also updates the mach_to_phys translation table)
60 * XENMEM_claim_pages:
61 * IN: must be zero
62 */
64
65 /* Number of extents, and size/alignment of each (2^extent_order pages). */
67 unsigned int extent_order;
68
69#if __XEN_INTERFACE_VERSION__ >= 0x00030209
70 /* XENMEMF flags. */
71 unsigned int mem_flags;
72#else
73 unsigned int address_bits;
74#endif
75
76 /*
77 * Domain whose reservation is being changed.
78 * Unprivileged domains can specify only DOMID_SELF.
79 */
81};
84
85/*
86 * An atomic exchange of memory pages. If return code is zero then
87 * @out.extent_list provides GMFNs of the newly-allocated memory.
88 * Returns zero on complete success, otherwise a negative error code.
89 * On complete success then always @nr_exchanged == @in.nr_extents.
90 * On partial success @nr_exchanged indicates how much work was done.
91 *
92 * Note that only PV guests can use this operation.
93 */
94#define XENMEM_exchange 11
96 /*
97 * [IN] Details of memory extents to be exchanged (GMFN bases).
98 * Note that @in.address_bits is ignored and unused.
99 */
101
102 /*
103 * [IN/OUT] Details of new memory extents.
104 * We require that:
105 * 1. @in.domid == @out.domid
106 * 2. @in.nr_extents << @in.extent_order ==
107 * @out.nr_extents << @out.extent_order
108 * 3. @in.extent_start and @out.extent_start lists must not overlap
109 * 4. @out.extent_start lists GPFN bases to be populated
110 * 5. @out.extent_start is overwritten with allocated GMFN bases
111 */
113
114 /*
115 * [OUT] Number of input extents that were successfully exchanged:
116 * 1. The first @nr_exchanged input extents were successfully
117 * deallocated.
118 * 2. The corresponding first entries in the output extent list correctly
119 * indicate the GMFNs that were successfully exchanged.
120 * 3. All other input and output extents are untouched.
121 * 4. If not all input exents are exchanged then the return code of this
122 * command will be non-zero.
123 * 5. THIS FIELD MUST BE INITIALISED TO ZERO BY THE CALLER!
124 */
126};
129
130/*
131 * Returns the maximum machine frame number of mapped RAM in this system.
132 * This command always succeeds (it never returns an error code).
133 * arg == NULL.
134 */
135#define XENMEM_maximum_ram_page 2
136
138 /* [IN] Domain information is being queried for. */
140};
141
142/*
143 * Returns the current or maximum memory reservation, in pages, of the
144 * specified domain (may be DOMID_SELF). Returns -ve errcode on failure.
145 * arg == addr of struct xen_memory_domain.
146 */
147#define XENMEM_current_reservation 3
148#define XENMEM_maximum_reservation 4
149
150/*
151 * Returns the maximum GFN in use by the specified domain (may be DOMID_SELF).
152 * Returns -ve errcode on failure.
153 * arg == addr of struct xen_memory_domain.
154 */
155#define XENMEM_maximum_gpfn 14
156
157/*
158 * Returns a list of MFN bases of 2MB extents comprising the machine_to_phys
159 * mapping table. Architectures which do not have a m2p table do not implement
160 * this command.
161 * arg == addr of xen_machphys_mfn_list_t.
162 */
163#define XENMEM_machphys_mfn_list 5
165 /*
166 * Size of the 'extent_start' array. Fewer entries will be filled if the
167 * machphys table is smaller than max_extents * 2MB.
168 */
169 unsigned int max_extents;
170
171 /*
172 * Pointer to buffer to fill with list of extent starts. If there are
173 * any large discontiguities in the machine address space, 2MB gaps in
174 * the machphys table will be represented by an MFN base of zero.
175 */
177
178 /*
179 * Number of extents written to the above array. This will be smaller
180 * than 'max_extents' if the machphys table is smaller than max_e * 2MB.
181 */
182 unsigned int nr_extents;
183};
186
187/*
188 * For a compat caller, this is identical to XENMEM_machphys_mfn_list.
189 *
190 * For a non compat caller, this functions similarly to
191 * XENMEM_machphys_mfn_list, but returns the mfns making up the compatibility
192 * m2p table.
193 */
194#define XENMEM_machphys_compat_mfn_list 25
195
196/*
197 * Returns the location in virtual address space of the machine_to_phys
198 * mapping table. Architectures which do not have a m2p table, or which do not
199 * map it by default into guest address space, do not implement this command.
200 * arg == addr of xen_machphys_mapping_t.
201 */
202#define XENMEM_machphys_mapping 12
204 xen_ulong_t v_start, v_end; /* Start and end virtual addresses. */
205 xen_ulong_t max_mfn; /* Maximum MFN that can be looked up. */
206};
209
210/* Source mapping space. */
211/* ` enum phys_map_space { */
212#define XENMAPSPACE_shared_info 0 /* shared info page */
213#define XENMAPSPACE_grant_table 1 /* grant table page */
214#define XENMAPSPACE_gmfn 2 /* GMFN */
215#define XENMAPSPACE_gmfn_range 3 /* GMFN range, XENMEM_add_to_physmap only. */
216#define XENMAPSPACE_gmfn_foreign 4 /* GMFN from another dom,
217 * XENMEM_add_to_physmap_batch only. */
218#define XENMAPSPACE_dev_mmio 5 /* device mmio region
219 ARM only; the region is mapped in
220 Stage-2 using the Normal Memory
221 Inner/Outer Write-Back Cacheable
222 memory attribute. */
223/* ` } */
224
226 * Sets the GPFN at which a particular page appears in the specified guest's
227 * physical address space (translated guests only).
228 * arg == addr of xen_add_to_physmap_t.
229 */
230#define XENMEM_add_to_physmap 7
232 /* Which domain to change the mapping for. */
234
235 /* Number of pages to go through for gmfn_range */
237
238 unsigned int space; /* => enum phys_map_space */
239
240#define XENMAPIDX_grant_table_status 0x80000000U
242 /* Index into space being mapped. */
245 /* GPFN in domid where the source mapping page should appear. */
250
251/* A batched version of add_to_physmap. */
252#define XENMEM_add_to_physmap_batch 23
254 /* IN */
255 /* Which domain to change the mapping for. */
257 uint16_t space; /* => enum phys_map_space */
259 /* Number of pages to go through */
261
262#if __XEN_INTERFACE_VERSION__ < 0x00040700
263 domid_t foreign_domid; /* IFF gmfn_foreign. Should be 0 for other spaces. */
264#else
265 union xen_add_to_physmap_batch_extra {
266 domid_t foreign_domid; /* gmfn_foreign */
267 uint16_t res0; /* All the other spaces. Should be 0 */
268 } u;
269#endif
271 /* Indexes into space being mapped. */
273
274 /* GPFN in domid where the source mapping page should appear. */
276
277 /* OUT */
279 /* Per index error code. */
280 XEN_GUEST_HANDLE(int) errs;
284
285#if __XEN_INTERFACE_VERSION__ < 0x00040400
286#define XENMEM_add_to_physmap_range XENMEM_add_to_physmap_batch
287#define xen_add_to_physmap_range xen_add_to_physmap_batch
290#endif
291
293 * Unmaps the page appearing at a particular GPFN from the specified guest's
294 * physical address space (translated guests only).
295 * arg == addr of xen_remove_from_physmap_t.
296 */
297#define XENMEM_remove_from_physmap 15
299 /* Which domain to change the mapping for. */
302 /* GPFN of the current mapping of the page. */
304};
307
308/*** REMOVED ***/
309/*#define XENMEM_translate_gpfn_list 8*/
310
312 * Returns the pseudo-physical memory map as it was when the domain
313 * was started (specified by XENMEM_set_memory_map).
314 * arg == addr of xen_memory_map_t.
315 */
316#define XENMEM_memory_map 9
317struct xen_memory_map {
318 /*
319 * On call the number of entries which can be stored in buffer. On
320 * return the number of entries which have been stored in
321 * buffer.
322 */
323 unsigned int nr_entries;
325 /*
326 * Entries in the buffer are in the same format as returned by the
327 * BIOS INT 0x15 EAX=0xE820 call.
328 */
330};
331typedef struct xen_memory_map xen_memory_map_t;
333
334/*
335 * Returns the real physical memory map. Passes the same structure as
336 * XENMEM_memory_map.
337 * Specifying buffer as NULL will return the number of entries required
338 * to store the complete memory map.
339 * arg == addr of xen_memory_map_t.
340 */
341#define XENMEM_machine_memory_map 10
342
344 * Set the pseudo-physical memory map of a domain, as returned by
345 * XENMEM_memory_map.
346 * arg == addr of xen_foreign_memory_map_t.
347 */
348#define XENMEM_set_memory_map 13
356#define XENMEM_set_pod_target 16
357#define XENMEM_get_pod_target 17
359 /* IN */
361 /* OUT */
365 /* IN */
367};
368typedef struct xen_pod_target xen_pod_target_t;
369
370#if defined(__XEN__) || defined(__XEN_TOOLS__)
371
372#ifndef uint64_aligned_t
373#define uint64_aligned_t uint64_t
374#endif
375
376/*
377 * Get the number of MFNs saved through memory sharing.
378 * The call never fails.
379 */
380#define XENMEM_get_sharing_freed_pages 18
381#define XENMEM_get_sharing_shared_pages 19
382
383#define XENMEM_paging_op 20
384#define XENMEM_paging_op_nominate 0
385#define XENMEM_paging_op_evict 1
386#define XENMEM_paging_op_prep 2
387
388struct xen_mem_paging_op {
389 uint8_t op; /* XENMEM_paging_op_* */
390 domid_t domain;
391
392 /* IN: (XENMEM_paging_op_prep) buffer to immediately fill page from */
393 XEN_GUEST_HANDLE_64(const_uint8) buffer;
394 /* IN: gfn of page being operated on */
395 uint64_aligned_t gfn;
396};
397typedef struct xen_mem_paging_op xen_mem_paging_op_t;
398DEFINE_XEN_GUEST_HANDLE(xen_mem_paging_op_t);
399
400#define XENMEM_access_op 21
401#define XENMEM_access_op_set_access 0
402#define XENMEM_access_op_get_access 1
403/*
404 * XENMEM_access_op_enable_emulate and XENMEM_access_op_disable_emulate are
405 * currently unused, but since they have been in use please do not reuse them.
406 *
407 * #define XENMEM_access_op_enable_emulate 2
408 * #define XENMEM_access_op_disable_emulate 3
409 */
410#define XENMEM_access_op_set_access_multi 4
411
412typedef enum {
413 XENMEM_access_n,
414 XENMEM_access_r,
415 XENMEM_access_w,
416 XENMEM_access_rw,
417 XENMEM_access_x,
418 XENMEM_access_rx,
419 XENMEM_access_wx,
420 XENMEM_access_rwx,
421 /*
422 * Page starts off as r-x, but automatically
423 * change to r-w on a write
424 */
425 XENMEM_access_rx2rw,
426 /*
427 * Log access: starts off as n, automatically
428 * goes to rwx, generating an event without
429 * pausing the vcpu
430 */
431 XENMEM_access_n2rwx,
432
433 /*
434 * Same as XENMEM_access_r, but on processors with
435 * the TERTIARY_EXEC_EPT_PAGING_WRITE support,
436 * CPU-initiated page-table walks can still
437 * write to it (e.g., update A/D bits)
438 */
439 XENMEM_access_r_pw,
440
441 /* Take the domain default */
442 XENMEM_access_default
443} xenmem_access_t;
444
445struct xen_mem_access_op {
446 /* XENMEM_access_op_* */
447 uint8_t op;
448 /* xenmem_access_t */
449 uint8_t access;
451 /*
452 * Number of pages for set op (or size of pfn_list for
453 * XENMEM_access_op_set_access_multi)
454 * Ignored on setting default access and other ops
455 */
456 uint32_t nr;
457 /*
458 * First pfn for set op
459 * pfn for get op
460 * ~0ull is used to set and get the default access for pages
461 */
462 uint64_aligned_t pfn;
463 /*
464 * List of pfns to set access for
465 * Used only with XENMEM_access_op_set_access_multi
466 */
467 XEN_GUEST_HANDLE(const_uint64) pfn_list;
468 /*
469 * Corresponding list of access settings for pfn_list
470 * Used only with XENMEM_access_op_set_access_multi
471 */
472 XEN_GUEST_HANDLE(const_uint8) access_list;
473};
474typedef struct xen_mem_access_op xen_mem_access_op_t;
475DEFINE_XEN_GUEST_HANDLE(xen_mem_access_op_t);
476
477#define XENMEM_sharing_op 22
478#define XENMEM_sharing_op_nominate_gfn 0
479#define XENMEM_sharing_op_nominate_gref 1
480#define XENMEM_sharing_op_share 2
481#define XENMEM_sharing_op_debug_gfn 3
482#define XENMEM_sharing_op_debug_mfn 4
483#define XENMEM_sharing_op_debug_gref 5
484#define XENMEM_sharing_op_add_physmap 6
485#define XENMEM_sharing_op_audit 7
486#define XENMEM_sharing_op_range_share 8
487#define XENMEM_sharing_op_fork 9
488#define XENMEM_sharing_op_fork_reset 10
489
490#define XENMEM_SHARING_OP_S_HANDLE_INVALID (-10)
491#define XENMEM_SHARING_OP_C_HANDLE_INVALID (-9)
492
493/* The following allows sharing of grant refs. This is useful
494 * for sharing utilities sitting as "filters" in IO backends
495 * (e.g. memshr + blktap(2)). The IO backend is only exposed
496 * to grant references, and this allows sharing of the grefs */
497#define XENMEM_SHARING_OP_FIELD_IS_GREF_FLAG (xen_mk_ullong(1) << 62)
498
499#define XENMEM_SHARING_OP_FIELD_MAKE_GREF(field, val) \
500 (field) = (XENMEM_SHARING_OP_FIELD_IS_GREF_FLAG | (val))
501#define XENMEM_SHARING_OP_FIELD_IS_GREF(field) \
502 ((field) & XENMEM_SHARING_OP_FIELD_IS_GREF_FLAG)
503#define XENMEM_SHARING_OP_FIELD_GET_GREF(field) \
504 ((field) & (~XENMEM_SHARING_OP_FIELD_IS_GREF_FLAG))
505
506struct xen_mem_sharing_op {
507 uint8_t op; /* XENMEM_sharing_op_* */
508 domid_t domain;
509
510 union {
511 struct mem_sharing_op_nominate { /* OP_NOMINATE_xxx */
512 union {
513 uint64_aligned_t gfn; /* IN: gfn to nominate */
514 uint32_t grant_ref; /* IN: grant ref to nominate */
515 } u;
516 uint64_aligned_t handle; /* OUT: the handle */
517 } nominate;
518 struct mem_sharing_op_share { /* OP_SHARE/ADD_PHYSMAP */
519 uint64_aligned_t source_gfn; /* IN: the gfn of the source page */
520 uint64_aligned_t source_handle; /* IN: handle to the source page */
521 uint64_aligned_t client_gfn; /* IN: the client gfn */
522 uint64_aligned_t client_handle; /* IN: handle to the client page */
523 domid_t client_domain; /* IN: the client domain id */
524 } share;
525 struct mem_sharing_op_range { /* OP_RANGE_SHARE */
526 uint64_aligned_t first_gfn; /* IN: the first gfn */
527 uint64_aligned_t last_gfn; /* IN: the last gfn */
528 uint64_aligned_t opaque; /* Must be set to 0 */
529 domid_t client_domain; /* IN: the client domain id */
530 uint16_t _pad[3]; /* Must be set to 0 */
531 } range;
532 struct mem_sharing_op_debug { /* OP_DEBUG_xxx */
533 union {
534 uint64_aligned_t gfn; /* IN: gfn to debug */
535 uint64_aligned_t mfn; /* IN: mfn to debug */
536 uint32_t gref; /* IN: gref to debug */
537 } u;
538 } debug;
539 struct mem_sharing_op_fork { /* OP_FORK{,_RESET} */
540 domid_t parent_domain; /* IN: parent's domain id */
541/* Only makes sense for short-lived forks */
542#define XENMEM_FORK_WITH_IOMMU_ALLOWED (1u << 0)
543/* Only makes sense for short-lived forks */
544#define XENMEM_FORK_BLOCK_INTERRUPTS (1u << 1)
545#define XENMEM_FORK_RESET_STATE (1u << 2)
546#define XENMEM_FORK_RESET_MEMORY (1u << 3)
547 uint16_t flags; /* IN: optional settings */
548 uint32_t pad; /* Must be set to 0 */
549 } fork;
550 } u;
551};
552typedef struct xen_mem_sharing_op xen_mem_sharing_op_t;
553DEFINE_XEN_GUEST_HANDLE(xen_mem_sharing_op_t);
554
555/*
556 * Attempt to stake a claim for a domain on a quantity of pages
557 * of system RAM, but _not_ assign specific pageframes. Only
558 * arithmetic is performed so the hypercall is very fast and need
559 * not be preemptible, thus sidestepping time-of-check-time-of-use
560 * races for memory allocation. Returns 0 if the hypervisor page
561 * allocator has atomically and successfully claimed the requested
562 * number of pages, else non-zero.
563 *
564 * Any domain may have only one active claim. When sufficient memory
565 * has been allocated to resolve the claim, the claim silently expires.
566 * Claiming zero pages effectively resets any outstanding claim and
567 * is always successful.
568 *
569 * Note that a valid claim may be staked even after memory has been
570 * allocated for a domain. In this case, the claim is not incremental,
571 * i.e. if the domain's total page count is 3, and a claim is staked
572 * for 10, only 7 additional pages are claimed.
573 *
574 * Caller must be privileged or the hypercall fails.
575 */
576#define XENMEM_claim_pages 24
577
578/*
579 * XENMEM_claim_pages flags - the are no flags at this time.
580 * The zero value is appropriate.
581 */
582
583/*
584 * With some legacy devices, certain guest-physical addresses cannot safely
585 * be used for other purposes, e.g. to map guest RAM. This hypercall
586 * enumerates those regions so the toolstack can avoid using them.
587 */
588#define XENMEM_reserved_device_memory_map 27
589struct xen_reserved_device_memory {
590 xen_pfn_t start_pfn;
591 xen_ulong_t nr_pages;
592};
593typedef struct xen_reserved_device_memory xen_reserved_device_memory_t;
594DEFINE_XEN_GUEST_HANDLE(xen_reserved_device_memory_t);
595
596struct xen_reserved_device_memory_map {
597#define XENMEM_RDM_ALL 1 /* Request all regions (ignore dev union). */
598 /* IN */
600 /*
601 * IN/OUT
602 *
603 * Gets set to the required number of entries when too low,
604 * signaled by error code -ERANGE.
605 */
606 unsigned int nr_entries;
607 /* OUT */
608 XEN_GUEST_HANDLE(xen_reserved_device_memory_t) buffer;
609 /* IN */
610 union {
612 } dev;
613};
614typedef struct xen_reserved_device_memory_map xen_reserved_device_memory_map_t;
615DEFINE_XEN_GUEST_HANDLE(xen_reserved_device_memory_map_t);
616
617#endif /* defined(__XEN__) || defined(__XEN_TOOLS__) */
620 * Get the pages for a particular guest resource, so that they can be
621 * mapped directly by a tools domain.
622 */
623#define XENMEM_acquire_resource 28
625 /* IN - The domain whose resource is to be mapped */
627 /* IN - the type of resource */
629
630#define XENMEM_resource_ioreq_server 0
631#define XENMEM_resource_grant_table 1
632#define XENMEM_resource_vmtrace_buf 2
633
634 /*
635 * IN - a type-specific resource identifier, which must be zero
636 * unless stated otherwise.
637 *
638 * type == XENMEM_resource_ioreq_server -> id == ioreq server id
639 * type == XENMEM_resource_grant_table -> id defined below
640 */
641 uint32_t id;
642
643#define XENMEM_resource_grant_table_id_shared 0
644#define XENMEM_resource_grant_table_id_status 1
645
646 /*
647 * IN/OUT
648 *
649 * As an IN parameter number of frames of the resource to be mapped.
650 * This value may be updated over the course of the operation.
651 *
652 * When frame_list is NULL and nr_frames is 0, this is interpreted as a
653 * request for the size of the resource, which shall be returned in the
654 * nr_frames field.
655 *
656 * The size of a resource will never be zero, but a nonzero result doesn't
657 * guarantee that a subsequent mapping request will be successful. There
658 * are further type/id specific constraints which may change between the
659 * two calls.
660 */
662 /*
663 * Padding field, must be zero on input.
664 * In a previous version this was an output field with the lowest bit
665 * named XENMEM_rsrc_acq_caller_owned. Future versions of this interface
666 * will not reuse this bit as an output with the field being zero on
667 * input.
668 */
670 /*
671 * IN - the index of the initial frame to be mapped. This parameter
672 * is ignored if nr_frames is 0. This value may be updated
673 * over the course of the operation.
674 */
676
677#define XENMEM_resource_ioreq_server_frame_bufioreq 0
678#define XENMEM_resource_ioreq_server_frame_ioreq(n) (1 + (n))
679
680 /*
681 * IN/OUT - If the tools domain is PV then, upon return, frame_list
682 * will be populated with the MFNs of the resource.
683 * If the tools domain is HVM then it is expected that, on
684 * entry, frame_list will be populated with a list of GFNs
685 * that will be mapped to the MFNs of the resource.
686 * If -EIO is returned then the frame_list has only been
687 * partially mapped and it is up to the caller to unmap all
688 * the GFNs.
689 * This parameter may be NULL if nr_frames is 0. This
690 * value may be updated over the course of the operation.
691 */
692 XEN_GUEST_HANDLE(xen_pfn_t) frame_list;
693};
697/*
698 * XENMEM_get_vnumainfo used by guest to get
699 * vNUMA topology from hypervisor.
700 */
701#define XENMEM_get_vnumainfo 26
703/* vNUMA node memory ranges */
706 unsigned int flags;
707 unsigned int nid;
708};
709typedef struct xen_vmemrange xen_vmemrange_t;
711
712/*
713 * vNUMA topology specifies vNUMA node number, distance table,
714 * memory ranges and vcpu mapping provided for guests.
715 * XENMEM_get_vnumainfo hypercall expects to see from guest
716 * nr_vnodes, nr_vmemranges and nr_vcpus to indicate available memory.
717 * After filling guests structures, nr_vnodes, nr_vmemranges and nr_vcpus
718 * copied back to guest. Domain returns expected values of nr_vnodes,
719 * nr_vmemranges and nr_vcpus to guest if the values where incorrect.
720 */
722 /* IN */
725 /* IN/OUT */
726 unsigned int nr_vnodes;
727 unsigned int nr_vcpus;
728 unsigned int nr_vmemranges;
729 /* OUT */
730 union {
731 XEN_GUEST_HANDLE(uint) h;
733 } vdistance;
734 union {
735 XEN_GUEST_HANDLE(uint) h;
738 union {
741 } vmemrange;
742};
745
746/* Next available subop number is 29 */
747
748#endif /* __XEN_PUBLIC_MEMORY_H__ */
749
750/*
751 * Local variables:
752 * mode: C
753 * c-file-style: "BSD"
754 * c-basic-offset: 4
755 * tab-width: 4
756 * indent-tabs-mode: nil
757 * End:
758 */
u32 pad[9]
Padding.
Definition ar9003_mac.h:23
unsigned short uint16_t
Definition stdint.h:11
unsigned int uint32_t
Definition stdint.h:12
unsigned long long uint64_t
Definition stdint.h:13
unsigned char uint8_t
Definition stdint.h:10
union @104331263140136355135267063077374276003064103115 u
uint8_t id
Request identifier.
Definition ena.h:1
uint32_t type
Operating system type.
Definition ena.h:1
uint64_t debug
Debug area base address.
Definition ena.h:3
uint8_t flags
Flags.
Definition ena.h:7
uint32_t start
Starting offset.
Definition netvsc.h:1
uint16_t size
Buffer size.
Definition dwmac.h:3
uint32_t buffer
Buffer index (or NETVSC_RNDIS_NO_BUFFER)
Definition netvsc.h:5
#define FILE_LICENCE(_licence)
Declare a particular licence as applying to a file.
Definition compiler.h:896
#define FILE_SECBOOT(_status)
Declare a file's UEFI Secure Boot permission status.
Definition compiler.h:926
uint16_t handle
Handle.
Definition smbios.h:5
uint16_t domid_t
Definition xen.h:622
static __always_inline int struct dma_mapping * map
Definition dma.h:184
struct xen_machphys_mfn_list xen_machphys_mfn_list_t
Definition memory.h:184
struct xen_memory_reservation xen_memory_reservation_t
Definition memory.h:82
struct xen_mem_acquire_resource xen_mem_acquire_resource_t
Definition memory.h:689
struct xen_vmemrange xen_vmemrange_t
Definition memory.h:704
struct xen_pod_target xen_pod_target_t
Definition memory.h:363
struct xen_memory_map xen_memory_map_t
Definition memory.h:326
struct xen_remove_from_physmap xen_remove_from_physmap_t
Definition memory.h:300
struct xen_add_to_physmap_batch xen_add_to_physmap_batch_t
Definition memory.h:277
struct xen_foreign_memory_map xen_foreign_memory_map_t
Definition memory.h:348
struct xen_memory_exchange xen_memory_exchange_t
Definition memory.h:127
struct xen_vnuma_topology_info xen_vnuma_topology_info_t
Definition memory.h:738
struct xen_machphys_mapping xen_machphys_mapping_t
Definition memory.h:207
struct xen_add_to_physmap_batch xen_add_to_physmap_range_t
Definition memory.h:283
struct xen_add_to_physmap xen_add_to_physmap_t
Definition memory.h:243
uint32_t end
Ending offset.
Definition netvsc.h:7
static uint16_t struct vmbus_xfer_pages_operations * op
Definition netvsc.h:327
#define XEN_GUEST_HANDLE(name)
Definition nonxen.h:17
unsigned long xen_ulong_t
Definition nonxen.h:30
#define DEFINE_XEN_GUEST_HANDLE(name)
Definition nonxen.h:26
unsigned long xen_pfn_t
Definition nonxen.h:28
struct pci_range range
PCI bus:dev.fn address range.
Definition pcicloud.c:40
struct physdev_pci_device physdev_pci_device_t
Definition physdev.h:318
uint8_t h
Definition registers.h:4
xen_ulong_t idx
Definition memory.h:238
unsigned int space
Definition memory.h:233
xen_pfn_t gpfn
Definition memory.h:241
xen_ulong_t v_end
Definition memory.h:204
xen_ulong_t max_mfn
Definition memory.h:205
xen_ulong_t v_start
Definition memory.h:204
XEN_GUEST_HANDLE(xen_pfn_t) extent_start
unsigned int max_extents
Definition memory.h:169
unsigned int nr_extents
Definition memory.h:182
domid_t domid
Definition memory.h:139
xen_ulong_t nr_exchanged
Definition memory.h:125
struct xen_memory_reservation in
Definition memory.h:100
struct xen_memory_reservation out
Definition memory.h:112
XEN_GUEST_HANDLE(void) buffer
unsigned int nr_entries
Definition memory.h:318
xen_ulong_t nr_extents
Definition memory.h:66
unsigned int address_bits
Definition memory.h:73
XEN_GUEST_HANDLE(xen_pfn_t) extent_start
unsigned int extent_order
Definition memory.h:67
uint64_t tot_pages
Definition memory.h:357
uint64_t pod_cache_pages
Definition memory.h:358
uint64_t target_pages
Definition memory.h:355
uint64_t pod_entries
Definition memory.h:359
unsigned int nid
Definition memory.h:702
unsigned int nr_vmemranges
Definition memory.h:723
unsigned int nr_vnodes
Definition memory.h:721
union xen_vnuma_topology_info::@157344371176156270205110342250332347333073103250 vdistance
unsigned int nr_vcpus
Definition memory.h:722
union xen_vnuma_topology_info::@027350170127333141251227101317207227206053105110 vcpu_to_vnode
union xen_vnuma_topology_info::@020037107356106017367013032142025154107317156140 vmemrange
static grant_ref_t domid_t domid
Definition xengrant.h:175
unsigned long frame
Definition xengrant.h:180