nvsciipc: Add UID member to Config structure

- Added UID member to nvsciipc_config_entry data
structure. this is needed for implementing
test_nvsciipc_cfgblob in linux.
- removed static from ioctl function to attach eBPF program
- add error-injection.h and ALLOW_ERROR_INJECTION macro to ioctl
  to use bpf_override_return()

JIRA NVIPC-2817

Change-Id: Ic27156e321368041f41fbabff9e6375140fe1d0e
Signed-off-by: Suneel Kumar Pemmineti <spemmineti@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/3301786
Tested-by: Joshua Cha <joshuac@nvidia.com>
GVS: buildbot_gerritrpt <buildbot_gerritrpt@nvidia.com>
Reviewed-by: Simon Je <sje@nvidia.com>
This commit is contained in:
Suneel Kumar Pemmineti
2024-09-17 15:10:52 +00:00
committed by Jon Hunter
parent b1af9a0347
commit 38d739c860
4 changed files with 124 additions and 28 deletions

View File

@@ -1,7 +1,5 @@
/* SPDX-License-Identifier: GPL-2.0-only */
/*
* SPDX-FileCopyrightText: Copyright (c) 2019-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
*/
// SPDX-License-Identifier: GPL-2.0-only
// SPDX-FileCopyrightText: Copyright (c) 2019-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
#ifndef __NVSCIIPC_IOCTL_H__
#define __NVSCIIPC_IOCTL_H__
@@ -32,6 +30,30 @@ struct nvsciipc_config_entry {
uint32_t local_port;
uint32_t peer_vmid;
uint32_t noti_type;
uint32_t uid;
};
/* TODO: remove it after migration */
struct nvsciipc_config_entry_legacy {
/* endpoint name */
char ep_name[NVSCIIPC_MAX_EP_NAME];
/* node name for shm/sem */
char dev_name[NVSCIIPC_MAX_EP_NAME];
uint32_t backend; /* backend type */
uint32_t nframes; /* frame count */
uint32_t frame_size; /* frame size */
/* ep id for inter-Proc/Thread
* queue id for inter-VM
* dev id for inter-Chip
*/
uint32_t id;
uint64_t vuid; /* VM-wide unique id */
char rdma_dev_name[NVSCIIPC_MAX_RDMA_NAME];
char remote_ip[NVSCIIPC_MAX_IP_NAME];
uint32_t remote_port;
uint32_t local_port;
uint32_t peer_vmid;
uint32_t noti_type;
};
struct nvsciipc_db {
@@ -44,12 +66,24 @@ struct nvsciipc_get_vuid {
uint64_t vuid;
};
struct nvsciipc_get_db_by_id {
uint32_t id; // IVC qid
struct nvsciipc_config_entry entry;
};
struct nvsciipc_get_db_by_name {
char ep_name[NVSCIIPC_MAX_EP_NAME];
struct nvsciipc_config_entry entry;
uint32_t idx;
};
/* TODO: remove it after migration */
struct nvsciipc_get_db_by_name_legacy {
char ep_name[NVSCIIPC_MAX_EP_NAME];
struct nvsciipc_config_entry_legacy entry;
uint32_t idx;
};
struct nvsciipc_get_db_by_vuid {
uint64_t vuid;
struct nvsciipc_config_entry entry;