1 /*
2  * SHARED BUFFER
3  *
4  * Copyright (C) 2017-2022 Intel Corporation.
5  *
6  * SPDX-License-Identifier: BSD-3-Clause
7  *
8  * Li Fei <fei1.li@intel.com>
9  *
10  */
11 
12 #include <types.h>
13 #include <rtl.h>
14 #include <errno.h>
15 #include <asm/cpu.h>
16 #include <asm/per_cpu.h>
17 
sbuf_share_setup(uint16_t pcpu_id,uint32_t sbuf_id,uint64_t * hva)18 int32_t sbuf_share_setup(uint16_t pcpu_id, uint32_t sbuf_id, uint64_t *hva)
19 {
20 	if ((pcpu_id >= get_pcpu_nums()) || (sbuf_id >= ACRN_SBUF_PER_PCPU_ID_MAX)) {
21 		return -EINVAL;
22 	}
23 
24 	per_cpu(sbuf, pcpu_id)[sbuf_id] = (struct shared_buf *) hva;
25 	pr_info("%s share sbuf for pCPU[%u] with sbuf_id[%u] setup successfully",
26 			__func__, pcpu_id, sbuf_id);
27 
28 	return 0;
29 }
30 
sbuf_reset(void)31 void sbuf_reset(void)
32 {
33 	uint16_t pcpu_id, sbuf_id;
34 
35 	for (pcpu_id = 0U; pcpu_id < get_pcpu_nums(); pcpu_id++) {
36 		for (sbuf_id = 0U; sbuf_id < ACRN_SBUF_PER_PCPU_ID_MAX; sbuf_id++) {
37 			per_cpu(sbuf, pcpu_id)[sbuf_id] = 0U;
38 		}
39 	}
40 }
41