1 #ifndef __XEN_PUBLIC_HVM_HVM_OP_H__
2 #define __XEN_PUBLIC_HVM_HVM_OP_H__
3 
4 /* Get/set subcommands: extra argument == pointer to xen_hvm_param struct. */
5 #define HVMOP_set_param           0
6 #define HVMOP_get_param           1
7 struct xen_hvm_param {
8     domid_t  domid;    /* IN */
9     uint32_t index;    /* IN */
10     uint64_t value;    /* IN/OUT */
11 };
12 typedef struct xen_hvm_param xen_hvm_param_t;
13 DEFINE_XEN_GUEST_HANDLE(xen_hvm_param_t);
14 
15 /* Set the logical level of one of a domain's PCI INTx wires. */
16 #define HVMOP_set_pci_intx_level  2
17 struct xen_hvm_set_pci_intx_level {
18     /* Domain to be updated. */
19     domid_t  domid;
20     /* PCI INTx identification in PCI topology (domain:bus:device:intx). */
21     uint8_t  domain, bus, device, intx;
22     /* Assertion level (0 = unasserted, 1 = asserted). */
23     uint8_t  level;
24 };
25 typedef struct xen_hvm_set_pci_intx_level xen_hvm_set_pci_intx_level_t;
26 DEFINE_XEN_GUEST_HANDLE(xen_hvm_set_pci_intx_level_t);
27 
28 /* Set the logical level of one of a domain's ISA IRQ wires. */
29 #define HVMOP_set_isa_irq_level   3
30 struct xen_hvm_set_isa_irq_level {
31     /* Domain to be updated. */
32     domid_t  domid;
33     /* ISA device identification, by ISA IRQ (0-15). */
34     uint8_t  isa_irq;
35     /* Assertion level (0 = unasserted, 1 = asserted). */
36     uint8_t  level;
37 };
38 typedef struct xen_hvm_set_isa_irq_level xen_hvm_set_isa_irq_level_t;
39 DEFINE_XEN_GUEST_HANDLE(xen_hvm_set_isa_irq_level_t);
40 
41 #define HVMOP_set_pci_link_route  4
42 struct xen_hvm_set_pci_link_route {
43     /* Domain to be updated. */
44     domid_t  domid;
45     /* PCI link identifier (0-3). */
46     uint8_t  link;
47     /* ISA IRQ (1-15), or 0 (disable link). */
48     uint8_t  isa_irq;
49 };
50 typedef struct xen_hvm_set_pci_link_route xen_hvm_set_pci_link_route_t;
51 DEFINE_XEN_GUEST_HANDLE(xen_hvm_set_pci_link_route_t);
52 
53 #endif /* __XEN_PUBLIC_HVM_HVM_OP_H__ */
54