hvm_op.h 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. /*
  2. * Permission is hereby granted, free of charge, to any person obtaining a copy
  3. * of this software and associated documentation files (the "Software"), to
  4. * deal in the Software without restriction, including without limitation the
  5. * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
  6. * sell copies of the Software, and to permit persons to whom the Software is
  7. * furnished to do so, subject to the following conditions:
  8. *
  9. * The above copyright notice and this permission notice shall be included in
  10. * all copies or substantial portions of the Software.
  11. *
  12. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  13. * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  14. * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  15. * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  16. * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
  17. * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
  18. * DEALINGS IN THE SOFTWARE.
  19. */
  20. #ifndef __XEN_PUBLIC_HVM_HVM_OP_H__
  21. #define __XEN_PUBLIC_HVM_HVM_OP_H__
  22. /* Get/set subcommands: the second argument of the hypercall is a
  23. * pointer to a xen_hvm_param struct. */
  24. #define HVMOP_set_param 0
  25. #define HVMOP_get_param 1
  26. struct xen_hvm_param {
  27. domid_t domid; /* IN */
  28. uint32_t index; /* IN */
  29. uint64_t value; /* IN/OUT */
  30. };
  31. DEFINE_GUEST_HANDLE_STRUCT(xen_hvm_param);
  32. /* Hint from PV drivers for pagetable destruction. */
  33. #define HVMOP_pagetable_dying 9
  34. struct xen_hvm_pagetable_dying {
  35. /* Domain with a pagetable about to be destroyed. */
  36. domid_t domid;
  37. /* guest physical address of the toplevel pagetable dying */
  38. aligned_u64 gpa;
  39. };
  40. typedef struct xen_hvm_pagetable_dying xen_hvm_pagetable_dying_t;
  41. DEFINE_GUEST_HANDLE_STRUCT(xen_hvm_pagetable_dying_t);
  42. enum hvmmem_type_t {
  43. HVMMEM_ram_rw, /* Normal read/write guest RAM */
  44. HVMMEM_ram_ro, /* Read-only; writes are discarded */
  45. HVMMEM_mmio_dm, /* Reads and write go to the device model */
  46. };
  47. #define HVMOP_get_mem_type 15
  48. /* Return hvmmem_type_t for the specified pfn. */
  49. struct xen_hvm_get_mem_type {
  50. /* Domain to be queried. */
  51. domid_t domid;
  52. /* OUT variable. */
  53. uint16_t mem_type;
  54. uint16_t pad[2]; /* align next field on 8-byte boundary */
  55. /* IN variable. */
  56. uint64_t pfn;
  57. };
  58. DEFINE_GUEST_HANDLE_STRUCT(xen_hvm_get_mem_type);
  59. #endif /* __XEN_PUBLIC_HVM_HVM_OP_H__ */