2018-03-07 20:57:14 +08:00
|
|
|
/*
|
|
|
|
* SHARED BUFFER
|
|
|
|
*
|
2022-07-13 09:21:24 +08:00
|
|
|
* Copyright (C) 2017-2022 Intel Corporation.
|
2018-03-07 20:57:14 +08:00
|
|
|
*
|
2018-05-26 01:49:13 +08:00
|
|
|
* SPDX-License-Identifier: BSD-3-Clause
|
2018-03-07 20:57:14 +08:00
|
|
|
*
|
|
|
|
* Li Fei <fei1.li@intel.com>
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
2019-02-20 13:37:55 +08:00
|
|
|
#include <types.h>
|
|
|
|
#include <rtl.h>
|
|
|
|
#include <errno.h>
|
2021-04-23 15:50:57 +08:00
|
|
|
#include <asm/cpu.h>
|
|
|
|
#include <asm/per_cpu.h>
|
2018-03-07 20:57:14 +08:00
|
|
|
|
2018-12-08 00:30:49 +08:00
|
|
|
int32_t sbuf_share_setup(uint16_t pcpu_id, uint32_t sbuf_id, uint64_t *hva)
|
2018-03-07 20:57:14 +08:00
|
|
|
{
|
2022-08-17 09:58:23 +08:00
|
|
|
if ((pcpu_id >= get_pcpu_nums()) || (sbuf_id >= ACRN_SBUF_PER_PCPU_ID_MAX)) {
|
2018-03-07 20:57:14 +08:00
|
|
|
return -EINVAL;
|
2018-07-13 06:02:55 +08:00
|
|
|
}
|
2018-03-07 20:57:14 +08:00
|
|
|
|
2019-07-09 11:20:04 +08:00
|
|
|
per_cpu(sbuf, pcpu_id)[sbuf_id] = (struct shared_buf *) hva;
|
2018-05-23 13:05:22 +08:00
|
|
|
pr_info("%s share sbuf for pCPU[%u] with sbuf_id[%u] setup successfully",
|
|
|
|
__func__, pcpu_id, sbuf_id);
|
|
|
|
|
2018-03-07 20:57:14 +08:00
|
|
|
return 0;
|
|
|
|
}
|
2019-04-18 02:41:21 +08:00
|
|
|
|
2019-06-27 00:50:00 +08:00
|
|
|
void sbuf_reset(void)
|
2019-04-18 02:41:21 +08:00
|
|
|
{
|
2019-06-27 00:50:00 +08:00
|
|
|
uint16_t pcpu_id, sbuf_id;
|
2019-04-18 02:41:21 +08:00
|
|
|
|
2019-06-27 00:50:00 +08:00
|
|
|
for (pcpu_id = 0U; pcpu_id < get_pcpu_nums(); pcpu_id++) {
|
2022-08-17 09:58:23 +08:00
|
|
|
for (sbuf_id = 0U; sbuf_id < ACRN_SBUF_PER_PCPU_ID_MAX; sbuf_id++) {
|
2019-04-18 02:41:21 +08:00
|
|
|
per_cpu(sbuf, pcpu_id)[sbuf_id] = 0U;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|