135130acb88e29b9200479bc806d7d2d87669c2d0sewardj/* 235130acb88e29b9200479bc806d7d2d87669c2d0sewardj This file is part of Valgrind, a dynamic binary instrumentation 335130acb88e29b9200479bc806d7d2d87669c2d0sewardj framework. 435130acb88e29b9200479bc806d7d2d87669c2d0sewardj 535130acb88e29b9200479bc806d7d2d87669c2d0sewardj Copyright (C) 2012-2015 Citrix 635130acb88e29b9200479bc806d7d2d87669c2d0sewardj 735130acb88e29b9200479bc806d7d2d87669c2d0sewardj This program is free software; you can redistribute it and/or 835130acb88e29b9200479bc806d7d2d87669c2d0sewardj modify it under the terms of the GNU General Public License as 935130acb88e29b9200479bc806d7d2d87669c2d0sewardj published by the Free Software Foundation; either version 2 of the 1035130acb88e29b9200479bc806d7d2d87669c2d0sewardj License, or (at your option) any later version. 1135130acb88e29b9200479bc806d7d2d87669c2d0sewardj 1235130acb88e29b9200479bc806d7d2d87669c2d0sewardj This program is distributed in the hope that it will be useful, but 1335130acb88e29b9200479bc806d7d2d87669c2d0sewardj WITHOUT ANY WARRANTY; without even the implied warranty of 1435130acb88e29b9200479bc806d7d2d87669c2d0sewardj MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1535130acb88e29b9200479bc806d7d2d87669c2d0sewardj General Public License for more details. 1635130acb88e29b9200479bc806d7d2d87669c2d0sewardj 1735130acb88e29b9200479bc806d7d2d87669c2d0sewardj You should have received a copy of the GNU General Public License 1835130acb88e29b9200479bc806d7d2d87669c2d0sewardj along with this program; if not, write to the Free Software 1935130acb88e29b9200479bc806d7d2d87669c2d0sewardj Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 2035130acb88e29b9200479bc806d7d2d87669c2d0sewardj 02111-1307, USA. 2135130acb88e29b9200479bc806d7d2d87669c2d0sewardj 2235130acb88e29b9200479bc806d7d2d87669c2d0sewardj The GNU General Public License is contained in the file COPYING. 2335130acb88e29b9200479bc806d7d2d87669c2d0sewardj*/ 2435130acb88e29b9200479bc806d7d2d87669c2d0sewardj 2535130acb88e29b9200479bc806d7d2d87669c2d0sewardj/* Contributed by Andrew Cooper <andrew.cooper3@citrix.com> 2635130acb88e29b9200479bc806d7d2d87669c2d0sewardj and Ian Campbell <ian.campbell@citrix.com> */ 2735130acb88e29b9200479bc806d7d2d87669c2d0sewardj 2851e61da70d98443ae4008c2e3bb82add77d9c15cbart#ifndef __VKI_XEN_HVM_H 2951e61da70d98443ae4008c2e3bb82add77d9c15cbart#define __VKI_XEN_HVM_H 3051e61da70d98443ae4008c2e3bb82add77d9c15cbart 3151e61da70d98443ae4008c2e3bb82add77d9c15cbart/* Get/set subcommands: extra argument == pointer to xen_hvm_param struct. */ 3251e61da70d98443ae4008c2e3bb82add77d9c15cbart#define VKI_XEN_HVMOP_set_param 0 3351e61da70d98443ae4008c2e3bb82add77d9c15cbart#define VKI_XEN_HVMOP_get_param 1 3451e61da70d98443ae4008c2e3bb82add77d9c15cbartstruct vki_xen_hvm_param { 3551e61da70d98443ae4008c2e3bb82add77d9c15cbart vki_xen_domid_t domid; /* IN */ 3651e61da70d98443ae4008c2e3bb82add77d9c15cbart vki_uint32_t index; /* IN */ 3751e61da70d98443ae4008c2e3bb82add77d9c15cbart vki_uint64_t value; /* IN/OUT */ 3851e61da70d98443ae4008c2e3bb82add77d9c15cbart}; 3951e61da70d98443ae4008c2e3bb82add77d9c15cbart 40f38a8f0978b1d9f0ba715289842a8e4629c639e9bart#define VKI_XEN_HVMOP_set_pci_intx_level 2 41f38a8f0978b1d9f0ba715289842a8e4629c639e9bartstruct vki_xen_hvm_set_pci_intx_level { 42f38a8f0978b1d9f0ba715289842a8e4629c639e9bart vki_xen_domid_t domid; 43f38a8f0978b1d9f0ba715289842a8e4629c639e9bart vki_uint8_t domain, bus, device, intx; 44f38a8f0978b1d9f0ba715289842a8e4629c639e9bart vki_uint8_t level; 45f38a8f0978b1d9f0ba715289842a8e4629c639e9bart}; 46f38a8f0978b1d9f0ba715289842a8e4629c639e9barttypedef struct vki_xen_hvm_set_pci_intx_level vki_xen_hvm_set_pci_intx_level_t; 47f38a8f0978b1d9f0ba715289842a8e4629c639e9bart 48a5f81a0f931c6e5a0cb17f415c304255f08e7ba8bart#define VKI_XEN_HVMOP_set_isa_irq_level 3 49a5f81a0f931c6e5a0cb17f415c304255f08e7ba8bartstruct vki_xen_hvm_set_isa_irq_level { 50a5f81a0f931c6e5a0cb17f415c304255f08e7ba8bart vki_xen_domid_t domid; 51a5f81a0f931c6e5a0cb17f415c304255f08e7ba8bart vki_uint8_t isa_irq; 52a5f81a0f931c6e5a0cb17f415c304255f08e7ba8bart vki_uint8_t level; 53a5f81a0f931c6e5a0cb17f415c304255f08e7ba8bart}; 54a5f81a0f931c6e5a0cb17f415c304255f08e7ba8barttypedef struct vki_xen_hvm_set_isa_irq_level vki_xen_hvm_set_isa_irq_level_t; 55a5f81a0f931c6e5a0cb17f415c304255f08e7ba8bart 562c28071a87233c88c850c9a5b85896c3b7bda3acbart#define VKI_XEN_HVMOP_set_pci_link_route 4 572c28071a87233c88c850c9a5b85896c3b7bda3acbartstruct vki_xen_hvm_set_pci_link_route { 582c28071a87233c88c850c9a5b85896c3b7bda3acbart vki_xen_domid_t domid; 592c28071a87233c88c850c9a5b85896c3b7bda3acbart vki_uint8_t link; 602c28071a87233c88c850c9a5b85896c3b7bda3acbart vki_uint8_t isa_irq; 612c28071a87233c88c850c9a5b85896c3b7bda3acbart}; 622c28071a87233c88c850c9a5b85896c3b7bda3acbarttypedef struct vki_xen_hvm_set_pci_link_route vki_xen_hvm_set_pci_link_route_t; 632c28071a87233c88c850c9a5b85896c3b7bda3acbart 64d1388da83ea2523699b237e7f034e16997ebaca6bart#define VKI_XEN_HVMOP_track_dirty_vram 6 65d1388da83ea2523699b237e7f034e16997ebaca6bartstruct vki_xen_hvm_track_dirty_vram { 66d1388da83ea2523699b237e7f034e16997ebaca6bart vki_xen_domid_t domid; /* IN */ 67d1388da83ea2523699b237e7f034e16997ebaca6bart vki_xen_uint64_aligned_t first_pfn; /* IN */ 68d1388da83ea2523699b237e7f034e16997ebaca6bart vki_xen_uint64_aligned_t nr; /* IN */ 69d1388da83ea2523699b237e7f034e16997ebaca6bart VKI_XEN_GUEST_HANDLE_64(vki_uint8) dirty_bitmap; /* OUT */ 70d1388da83ea2523699b237e7f034e16997ebaca6bart}; 71d1388da83ea2523699b237e7f034e16997ebaca6barttypedef struct vki_xen_hvm_track_dirty_vram vki_xen_hvm_track_dirty_vram_t; 72d1388da83ea2523699b237e7f034e16997ebaca6bart 7365056673598941d349716fbca2319f0a9d87ef8cbart#define VKI_XEN_HVMOP_set_mem_type 8 7465056673598941d349716fbca2319f0a9d87ef8cbartstruct vki_xen_hvm_set_mem_type { 7565056673598941d349716fbca2319f0a9d87ef8cbart vki_xen_domid_t domid; 7665056673598941d349716fbca2319f0a9d87ef8cbart vki_uint16_t hvmmem_type; 7765056673598941d349716fbca2319f0a9d87ef8cbart vki_uint32_t nr; 789e4ec3aa2cdc4cdca092538ef2e65b0a494932afsewardj vki_uint64_t first_pfn; 7965056673598941d349716fbca2319f0a9d87ef8cbart}; 8065056673598941d349716fbca2319f0a9d87ef8cbarttypedef struct vki_xen_hvm_set_mem_type vki_xen_hvm_set_mem_type_t; 8165056673598941d349716fbca2319f0a9d87ef8cbart 829e4ec3aa2cdc4cdca092538ef2e65b0a494932afsewardj#define VKI_XEN_HVMOP_set_mem_access 12 839e4ec3aa2cdc4cdca092538ef2e65b0a494932afsewardjstruct vki_xen_hvm_set_mem_access { 849e4ec3aa2cdc4cdca092538ef2e65b0a494932afsewardj vki_xen_domid_t domid; 859e4ec3aa2cdc4cdca092538ef2e65b0a494932afsewardj vki_uint16_t hvmmem_access; 869e4ec3aa2cdc4cdca092538ef2e65b0a494932afsewardj vki_uint32_t nr; 879e4ec3aa2cdc4cdca092538ef2e65b0a494932afsewardj vki_uint64_t first_pfn; 889e4ec3aa2cdc4cdca092538ef2e65b0a494932afsewardj}; 899e4ec3aa2cdc4cdca092538ef2e65b0a494932afsewardjtypedef struct vki_xen_hvm_set_mem_access vki_xen_hvm_set_mem_access_t; 909e4ec3aa2cdc4cdca092538ef2e65b0a494932afsewardj 919e4ec3aa2cdc4cdca092538ef2e65b0a494932afsewardj#define VKI_XEN_HVMOP_get_mem_access 13 929e4ec3aa2cdc4cdca092538ef2e65b0a494932afsewardjstruct vki_xen_hvm_get_mem_access { 939e4ec3aa2cdc4cdca092538ef2e65b0a494932afsewardj vki_xen_domid_t domid; 949e4ec3aa2cdc4cdca092538ef2e65b0a494932afsewardj vki_uint16_t hvmmem_access; /* OUT */ 959e4ec3aa2cdc4cdca092538ef2e65b0a494932afsewardj vki_uint64_t pfn; 969e4ec3aa2cdc4cdca092538ef2e65b0a494932afsewardj}; 979e4ec3aa2cdc4cdca092538ef2e65b0a494932afsewardjtypedef struct vki_xen_hvm_get_mem_access vki_xen_hvm_get_mem_access_t; 989e4ec3aa2cdc4cdca092538ef2e65b0a494932afsewardj 999e4ec3aa2cdc4cdca092538ef2e65b0a494932afsewardj#define VKI_XEN_HVMOP_inject_trap 14 1009e4ec3aa2cdc4cdca092538ef2e65b0a494932afsewardjstruct vki_xen_hvm_inject_trap { 1019e4ec3aa2cdc4cdca092538ef2e65b0a494932afsewardj vki_xen_domid_t domid; 1029e4ec3aa2cdc4cdca092538ef2e65b0a494932afsewardj vki_uint32_t vcpuid; 1039e4ec3aa2cdc4cdca092538ef2e65b0a494932afsewardj vki_uint32_t vector; 1049e4ec3aa2cdc4cdca092538ef2e65b0a494932afsewardj vki_uint32_t type; 1059e4ec3aa2cdc4cdca092538ef2e65b0a494932afsewardj vki_uint32_t error_code; 1069e4ec3aa2cdc4cdca092538ef2e65b0a494932afsewardj vki_uint32_t insn_len; 1079e4ec3aa2cdc4cdca092538ef2e65b0a494932afsewardj vki_uint64_t cr2; 1089e4ec3aa2cdc4cdca092538ef2e65b0a494932afsewardj}; 1099e4ec3aa2cdc4cdca092538ef2e65b0a494932afsewardjtypedef struct vki_xen_hvm_inject_trap vki_xen_hvm_inject_trap_t; 1109e4ec3aa2cdc4cdca092538ef2e65b0a494932afsewardj 11151e61da70d98443ae4008c2e3bb82add77d9c15cbart#endif // __VKI_XEN_HVM_H 11251e61da70d98443ae4008c2e3bb82add77d9c15cbart 11351e61da70d98443ae4008c2e3bb82add77d9c15cbart/*--------------------------------------------------------------------*/ 11451e61da70d98443ae4008c2e3bb82add77d9c15cbart/*--- end ---*/ 11551e61da70d98443ae4008c2e3bb82add77d9c15cbart/*--------------------------------------------------------------------*/ 116