1 /* SPDX-License-Identifier: GPL-2.0-only */
2 /*
3  * VMware VMCI Driver
4  *
5  * Copyright (C) 2012 VMware, Inc. All rights reserved.
6  */
7 
8 #ifndef VMCI_DOORBELL_H
9 #define VMCI_DOORBELL_H
10 
11 #include <linux/vmw_vmci_defs.h>
12 #include <linux/types.h>
13 
14 #include "vmci_driver.h"
15 
16 /*
17  * VMCINotifyResourceInfo: Used to create and destroy doorbells, and
18  * generate a notification for a doorbell or queue pair.
19  */
20 struct vmci_dbell_notify_resource_info {
21 	struct vmci_handle handle;
22 	u16 resource;
23 	u16 action;
24 	s32 result;
25 };
26 
27 /*
28  * Structure used for checkpointing the doorbell mappings. It is
29  * written to the checkpoint as is, so changing this structure will
30  * break checkpoint compatibility.
31  */
32 struct dbell_cpt_state {
33 	struct vmci_handle handle;
34 	u64 bitmap_idx;
35 };
36 
37 int vmci_dbell_host_context_notify(u32 src_cid, struct vmci_handle handle);
38 int vmci_dbell_get_priv_flags(struct vmci_handle handle, u32 *priv_flags);
39 
40 bool vmci_dbell_register_notification_bitmap(u64 bitmap_ppn);
41 void vmci_dbell_scan_notification_entries(u8 *bitmap);
42 
43 #endif /* VMCI_DOORBELL_H */
44