1 /* SPDX-License-Identifier: BSD-3-Clause */ 2 /* Copyright(c) 2007-2023 Intel Corporation */ 3 /* $FreeBSD$ */ 4 #ifndef QAT_UIO_CONTROL_H 5 #define QAT_UIO_CONTROL_H 6 #include <sys/condvar.h> 7 8 struct adf_uio_instance_rings { 9 unsigned int user_pid; 10 u16 ring_mask; 11 struct list_head list; 12 }; 13 14 struct adf_uio_control_bundle { 15 uint8_t hardware_bundle_number; 16 bool used; 17 struct list_head list; 18 struct mutex list_lock; /* protects list struct */ 19 struct mutex lock; /* protects rings_used and csr_addr */ 20 u16 rings_used; 21 u32 rings_enabled; 22 void *csr_addr; 23 struct qat_uio_bundle_dev uio_priv; 24 vm_object_t obj; 25 }; 26 27 struct adf_uio_control_accel { 28 struct adf_accel_dev *accel_dev; 29 struct cdev *cdev; 30 struct mtx lock; 31 struct adf_bar *bar; 32 unsigned int nb_bundles; 33 unsigned int num_ker_bundles; 34 unsigned int total_used_bundles; 35 unsigned int num_handles; 36 struct cv cleanup_ok; 37 /* bundle[] must be last to allow dynamic size allocation. */ 38 struct adf_uio_control_bundle bundle[0]; 39 40 }; 41 42 43 #endif /* end of include guard: QAT_UIO_CONTROL_H */ 44