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);
39b1bba80aSStefano 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);
44b1bba80aSStefano 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