.. | .. |
---|
33 | 33 | #ifndef _GVT_HYPERCALL_H_ |
---|
34 | 34 | #define _GVT_HYPERCALL_H_ |
---|
35 | 35 | |
---|
| 36 | +#include <linux/types.h> |
---|
| 37 | + |
---|
| 38 | +struct device; |
---|
| 39 | + |
---|
| 40 | +enum hypervisor_type { |
---|
| 41 | + INTEL_GVT_HYPERVISOR_XEN = 0, |
---|
| 42 | + INTEL_GVT_HYPERVISOR_KVM, |
---|
| 43 | +}; |
---|
| 44 | + |
---|
36 | 45 | /* |
---|
37 | 46 | * Specific GVT-g MPT modules function collections. Currently GVT-g supports |
---|
38 | 47 | * both Xen and KVM by providing dedicated hypervisor-related MPT modules. |
---|
39 | 48 | */ |
---|
40 | 49 | struct intel_gvt_mpt { |
---|
| 50 | + enum hypervisor_type type; |
---|
41 | 51 | int (*host_init)(struct device *dev, void *gvt, const void *ops); |
---|
42 | | - void (*host_exit)(struct device *dev, void *gvt); |
---|
| 52 | + void (*host_exit)(struct device *dev); |
---|
43 | 53 | int (*attach_vgpu)(void *vgpu, unsigned long *handle); |
---|
44 | | - void (*detach_vgpu)(unsigned long handle); |
---|
| 54 | + void (*detach_vgpu)(void *vgpu); |
---|
45 | 55 | int (*inject_msi)(unsigned long handle, u32 addr, u16 data); |
---|
46 | 56 | unsigned long (*from_virt_to_mfn)(void *p); |
---|
47 | 57 | int (*enable_page_track)(unsigned long handle, u64 gfn); |
---|
.. | .. |
---|
56 | 66 | unsigned long size, dma_addr_t *dma_addr); |
---|
57 | 67 | void (*dma_unmap_guest_page)(unsigned long handle, dma_addr_t dma_addr); |
---|
58 | 68 | |
---|
| 69 | + int (*dma_pin_guest_page)(unsigned long handle, dma_addr_t dma_addr); |
---|
| 70 | + |
---|
59 | 71 | int (*map_gfn_to_mfn)(unsigned long handle, unsigned long gfn, |
---|
60 | 72 | unsigned long mfn, unsigned int nr, bool map); |
---|
61 | 73 | int (*set_trap_area)(unsigned long handle, u64 start, u64 end, |
---|
62 | 74 | bool map); |
---|
63 | 75 | int (*set_opregion)(void *vgpu); |
---|
| 76 | + int (*set_edid)(void *vgpu, int port_num); |
---|
64 | 77 | int (*get_vfio_device)(void *vgpu); |
---|
65 | 78 | void (*put_vfio_device)(void *vgpu); |
---|
66 | 79 | bool (*is_valid_gfn)(unsigned long handle, unsigned long gfn); |
---|
67 | 80 | }; |
---|
68 | | - |
---|
69 | | -extern struct intel_gvt_mpt xengt_mpt; |
---|
70 | | -extern struct intel_gvt_mpt kvmgt_mpt; |
---|
71 | 81 | |
---|
72 | 82 | #endif /* _GVT_HYPERCALL_H_ */ |
---|