1685a6bf8SThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */ 2197dbaaaSGeorge Zhang /* 3197dbaaaSGeorge Zhang * VMware VMCI Driver 4197dbaaaSGeorge Zhang * 5197dbaaaSGeorge Zhang * Copyright (C) 2012 VMware, Inc. All rights reserved. 6197dbaaaSGeorge Zhang */ 7197dbaaaSGeorge Zhang 8197dbaaaSGeorge Zhang #ifndef _VMCI_DRIVER_H_ 9197dbaaaSGeorge Zhang #define _VMCI_DRIVER_H_ 10197dbaaaSGeorge Zhang 11197dbaaaSGeorge Zhang #include <linux/vmw_vmci_defs.h> 12197dbaaaSGeorge Zhang #include <linux/wait.h> 13197dbaaaSGeorge Zhang 14197dbaaaSGeorge Zhang #include "vmci_queue_pair.h" 15197dbaaaSGeorge Zhang #include "vmci_context.h" 16197dbaaaSGeorge Zhang 17197dbaaaSGeorge Zhang enum vmci_obj_type { 18197dbaaaSGeorge Zhang VMCIOBJ_VMX_VM = 10, 19197dbaaaSGeorge Zhang VMCIOBJ_CONTEXT, 20197dbaaaSGeorge Zhang VMCIOBJ_SOCKET, 21197dbaaaSGeorge Zhang VMCIOBJ_NOT_SET, 22197dbaaaSGeorge Zhang }; 23197dbaaaSGeorge Zhang 24197dbaaaSGeorge Zhang /* For storing VMCI structures in file handles. */ 25197dbaaaSGeorge Zhang struct vmci_obj { 26197dbaaaSGeorge Zhang void *ptr; 27197dbaaaSGeorge Zhang enum vmci_obj_type type; 28197dbaaaSGeorge Zhang }; 29197dbaaaSGeorge Zhang 306d6dfb4fSAndy King /* 316d6dfb4fSAndy King * Needed by other components of this module. It's okay to have one global 326d6dfb4fSAndy King * instance of this because there can only ever be one VMCI device. Our 336d6dfb4fSAndy King * virtual hardware enforces this. 346d6dfb4fSAndy King */ 356d6dfb4fSAndy King extern struct pci_dev *vmci_pdev; 366d6dfb4fSAndy King 37197dbaaaSGeorge Zhang u32 vmci_get_context_id(void); 38197dbaaaSGeorge Zhang int vmci_send_datagram(struct vmci_datagram *dg); 39*b1bba80aSStefano Garzarella void vmci_call_vsock_callback(bool is_host); 40197dbaaaSGeorge Zhang 41197dbaaaSGeorge Zhang int vmci_host_init(void); 42197dbaaaSGeorge Zhang void vmci_host_exit(void); 43197dbaaaSGeorge Zhang bool vmci_host_code_active(void); 44*b1bba80aSStefano Garzarella int vmci_host_users(void); 45197dbaaaSGeorge Zhang 46197dbaaaSGeorge Zhang int vmci_guest_init(void); 47197dbaaaSGeorge Zhang void vmci_guest_exit(void); 48197dbaaaSGeorge Zhang bool vmci_guest_code_active(void); 49197dbaaaSGeorge Zhang u32 vmci_get_vm_context_id(void); 50197dbaaaSGeorge Zhang 51f2db7361SVishnu DASA bool vmci_use_ppn64(void); 52f2db7361SVishnu DASA 53197dbaaaSGeorge Zhang #endif /* _VMCI_DRIVER_H_ */ 54