master
h 43 lines 1.46 KB
Raw
1 /*
2 * IOMMU test device helpers for libqos qtests
3 *
4 * Copyright (c) 2026 Phytium Technology
5 *
6 * Author:
7 * Tao Tang <tangtao1634@phytium.com.cn>
8 *
9 * SPDX-License-Identifier: GPL-2.0-or-later
10 */
11
12 #ifndef QTEST_LIBQOS_IOMMU_TESTDEV_H
13 #define QTEST_LIBQOS_IOMMU_TESTDEV_H
14
15 #include "pci.h"
16 #include "hw/misc/iommu-testdev.h"
17
18 typedef uint32_t (*QOSIOMMUTestdevSetupFn)(void *opaque);
19 typedef uint32_t (*QOSIOMMUTestdevAttrsFn)(void *opaque);
20 typedef bool (*QOSIOMMUTestdevValidateFn)(void *opaque);
21 typedef void (*QOSIOMMUTestdevReportFn)(void *opaque, uint32_t dma_result);
22
23 typedef struct QOSIOMMUTestdevDmaCfg {
24 QPCIDevice *dev;
25 QPCIBar bar;
26 uint64_t iova;
27 uint64_t gpa;
28 uint32_t len;
29 } QOSIOMMUTestdevDmaCfg;
30
31 uint32_t qos_iommu_testdev_trigger_dma(QPCIDevice *dev, QPCIBar bar,
32 uint64_t iova, uint64_t gpa,
33 uint32_t len, uint32_t attrs);
34
35 void qos_iommu_testdev_single_translation(const QOSIOMMUTestdevDmaCfg *dma,
36 void *opaque,
37 QOSIOMMUTestdevSetupFn setup_fn,
38 QOSIOMMUTestdevAttrsFn attrs_fn,
39 QOSIOMMUTestdevValidateFn validate_fn,
40 QOSIOMMUTestdevReportFn report_fn,
41 uint32_t *dma_result_out);
42
43 #endif /* QTEST_LIBQOS_IOMMU_TESTDEV_H */