* [igt-dev] [PATCH 1/2] include/drm-uapi/amdgpu_drm.h: update amdgpu_drm.h
@ 2023-11-09 7:07 Lang Yu
2023-11-09 7:07 ` [igt-dev] [PATCH 2/2] tests/amdgpu: add VPE tests Lang Yu
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: Lang Yu @ 2023-11-09 7:07 UTC (permalink / raw)
To: igt-dev; +Cc: Alex Deucher, Lang Yu
Take from https://anongit.freedesktop.org/git/drm/drm.git.
branch: drm-next
commit: 9ccde17d46554dbb2757c427f2cdf67688701f96
Signed-off-by: Lang Yu <Lang.Yu@amd.com>
---
include/drm-uapi/amdgpu_drm.h | 50 ++++++++++++++++++++++++++---------
1 file changed, 38 insertions(+), 12 deletions(-)
diff --git a/include/drm-uapi/amdgpu_drm.h b/include/drm-uapi/amdgpu_drm.h
index f44e140ad..ad21c613f 100644
--- a/include/drm-uapi/amdgpu_drm.h
+++ b/include/drm-uapi/amdgpu_drm.h
@@ -94,6 +94,9 @@ extern "C" {
*
* %AMDGPU_GEM_DOMAIN_OA Ordered append, used by 3D or Compute engines
* for appending data.
+ *
+ * %AMDGPU_GEM_DOMAIN_DOORBELL Doorbell. It is an MMIO region for
+ * signalling user mode queues.
*/
#define AMDGPU_GEM_DOMAIN_CPU 0x1
#define AMDGPU_GEM_DOMAIN_GTT 0x2
@@ -101,12 +104,14 @@ extern "C" {
#define AMDGPU_GEM_DOMAIN_GDS 0x8
#define AMDGPU_GEM_DOMAIN_GWS 0x10
#define AMDGPU_GEM_DOMAIN_OA 0x20
+#define AMDGPU_GEM_DOMAIN_DOORBELL 0x40
#define AMDGPU_GEM_DOMAIN_MASK (AMDGPU_GEM_DOMAIN_CPU | \
AMDGPU_GEM_DOMAIN_GTT | \
AMDGPU_GEM_DOMAIN_VRAM | \
AMDGPU_GEM_DOMAIN_GDS | \
AMDGPU_GEM_DOMAIN_GWS | \
- AMDGPU_GEM_DOMAIN_OA)
+ AMDGPU_GEM_DOMAIN_OA | \
+ AMDGPU_GEM_DOMAIN_DOORBELL)
/* Flag that CPU access will be required for the case of VRAM domain */
#define AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED (1 << 0)
@@ -145,7 +150,7 @@ extern "C" {
*/
#define AMDGPU_GEM_CREATE_DISCARDABLE (1 << 12)
/* Flag that BO is shared coherently between multiple devices or CPU threads.
- * May depend on GPU instructions to flush caches explicitly
+ * May depend on GPU instructions to flush caches to system scope explicitly.
*
* This influences the choice of MTYPE in the PTEs on GFXv9 and later GPUs and
* may override the MTYPE selected in AMDGPU_VA_OP_MAP.
@@ -158,6 +163,14 @@ extern "C" {
* may override the MTYPE selected in AMDGPU_VA_OP_MAP.
*/
#define AMDGPU_GEM_CREATE_UNCACHED (1 << 14)
+/* Flag that BO should be coherent across devices when using device-level
+ * atomics. May depend on GPU instructions to flush caches to device scope
+ * explicitly, promoting them to system scope automatically.
+ *
+ * This influences the choice of MTYPE in the PTEs on GFXv9 and later GPUs and
+ * may override the MTYPE selected in AMDGPU_VA_OP_MAP.
+ */
+#define AMDGPU_GEM_CREATE_EXT_COHERENT (1 << 15)
struct drm_amdgpu_gem_create_in {
/** the requested memory size */
@@ -236,9 +249,9 @@ union drm_amdgpu_bo_list {
/* unknown cause */
#define AMDGPU_CTX_UNKNOWN_RESET 3
-/* indicate gpu reset occured after ctx created */
+/* indicate gpu reset occurred after ctx created */
#define AMDGPU_CTX_QUERY2_FLAGS_RESET (1<<0)
-/* indicate vram lost occured after ctx created */
+/* indicate vram lost occurred after ctx created */
#define AMDGPU_CTX_QUERY2_FLAGS_VRAMLOST (1<<1)
/* indicate some job from this context once cause gpu hang */
#define AMDGPU_CTX_QUERY2_FLAGS_GUILTY (1<<2)
@@ -259,13 +272,6 @@ union drm_amdgpu_bo_list {
*/
#define AMDGPU_CTX_PRIORITY_HIGH 512
#define AMDGPU_CTX_PRIORITY_VERY_HIGH 1023
-/* select a stable profiling pstate for perfmon tools */
-#define AMDGPU_CTX_STABLE_PSTATE_FLAGS_MASK 0xf
-#define AMDGPU_CTX_STABLE_PSTATE_NONE 0
-#define AMDGPU_CTX_STABLE_PSTATE_STANDARD 1
-#define AMDGPU_CTX_STABLE_PSTATE_MIN_SCLK 2
-#define AMDGPU_CTX_STABLE_PSTATE_MIN_MCLK 3
-#define AMDGPU_CTX_STABLE_PSTATE_PEAK 4
/* select a stable profiling pstate for perfmon tools */
#define AMDGPU_CTX_STABLE_PSTATE_FLAGS_MASK 0xf
@@ -588,7 +594,8 @@ struct drm_amdgpu_gem_va {
*/
#define AMDGPU_HW_IP_VCN_ENC 7
#define AMDGPU_HW_IP_VCN_JPEG 8
-#define AMDGPU_HW_IP_NUM 9
+#define AMDGPU_HW_IP_VPE 9
+#define AMDGPU_HW_IP_NUM 10
#define AMDGPU_HW_IP_INSTANCE_MAX_COUNT 1
@@ -799,6 +806,8 @@ struct drm_amdgpu_cs_chunk_cp_gfx_shadow {
#define AMDGPU_INFO_FW_MES 0x1a
/* Subquery id: Query IMU firmware version */
#define AMDGPU_INFO_FW_IMU 0x1b
+ /* Subquery id: Query VPE firmware version */
+ #define AMDGPU_INFO_FW_VPE 0x1c
/* number of bytes moved for TTM migration */
#define AMDGPU_INFO_NUM_BYTES_MOVED 0x0f
@@ -897,6 +906,8 @@ struct drm_amdgpu_cs_chunk_cp_gfx_shadow {
#define AMDGPU_INFO_VIDEO_CAPS_ENCODE 1
/* Query the max number of IBs per gang per submission */
#define AMDGPU_INFO_MAX_IBS 0x22
+/* query last page fault info */
+#define AMDGPU_INFO_GPUVM_FAULT 0x23
#define AMDGPU_INFO_MMR_SE_INDEX_SHIFT 0
#define AMDGPU_INFO_MMR_SE_INDEX_MASK 0xff
@@ -1222,6 +1233,20 @@ struct drm_amdgpu_info_video_caps {
struct drm_amdgpu_info_video_codec_info codec_info[AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_COUNT];
};
+#define AMDGPU_VMHUB_TYPE_MASK 0xff
+#define AMDGPU_VMHUB_TYPE_SHIFT 0
+#define AMDGPU_VMHUB_TYPE_GFX 0
+#define AMDGPU_VMHUB_TYPE_MM0 1
+#define AMDGPU_VMHUB_TYPE_MM1 2
+#define AMDGPU_VMHUB_IDX_MASK 0xff00
+#define AMDGPU_VMHUB_IDX_SHIFT 8
+
+struct drm_amdgpu_info_gpuvm_fault {
+ __u64 addr;
+ __u32 status;
+ __u32 vmhub;
+};
+
/*
* Supported GPU families
*/
@@ -1240,6 +1265,7 @@ struct drm_amdgpu_info_video_caps {
#define AMDGPU_FAMILY_GC_11_0_1 148 /* GC 11.0.1 */
#define AMDGPU_FAMILY_GC_10_3_6 149 /* GC 10.3.6 */
#define AMDGPU_FAMILY_GC_10_3_7 151 /* GC 10.3.7 */
+#define AMDGPU_FAMILY_GC_11_5_0 150 /* GC 11.5.0 */
#if defined(__cplusplus)
}
--
2.25.1
^ permalink raw reply related [flat|nested] 7+ messages in thread* [igt-dev] [PATCH 2/2] tests/amdgpu: add VPE tests 2023-11-09 7:07 [igt-dev] [PATCH 1/2] include/drm-uapi/amdgpu_drm.h: update amdgpu_drm.h Lang Yu @ 2023-11-09 7:07 ` Lang Yu 2023-11-09 11:13 ` Kamil Konieczny 2023-11-09 8:24 ` [igt-dev] ✗ Fi.CI.BUILD: failure for series starting with [1/2] include/drm-uapi/amdgpu_drm.h: update amdgpu_drm.h Patchwork 2023-11-09 11:08 ` [igt-dev] [PATCH 1/2] " Kamil Konieczny 2 siblings, 1 reply; 7+ messages in thread From: Lang Yu @ 2023-11-09 7:07 UTC (permalink / raw) To: igt-dev; +Cc: Alex Deucher, Lang Yu Add tests for Video Processing Engine, including fence and blit tests. Signed-off-by: Lang Yu <Lang.Yu@amd.com> --- lib/amdgpu/amd_mmd_shared.h | 5 + tests/amdgpu/amd_vpe.c | 254 ++++++++++++++++++++++++++++++++++++ tests/amdgpu/meson.build | 1 + 3 files changed, 260 insertions(+) create mode 100644 tests/amdgpu/amd_vpe.c diff --git a/lib/amdgpu/amd_mmd_shared.h b/lib/amdgpu/amd_mmd_shared.h index 82e732509..14f9ecb4d 100644 --- a/lib/amdgpu/amd_mmd_shared.h +++ b/lib/amdgpu/amd_mmd_shared.h @@ -54,6 +54,11 @@ struct mmd_context { bool enc_ring; /* jpeg */ bool jpeg_direct_reg; + + /*vpe*/ + uint32_t vpe_ip_version_major; + uint32_t vpe_ip_version_minor; + bool vpe_ring; }; struct amdgpu_mmd_bo { diff --git a/tests/amdgpu/amd_vpe.c b/tests/amdgpu/amd_vpe.c new file mode 100644 index 000000000..4aeb7395e --- /dev/null +++ b/tests/amdgpu/amd_vpe.c @@ -0,0 +1,254 @@ +// SPDX-License-Identifier: MIT +/* + * Copyright 2023 Advanced Micro Devices, Inc. + */ +#include "igt.h" + +#include <amdgpu.h> +#include "amdgpu_drm.h" +#include "lib/amdgpu/amd_mmd_shared.h" + +#define IB_SIZE 4096 +#define MAX_RESOURCES 16 + +#define PLANE_WIDTH 1024 +#define PLANE_HEIGHT 256 +#define PLANE_SIZE (PLANE_WIDTH*PLANE_HEIGHT*4) + +#define SRC_PLANE_PATTERN 0x12345678 +#define DST_PLANE_PATTERN 0xff123456 + +static uint32_t vpe_descriptor[] = { +0x00000001, 0x33002200, 0xff000021, 0x00000003, 0x33002234, 0xff000021, 0x33002328, 0xff000021, +0x33002384, 0xff000021, 0x330023c0, 0xff000021, +}; + +static uint32_t vpe_config[] = { +0x00000002, 0x00000000, 0xbeefbe00, 0xff005678, 0x000003ff, 0x00000000, 0x00ff43ff, 0x00000000, +0xbeefbe00, 0xff005679, 0x000003ff, 0x00000000, 0x00ff43ff, 0x003b0003, 0x00047808, 0x00000809, +0x0004780c, 0x000000e4, 0x00047d10, 0x00000009, 0x00047d14, 0x00000101, 0x00047d18, 0x00000000, +0x00047d1c, 0x00000000, 0x00047d20, 0x00000000, 0x00047d24, 0x0001f010, 0x00047d28, 0x0001f010, +0x00047d2c, 0x0001f010, 0x00547ee9, 0x00002000, 0x00000000, 0x20000000, 0x00000000, 0x00000000, +0x00002000, 0x00047ee4, 0x00000001, 0x00047ee0, 0x00000000, 0x00047f24, 0x00000000, 0x00047fc4, +0x00000000, 0x00547f05, 0x00002000, 0x00000000, 0x20000000, 0x00000000, 0x00000000, 0x00002000, +0x00047f00, 0x00000001, 0x00049700, 0x00000000, 0x00049704, 0x0000000f, 0x00049f30, 0x00000000, +0x00049708, 0x00000000, 0x0004970c, 0xffff0462, 0x0004a208, 0x00000000, 0x0004971c, 0x00000000, +0x00047fc0, 0x0001f000, 0x00150003, 0x00047df8, 0x00000001, 0x00047dfc, 0x00000001, 0x00047da8, +0x00000006, 0x00047e18, 0x00000000, 0x0004970c, 0xffff0422, 0x00049710, 0x0001f000, 0x00049714, +0x0001f000, 0x00049718, 0x0001f000, 0x00049720, 0x00000000, 0x00049724, 0x00000000, 0x00049728, +0x00000000, 0x000d0003, 0x00047810, 0x00000000, 0x00047814, 0x01000400, 0x00047818, 0x00000000, +0x0004781c, 0x01000400, 0x00047e00, 0x00000000, 0x00047e04, 0x01000400, 0x00047e08, 0x01000400, +0x00280003, 0x00047820, 0x00000036, 0x00047824, 0x0960f015, 0x0004972c, 0x00000014, 0x0004972c, +0x00000014, 0x0004972c, 0x00000014, 0x00049f90, 0x00000000, 0x00049f94, 0x00000001, 0x00549f99, +0x00002000, 0x00000000, 0x20000000, 0x00000000, 0x00000000, 0x00002000, 0x00049850, 0x00000000, +0x00049f34, 0x00000000, 0x00049f38, 0x02fff000, 0x00049f3c, 0x00fff000, 0x00049f40, 0x00fff000, +0x0004aba0, 0xffff0000, 0x0004aba0, 0xffff0000, 0x0004aacc, 0x00000000, 0x0004aad4, 0x00000013, +0x0004aad4, 0x00000013, +}; + +static bool is_vpe_tests_enabled(amdgpu_device_handle device_handle, + struct mmd_context *context) +{ + struct drm_amdgpu_info_hw_ip info; + int r; + + r = amdgpu_query_hw_ip_info(device_handle, AMDGPU_HW_IP_VPE, 0, &info); + igt_assert_eq(r, 0); + + context->vpe_ip_version_major = info.hw_ip_version_major; + context->vpe_ip_version_minor = info.hw_ip_version_minor; + context->vpe_ring = !!info.available_rings; + + if (!context->vpe_ring) { + igt_info("VPE no available rings"); + igt_info("VPE fence test disable"); + igt_info("VPE blit test disable"); + } + + return true; +} + +static void amdgpu_cs_vpe_fence(amdgpu_device_handle device_handle, + struct mmd_context *context); +static void amdgpu_cs_vpe_blit(amdgpu_device_handle device_handle, + struct mmd_context *context); + +igt_main +{ + struct mmd_context context = {}; + amdgpu_device_handle device; + int fd = -1; + + igt_fixture { + uint32_t major, minor; + int r; + + fd = drm_open_driver(DRIVER_AMDGPU); + igt_require(fd > 0); + + r = amdgpu_device_initialize(fd, &major, &minor, &device); + igt_require(r == 0); + + igt_info("Initialized amdgpu, driver version %d.%d\n", major, minor); + + r = mmd_context_init(device, &context); + igt_require(r == 0); + + igt_skip_on(!is_vpe_tests_enabled(device, &context)); + } + + igt_describe("Test VPE fence"); + igt_subtest("vpe-fence-test") + amdgpu_cs_vpe_fence(device, &context); + + igt_describe("Test VPE blit"); + igt_subtest("vpe-blit-test") + amdgpu_cs_vpe_blit(device, &context); + + igt_fixture { + amdgpu_device_deinitialize(device); + drm_close_driver(fd); + } + +} + +static void amdgpu_cs_vpe_fence(amdgpu_device_handle device_handle, + struct mmd_context *context) +{ + const uint32_t test_pattern = 0xdeadbeef; + uint32_t *ib_cpu = context->ib_cpu; + struct amdgpu_mmd_bo test_bo; + int r; + + context->num_resources = 0; + alloc_resource(device_handle, &test_bo, 4096, AMDGPU_GEM_DOMAIN_GTT); + context->resources[context->num_resources++] = test_bo.handle; + + r = amdgpu_bo_cpu_map(test_bo.handle, (void **)&test_bo.ptr); + igt_assert_eq(r, 0); + + memset(test_bo.ptr, 0, 4096); + + memset(ib_cpu, 0, IB_SIZE); + + ib_cpu[0] = 0x5; + ib_cpu[1] = 0xfffffffc & test_bo.addr; + ib_cpu[2] = (0xffffffff00000000 & test_bo.addr) >> 32; + ib_cpu[3] = test_pattern; + ib_cpu[4] = 0x0; + ib_cpu[5] = 0x0; + ib_cpu[6] = 0x0; + ib_cpu[7] = 0x0; + + context->resources[context->num_resources++] = context->ib_handle; + + r = submit(device_handle, context, 8, AMDGPU_HW_IP_VPE); + igt_assert_eq(r, 0); + + igt_assert_eq(((uint32_t *)test_bo.ptr)[0], test_pattern); + + r = amdgpu_bo_cpu_unmap(test_bo.handle); + igt_assert_eq(r, 0); + + free_resource(&test_bo); +} + +// a in byte 0, b in byte 1, g in byte 2, r in byte 3 +static void create_rgba8888(void *addr, uint32_t width, uint32_t height) +{ + uint32_t *ptr = (uint32_t *)addr; + + for (int i = 0; i < height; i++) { + for (int j = 0; j < width; j++) + ptr[j] = SRC_PLANE_PATTERN; + ptr += width; + } +} +// b in byte 0, g in byte 1, r in byte 2, a in byte 3 +static int check_argb8888(void *addr, uint32_t width, uint32_t height) +{ + uint32_t *ptr = (uint32_t *)addr; + + for (int i = 0; i < height; i++) { + for (int j = 0; j < width; j++) + if (ptr[j] != DST_PLANE_PATTERN) + return 1; + ptr += width; + } + + return 0; +} + +static void amdgpu_cs_vpe_blit(amdgpu_device_handle device_handle, + struct mmd_context *context) +{ + const uint32_t vpep_config_offsets[] = {0x34, 0x128, 0x184, 0x1c0}; + struct amdgpu_mmd_bo vpe_config_bo, src_plane_bo, dst_plane_bo; + int r; + + context->num_resources = 0; + + alloc_resource(device_handle, &vpe_config_bo, sizeof(vpe_config), AMDGPU_GEM_DOMAIN_GTT); + alloc_resource(device_handle, &src_plane_bo, PLANE_SIZE, AMDGPU_GEM_DOMAIN_GTT); + alloc_resource(device_handle, &dst_plane_bo, PLANE_SIZE, AMDGPU_GEM_DOMAIN_GTT); + + r = amdgpu_bo_cpu_map(vpe_config_bo.handle, (void **)&vpe_config_bo.ptr); + igt_assert_eq(r, 0); + + r = amdgpu_bo_cpu_map(src_plane_bo.handle, (void **)&src_plane_bo.ptr); + igt_assert_eq(r, 0); + + r = amdgpu_bo_cpu_map(dst_plane_bo.handle, (void **)&dst_plane_bo.ptr); + igt_assert_eq(r, 0); + + context->resources[context->num_resources++] = vpe_config_bo.handle; + context->resources[context->num_resources++] = src_plane_bo.handle; + context->resources[context->num_resources++] = dst_plane_bo.handle; + + // plane config gpu addr + *(uint64_t *)(vpe_descriptor + 1) = vpe_config_bo.addr; + // vpep config0 gpu addr + *(uint64_t *)(vpe_descriptor + 4) = vpe_config_bo.addr + vpep_config_offsets[0]; + // vpep config1 gpu addr + *(uint64_t *)(vpe_descriptor + 6) = vpe_config_bo.addr + vpep_config_offsets[1]; + // vpep config2 gpu addr + *(uint64_t *)(vpe_descriptor + 8) = vpe_config_bo.addr + vpep_config_offsets[2]; + // vpep config3 gpu addr + *(uint64_t *)(vpe_descriptor + 10) = vpe_config_bo.addr + vpep_config_offsets[3]; + + memset(src_plane_bo.ptr, 0, PLANE_SIZE); + memset(dst_plane_bo.ptr, 0, PLANE_SIZE); + create_rgba8888(src_plane_bo.ptr, PLANE_WIDTH, PLANE_HEIGHT); + + /* gpu address of src */ + *(uint64_t *)(vpe_config + 2) = src_plane_bo.addr; + /* gpu address of dst */ + *(uint64_t *)(vpe_config + 8) = dst_plane_bo.addr; + + memset(vpe_config_bo.ptr, 0, sizeof(vpe_config)); + memcpy(vpe_config_bo.ptr, vpe_config, sizeof(vpe_config)); + + memset(context->ib_cpu, 0, IB_SIZE); + memcpy(context->ib_cpu, vpe_descriptor, sizeof(vpe_descriptor)); + + context->resources[context->num_resources++] = context->ib_handle; + + r = submit(device_handle, context, sizeof(vpe_descriptor)/4, AMDGPU_HW_IP_VPE); + igt_assert_eq(r, 0); + + r = check_argb8888(dst_plane_bo.ptr, PLANE_WIDTH, PLANE_HEIGHT); + igt_assert_eq(r, 0); + + r = amdgpu_bo_cpu_unmap(vpe_config_bo.handle); + igt_assert_eq(r, 0); + + r = amdgpu_bo_cpu_unmap(src_plane_bo.handle); + igt_assert_eq(r, 0); + + r = amdgpu_bo_cpu_unmap(dst_plane_bo.handle); + igt_assert_eq(r, 0); + + free_resource(&vpe_config_bo); + free_resource(&src_plane_bo); + free_resource(&dst_plane_bo); +} diff --git a/tests/amdgpu/meson.build b/tests/amdgpu/meson.build index f52fc3645..e82e02701 100644 --- a/tests/amdgpu/meson.build +++ b/tests/amdgpu/meson.build @@ -36,6 +36,7 @@ if libdrm_amdgpu.found() 'amd_vrr_range', 'amd_mall', 'amd_odm', + 'amd_vpe', ] if libdrm_amdgpu.version().version_compare('> 2.4.97') amdgpu_progs +=[ 'amd_syncobj', ] -- 2.25.1 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [igt-dev] [PATCH 2/2] tests/amdgpu: add VPE tests 2023-11-09 7:07 ` [igt-dev] [PATCH 2/2] tests/amdgpu: add VPE tests Lang Yu @ 2023-11-09 11:13 ` Kamil Konieczny 2023-11-10 2:46 ` Yu, Lang 0 siblings, 1 reply; 7+ messages in thread From: Kamil Konieczny @ 2023-11-09 11:13 UTC (permalink / raw) To: igt-dev; +Cc: Alex Deucher, Lang Yu Hi Lang, On 2023-11-09 at 15:07:35 +0800, Lang Yu wrote: > Add tests for Video Processing Engine, > including fence and blit tests. > > Signed-off-by: Lang Yu <Lang.Yu@amd.com> > --- > lib/amdgpu/amd_mmd_shared.h | 5 + > tests/amdgpu/amd_vpe.c | 254 ++++++++++++++++++++++++++++++++++++ > tests/amdgpu/meson.build | 1 + > 3 files changed, 260 insertions(+) > create mode 100644 tests/amdgpu/amd_vpe.c > > diff --git a/lib/amdgpu/amd_mmd_shared.h b/lib/amdgpu/amd_mmd_shared.h > index 82e732509..14f9ecb4d 100644 > --- a/lib/amdgpu/amd_mmd_shared.h > +++ b/lib/amdgpu/amd_mmd_shared.h > @@ -54,6 +54,11 @@ struct mmd_context { > bool enc_ring; > /* jpeg */ > bool jpeg_direct_reg; > + > + /*vpe*/ > + uint32_t vpe_ip_version_major; > + uint32_t vpe_ip_version_minor; > + bool vpe_ring; > }; > > struct amdgpu_mmd_bo { > diff --git a/tests/amdgpu/amd_vpe.c b/tests/amdgpu/amd_vpe.c > new file mode 100644 > index 000000000..4aeb7395e > --- /dev/null > +++ b/tests/amdgpu/amd_vpe.c > @@ -0,0 +1,254 @@ > +// SPDX-License-Identifier: MIT > +/* > + * Copyright 2023 Advanced Micro Devices, Inc. > + */ > +#include "igt.h" Put this after "amdgpu_drm.h" - first goes system includes, then igt ones, all in alphabetical order. > + > +#include <amdgpu.h> Put newline here. > +#include "amdgpu_drm.h" > +#include "lib/amdgpu/amd_mmd_shared.h" Put here global test description: IGT_TEST_DESCRIPTION("Your test description") > + > +#define IB_SIZE 4096 > +#define MAX_RESOURCES 16 > + > +#define PLANE_WIDTH 1024 > +#define PLANE_HEIGHT 256 > +#define PLANE_SIZE (PLANE_WIDTH*PLANE_HEIGHT*4) > + > +#define SRC_PLANE_PATTERN 0x12345678 > +#define DST_PLANE_PATTERN 0xff123456 > + > +static uint32_t vpe_descriptor[] = { > +0x00000001, 0x33002200, 0xff000021, 0x00000003, 0x33002234, 0xff000021, 0x33002328, 0xff000021, > +0x33002384, 0xff000021, 0x330023c0, 0xff000021, > +}; > + > +static uint32_t vpe_config[] = { > +0x00000002, 0x00000000, 0xbeefbe00, 0xff005678, 0x000003ff, 0x00000000, 0x00ff43ff, 0x00000000, > +0xbeefbe00, 0xff005679, 0x000003ff, 0x00000000, 0x00ff43ff, 0x003b0003, 0x00047808, 0x00000809, > +0x0004780c, 0x000000e4, 0x00047d10, 0x00000009, 0x00047d14, 0x00000101, 0x00047d18, 0x00000000, > +0x00047d1c, 0x00000000, 0x00047d20, 0x00000000, 0x00047d24, 0x0001f010, 0x00047d28, 0x0001f010, > +0x00047d2c, 0x0001f010, 0x00547ee9, 0x00002000, 0x00000000, 0x20000000, 0x00000000, 0x00000000, > +0x00002000, 0x00047ee4, 0x00000001, 0x00047ee0, 0x00000000, 0x00047f24, 0x00000000, 0x00047fc4, > +0x00000000, 0x00547f05, 0x00002000, 0x00000000, 0x20000000, 0x00000000, 0x00000000, 0x00002000, > +0x00047f00, 0x00000001, 0x00049700, 0x00000000, 0x00049704, 0x0000000f, 0x00049f30, 0x00000000, > +0x00049708, 0x00000000, 0x0004970c, 0xffff0462, 0x0004a208, 0x00000000, 0x0004971c, 0x00000000, > +0x00047fc0, 0x0001f000, 0x00150003, 0x00047df8, 0x00000001, 0x00047dfc, 0x00000001, 0x00047da8, > +0x00000006, 0x00047e18, 0x00000000, 0x0004970c, 0xffff0422, 0x00049710, 0x0001f000, 0x00049714, > +0x0001f000, 0x00049718, 0x0001f000, 0x00049720, 0x00000000, 0x00049724, 0x00000000, 0x00049728, > +0x00000000, 0x000d0003, 0x00047810, 0x00000000, 0x00047814, 0x01000400, 0x00047818, 0x00000000, > +0x0004781c, 0x01000400, 0x00047e00, 0x00000000, 0x00047e04, 0x01000400, 0x00047e08, 0x01000400, > +0x00280003, 0x00047820, 0x00000036, 0x00047824, 0x0960f015, 0x0004972c, 0x00000014, 0x0004972c, > +0x00000014, 0x0004972c, 0x00000014, 0x00049f90, 0x00000000, 0x00049f94, 0x00000001, 0x00549f99, > +0x00002000, 0x00000000, 0x20000000, 0x00000000, 0x00000000, 0x00002000, 0x00049850, 0x00000000, > +0x00049f34, 0x00000000, 0x00049f38, 0x02fff000, 0x00049f3c, 0x00fff000, 0x00049f40, 0x00fff000, > +0x0004aba0, 0xffff0000, 0x0004aba0, 0xffff0000, 0x0004aacc, 0x00000000, 0x0004aad4, 0x00000013, > +0x0004aad4, 0x00000013, > +}; > + > +static bool is_vpe_tests_enabled(amdgpu_device_handle device_handle, > + struct mmd_context *context) > +{ > + struct drm_amdgpu_info_hw_ip info; > + int r; > + > + r = amdgpu_query_hw_ip_info(device_handle, AMDGPU_HW_IP_VPE, 0, &info); > + igt_assert_eq(r, 0); > + > + context->vpe_ip_version_major = info.hw_ip_version_major; > + context->vpe_ip_version_minor = info.hw_ip_version_minor; > + context->vpe_ring = !!info.available_rings; > + > + if (!context->vpe_ring) { > + igt_info("VPE no available rings"); > + igt_info("VPE fence test disable"); > + igt_info("VPE blit test disable"); > + } > + > + return true; > +} > + > +static void amdgpu_cs_vpe_fence(amdgpu_device_handle device_handle, > + struct mmd_context *context); > +static void amdgpu_cs_vpe_blit(amdgpu_device_handle device_handle, > + struct mmd_context *context); > + > +igt_main Main is useally last one, then you don't need to declare called functions. Regards, Kamil > +{ > + struct mmd_context context = {}; > + amdgpu_device_handle device; > + int fd = -1; > + > + igt_fixture { > + uint32_t major, minor; > + int r; > + > + fd = drm_open_driver(DRIVER_AMDGPU); > + igt_require(fd > 0); > + > + r = amdgpu_device_initialize(fd, &major, &minor, &device); > + igt_require(r == 0); > + > + igt_info("Initialized amdgpu, driver version %d.%d\n", major, minor); > + > + r = mmd_context_init(device, &context); > + igt_require(r == 0); > + > + igt_skip_on(!is_vpe_tests_enabled(device, &context)); > + } > + > + igt_describe("Test VPE fence"); > + igt_subtest("vpe-fence-test") > + amdgpu_cs_vpe_fence(device, &context); > + > + igt_describe("Test VPE blit"); > + igt_subtest("vpe-blit-test") > + amdgpu_cs_vpe_blit(device, &context); > + > + igt_fixture { > + amdgpu_device_deinitialize(device); > + drm_close_driver(fd); > + } > + > +} > + > +static void amdgpu_cs_vpe_fence(amdgpu_device_handle device_handle, > + struct mmd_context *context) > +{ > + const uint32_t test_pattern = 0xdeadbeef; > + uint32_t *ib_cpu = context->ib_cpu; > + struct amdgpu_mmd_bo test_bo; > + int r; > + > + context->num_resources = 0; > + alloc_resource(device_handle, &test_bo, 4096, AMDGPU_GEM_DOMAIN_GTT); > + context->resources[context->num_resources++] = test_bo.handle; > + > + r = amdgpu_bo_cpu_map(test_bo.handle, (void **)&test_bo.ptr); > + igt_assert_eq(r, 0); > + > + memset(test_bo.ptr, 0, 4096); > + > + memset(ib_cpu, 0, IB_SIZE); > + > + ib_cpu[0] = 0x5; > + ib_cpu[1] = 0xfffffffc & test_bo.addr; > + ib_cpu[2] = (0xffffffff00000000 & test_bo.addr) >> 32; > + ib_cpu[3] = test_pattern; > + ib_cpu[4] = 0x0; > + ib_cpu[5] = 0x0; > + ib_cpu[6] = 0x0; > + ib_cpu[7] = 0x0; > + > + context->resources[context->num_resources++] = context->ib_handle; > + > + r = submit(device_handle, context, 8, AMDGPU_HW_IP_VPE); > + igt_assert_eq(r, 0); > + > + igt_assert_eq(((uint32_t *)test_bo.ptr)[0], test_pattern); > + > + r = amdgpu_bo_cpu_unmap(test_bo.handle); > + igt_assert_eq(r, 0); > + > + free_resource(&test_bo); > +} > + > +// a in byte 0, b in byte 1, g in byte 2, r in byte 3 > +static void create_rgba8888(void *addr, uint32_t width, uint32_t height) > +{ > + uint32_t *ptr = (uint32_t *)addr; > + > + for (int i = 0; i < height; i++) { > + for (int j = 0; j < width; j++) > + ptr[j] = SRC_PLANE_PATTERN; > + ptr += width; > + } > +} > +// b in byte 0, g in byte 1, r in byte 2, a in byte 3 > +static int check_argb8888(void *addr, uint32_t width, uint32_t height) > +{ > + uint32_t *ptr = (uint32_t *)addr; > + > + for (int i = 0; i < height; i++) { > + for (int j = 0; j < width; j++) > + if (ptr[j] != DST_PLANE_PATTERN) > + return 1; > + ptr += width; > + } > + > + return 0; > +} > + > +static void amdgpu_cs_vpe_blit(amdgpu_device_handle device_handle, > + struct mmd_context *context) > +{ > + const uint32_t vpep_config_offsets[] = {0x34, 0x128, 0x184, 0x1c0}; > + struct amdgpu_mmd_bo vpe_config_bo, src_plane_bo, dst_plane_bo; > + int r; > + > + context->num_resources = 0; > + > + alloc_resource(device_handle, &vpe_config_bo, sizeof(vpe_config), AMDGPU_GEM_DOMAIN_GTT); > + alloc_resource(device_handle, &src_plane_bo, PLANE_SIZE, AMDGPU_GEM_DOMAIN_GTT); > + alloc_resource(device_handle, &dst_plane_bo, PLANE_SIZE, AMDGPU_GEM_DOMAIN_GTT); > + > + r = amdgpu_bo_cpu_map(vpe_config_bo.handle, (void **)&vpe_config_bo.ptr); > + igt_assert_eq(r, 0); > + > + r = amdgpu_bo_cpu_map(src_plane_bo.handle, (void **)&src_plane_bo.ptr); > + igt_assert_eq(r, 0); > + > + r = amdgpu_bo_cpu_map(dst_plane_bo.handle, (void **)&dst_plane_bo.ptr); > + igt_assert_eq(r, 0); > + > + context->resources[context->num_resources++] = vpe_config_bo.handle; > + context->resources[context->num_resources++] = src_plane_bo.handle; > + context->resources[context->num_resources++] = dst_plane_bo.handle; > + > + // plane config gpu addr > + *(uint64_t *)(vpe_descriptor + 1) = vpe_config_bo.addr; > + // vpep config0 gpu addr > + *(uint64_t *)(vpe_descriptor + 4) = vpe_config_bo.addr + vpep_config_offsets[0]; > + // vpep config1 gpu addr > + *(uint64_t *)(vpe_descriptor + 6) = vpe_config_bo.addr + vpep_config_offsets[1]; > + // vpep config2 gpu addr > + *(uint64_t *)(vpe_descriptor + 8) = vpe_config_bo.addr + vpep_config_offsets[2]; > + // vpep config3 gpu addr > + *(uint64_t *)(vpe_descriptor + 10) = vpe_config_bo.addr + vpep_config_offsets[3]; > + > + memset(src_plane_bo.ptr, 0, PLANE_SIZE); > + memset(dst_plane_bo.ptr, 0, PLANE_SIZE); > + create_rgba8888(src_plane_bo.ptr, PLANE_WIDTH, PLANE_HEIGHT); > + > + /* gpu address of src */ > + *(uint64_t *)(vpe_config + 2) = src_plane_bo.addr; > + /* gpu address of dst */ > + *(uint64_t *)(vpe_config + 8) = dst_plane_bo.addr; > + > + memset(vpe_config_bo.ptr, 0, sizeof(vpe_config)); > + memcpy(vpe_config_bo.ptr, vpe_config, sizeof(vpe_config)); > + > + memset(context->ib_cpu, 0, IB_SIZE); > + memcpy(context->ib_cpu, vpe_descriptor, sizeof(vpe_descriptor)); > + > + context->resources[context->num_resources++] = context->ib_handle; > + > + r = submit(device_handle, context, sizeof(vpe_descriptor)/4, AMDGPU_HW_IP_VPE); > + igt_assert_eq(r, 0); > + > + r = check_argb8888(dst_plane_bo.ptr, PLANE_WIDTH, PLANE_HEIGHT); > + igt_assert_eq(r, 0); > + > + r = amdgpu_bo_cpu_unmap(vpe_config_bo.handle); > + igt_assert_eq(r, 0); > + > + r = amdgpu_bo_cpu_unmap(src_plane_bo.handle); > + igt_assert_eq(r, 0); > + > + r = amdgpu_bo_cpu_unmap(dst_plane_bo.handle); > + igt_assert_eq(r, 0); > + > + free_resource(&vpe_config_bo); > + free_resource(&src_plane_bo); > + free_resource(&dst_plane_bo); > +} > diff --git a/tests/amdgpu/meson.build b/tests/amdgpu/meson.build > index f52fc3645..e82e02701 100644 > --- a/tests/amdgpu/meson.build > +++ b/tests/amdgpu/meson.build > @@ -36,6 +36,7 @@ if libdrm_amdgpu.found() > 'amd_vrr_range', > 'amd_mall', > 'amd_odm', > + 'amd_vpe', > ] > if libdrm_amdgpu.version().version_compare('> 2.4.97') > amdgpu_progs +=[ 'amd_syncobj', ] > -- > 2.25.1 > ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [igt-dev] [PATCH 2/2] tests/amdgpu: add VPE tests 2023-11-09 11:13 ` Kamil Konieczny @ 2023-11-10 2:46 ` Yu, Lang 0 siblings, 0 replies; 7+ messages in thread From: Yu, Lang @ 2023-11-10 2:46 UTC (permalink / raw) To: Kamil Konieczny, igt-dev@lists.freedesktop.org; +Cc: Deucher, Alexander [AMD Official Use Only - General] >-----Original Message----- >From: Kamil Konieczny <kamil.konieczny@linux.intel.com> >Sent: Thursday, November 9, 2023 7:14 PM >To: igt-dev@lists.freedesktop.org >Cc: Yu, Lang <Lang.Yu@amd.com>; Deucher, Alexander ><Alexander.Deucher@amd.com> >Subject: Re: [igt-dev] [PATCH 2/2] tests/amdgpu: add VPE tests > >Hi Lang, >On 2023-11-09 at 15:07:35 +0800, Lang Yu wrote: >> Add tests for Video Processing Engine, including fence and blit tests. >> >> Signed-off-by: Lang Yu <Lang.Yu@amd.com> >> --- >> lib/amdgpu/amd_mmd_shared.h | 5 + >> tests/amdgpu/amd_vpe.c | 254 ++++++++++++++++++++++++++++++++++++ >> tests/amdgpu/meson.build | 1 + >> 3 files changed, 260 insertions(+) >> create mode 100644 tests/amdgpu/amd_vpe.c >> >> diff --git a/lib/amdgpu/amd_mmd_shared.h b/lib/amdgpu/amd_mmd_shared.h >> index 82e732509..14f9ecb4d 100644 >> --- a/lib/amdgpu/amd_mmd_shared.h >> +++ b/lib/amdgpu/amd_mmd_shared.h >> @@ -54,6 +54,11 @@ struct mmd_context { >> bool enc_ring; >> /* jpeg */ >> bool jpeg_direct_reg; >> + >> + /*vpe*/ >> + uint32_t vpe_ip_version_major; >> + uint32_t vpe_ip_version_minor; >> + bool vpe_ring; >> }; >> >> struct amdgpu_mmd_bo { >> diff --git a/tests/amdgpu/amd_vpe.c b/tests/amdgpu/amd_vpe.c new file >> mode 100644 index 000000000..4aeb7395e >> --- /dev/null >> +++ b/tests/amdgpu/amd_vpe.c >> @@ -0,0 +1,254 @@ >> +// SPDX-License-Identifier: MIT >> +/* >> + * Copyright 2023 Advanced Micro Devices, Inc. >> + */ >> +#include "igt.h" > >Put this after "amdgpu_drm.h" - first goes system includes, then igt ones, all in >alphabetical order. > >> + >> +#include <amdgpu.h> > >Put newline here. > >> +#include "amdgpu_drm.h" >> +#include "lib/amdgpu/amd_mmd_shared.h" > >Put here global test description: > >IGT_TEST_DESCRIPTION("Your test description") > >> + >> +#define IB_SIZE 4096 >> +#define MAX_RESOURCES 16 >> + >> +#define PLANE_WIDTH 1024 >> +#define PLANE_HEIGHT 256 >> +#define PLANE_SIZE (PLANE_WIDTH*PLANE_HEIGHT*4) >> + >> +#define SRC_PLANE_PATTERN 0x12345678 >> +#define DST_PLANE_PATTERN 0xff123456 >> + >> +static uint32_t vpe_descriptor[] = { >> +0x00000001, 0x33002200, 0xff000021, 0x00000003, 0x33002234, >> +0xff000021, 0x33002328, 0xff000021, 0x33002384, 0xff000021, >> +0x330023c0, 0xff000021, }; >> + >> +static uint32_t vpe_config[] = { >> +0x00000002, 0x00000000, 0xbeefbe00, 0xff005678, 0x000003ff, >> +0x00000000, 0x00ff43ff, 0x00000000, 0xbeefbe00, 0xff005679, >> +0x000003ff, 0x00000000, 0x00ff43ff, 0x003b0003, 0x00047808, >> +0x00000809, 0x0004780c, 0x000000e4, 0x00047d10, 0x00000009, >> +0x00047d14, 0x00000101, 0x00047d18, 0x00000000, 0x00047d1c, >> +0x00000000, 0x00047d20, 0x00000000, 0x00047d24, 0x0001f010, >> +0x00047d28, 0x0001f010, 0x00047d2c, 0x0001f010, 0x00547ee9, >> +0x00002000, 0x00000000, 0x20000000, 0x00000000, 0x00000000, >> +0x00002000, 0x00047ee4, 0x00000001, 0x00047ee0, 0x00000000, >> +0x00047f24, 0x00000000, 0x00047fc4, 0x00000000, 0x00547f05, >> +0x00002000, 0x00000000, 0x20000000, 0x00000000, 0x00000000, >> +0x00002000, 0x00047f00, 0x00000001, 0x00049700, 0x00000000, >> +0x00049704, 0x0000000f, 0x00049f30, 0x00000000, 0x00049708, >> +0x00000000, 0x0004970c, 0xffff0462, 0x0004a208, 0x00000000, >> +0x0004971c, 0x00000000, 0x00047fc0, 0x0001f000, 0x00150003, >> +0x00047df8, 0x00000001, 0x00047dfc, 0x00000001, 0x00047da8, >> +0x00000006, 0x00047e18, 0x00000000, 0x0004970c, 0xffff0422, >> +0x00049710, 0x0001f000, 0x00049714, 0x0001f000, 0x00049718, >> +0x0001f000, 0x00049720, 0x00000000, 0x00049724, 0x00000000, >> +0x00049728, 0x00000000, 0x000d0003, 0x00047810, 0x00000000, >> +0x00047814, 0x01000400, 0x00047818, 0x00000000, 0x0004781c, >> +0x01000400, 0x00047e00, 0x00000000, 0x00047e04, 0x01000400, >> +0x00047e08, 0x01000400, 0x00280003, 0x00047820, 0x00000036, >> +0x00047824, 0x0960f015, 0x0004972c, 0x00000014, 0x0004972c, >> +0x00000014, 0x0004972c, 0x00000014, 0x00049f90, 0x00000000, >> +0x00049f94, 0x00000001, 0x00549f99, 0x00002000, 0x00000000, >> +0x20000000, 0x00000000, 0x00000000, 0x00002000, 0x00049850, >> +0x00000000, 0x00049f34, 0x00000000, 0x00049f38, 0x02fff000, >> +0x00049f3c, 0x00fff000, 0x00049f40, 0x00fff000, 0x0004aba0, >> +0xffff0000, 0x0004aba0, 0xffff0000, 0x0004aacc, 0x00000000, >> +0x0004aad4, 0x00000013, 0x0004aad4, 0x00000013, }; >> + >> +static bool is_vpe_tests_enabled(amdgpu_device_handle device_handle, >> + struct mmd_context *context) { >> + struct drm_amdgpu_info_hw_ip info; >> + int r; >> + >> + r = amdgpu_query_hw_ip_info(device_handle, AMDGPU_HW_IP_VPE, 0, >&info); >> + igt_assert_eq(r, 0); >> + >> + context->vpe_ip_version_major = info.hw_ip_version_major; >> + context->vpe_ip_version_minor = info.hw_ip_version_minor; >> + context->vpe_ring = !!info.available_rings; >> + >> + if (!context->vpe_ring) { >> + igt_info("VPE no available rings"); >> + igt_info("VPE fence test disable"); >> + igt_info("VPE blit test disable"); >> + } >> + >> + return true; >> +} >> + >> +static void amdgpu_cs_vpe_fence(amdgpu_device_handle device_handle, >> + struct mmd_context *context); static >> +void amdgpu_cs_vpe_blit(amdgpu_device_handle device_handle, >> + struct mmd_context *context); >> + >> +igt_main > >Main is useally last one, then you don't need to declare called functions. Thanks, will send v2. Regards, Lang >Regards, >Kamil > >> +{ >> + struct mmd_context context = {}; >> + amdgpu_device_handle device; >> + int fd = -1; >> + >> + igt_fixture { >> + uint32_t major, minor; >> + int r; >> + >> + fd = drm_open_driver(DRIVER_AMDGPU); >> + igt_require(fd > 0); >> + >> + r = amdgpu_device_initialize(fd, &major, &minor, &device); >> + igt_require(r == 0); >> + >> + igt_info("Initialized amdgpu, driver version %d.%d\n", major, >> +minor); >> + >> + r = mmd_context_init(device, &context); >> + igt_require(r == 0); >> + >> + igt_skip_on(!is_vpe_tests_enabled(device, &context)); >> + } >> + >> + igt_describe("Test VPE fence"); >> + igt_subtest("vpe-fence-test") >> + amdgpu_cs_vpe_fence(device, &context); >> + >> + igt_describe("Test VPE blit"); >> + igt_subtest("vpe-blit-test") >> + amdgpu_cs_vpe_blit(device, &context); >> + >> + igt_fixture { >> + amdgpu_device_deinitialize(device); >> + drm_close_driver(fd); >> + } >> + >> +} >> + >> +static void amdgpu_cs_vpe_fence(amdgpu_device_handle device_handle, >> + struct mmd_context *context) { >> + const uint32_t test_pattern = 0xdeadbeef; >> + uint32_t *ib_cpu = context->ib_cpu; >> + struct amdgpu_mmd_bo test_bo; >> + int r; >> + >> + context->num_resources = 0; >> + alloc_resource(device_handle, &test_bo, 4096, >AMDGPU_GEM_DOMAIN_GTT); >> + context->resources[context->num_resources++] = >> + test_bo.handle; >> + >> + r = amdgpu_bo_cpu_map(test_bo.handle, (void **)&test_bo.ptr); >> + igt_assert_eq(r, 0); >> + >> + memset(test_bo.ptr, 0, 4096); >> + >> + memset(ib_cpu, 0, IB_SIZE); >> + >> + ib_cpu[0] = 0x5; >> + ib_cpu[1] = 0xfffffffc & test_bo.addr; >> + ib_cpu[2] = (0xffffffff00000000 & test_bo.addr) >> 32; >> + ib_cpu[3] = test_pattern; >> + ib_cpu[4] = 0x0; >> + ib_cpu[5] = 0x0; >> + ib_cpu[6] = 0x0; >> + ib_cpu[7] = 0x0; >> + >> + context->resources[context->num_resources++] = >> + context->ib_handle; >> + >> + r = submit(device_handle, context, 8, AMDGPU_HW_IP_VPE); >> + igt_assert_eq(r, 0); >> + >> + igt_assert_eq(((uint32_t *)test_bo.ptr)[0], test_pattern); >> + >> + r = amdgpu_bo_cpu_unmap(test_bo.handle); >> + igt_assert_eq(r, 0); >> + >> + free_resource(&test_bo); >> +} >> + >> +// a in byte 0, b in byte 1, g in byte 2, r in byte 3 static void >> +create_rgba8888(void *addr, uint32_t width, uint32_t height) { >> + uint32_t *ptr = (uint32_t *)addr; >> + >> + for (int i = 0; i < height; i++) { >> + for (int j = 0; j < width; j++) >> + ptr[j] = SRC_PLANE_PATTERN; >> + ptr += width; >> + } >> +} >> +// b in byte 0, g in byte 1, r in byte 2, a in byte 3 static int >> +check_argb8888(void *addr, uint32_t width, uint32_t height) { >> + uint32_t *ptr = (uint32_t *)addr; >> + >> + for (int i = 0; i < height; i++) { >> + for (int j = 0; j < width; j++) >> + if (ptr[j] != DST_PLANE_PATTERN) >> + return 1; >> + ptr += width; >> + } >> + >> + return 0; >> +} >> + >> +static void amdgpu_cs_vpe_blit(amdgpu_device_handle device_handle, >> + struct mmd_context *context) { >> + const uint32_t vpep_config_offsets[] = {0x34, 0x128, 0x184, 0x1c0}; >> + struct amdgpu_mmd_bo vpe_config_bo, src_plane_bo, dst_plane_bo; >> + int r; >> + >> + context->num_resources = 0; >> + >> + alloc_resource(device_handle, &vpe_config_bo, sizeof(vpe_config), >AMDGPU_GEM_DOMAIN_GTT); >> + alloc_resource(device_handle, &src_plane_bo, PLANE_SIZE, >AMDGPU_GEM_DOMAIN_GTT); >> + alloc_resource(device_handle, &dst_plane_bo, PLANE_SIZE, >> + AMDGPU_GEM_DOMAIN_GTT); >> + >> + r = amdgpu_bo_cpu_map(vpe_config_bo.handle, (void >**)&vpe_config_bo.ptr); >> + igt_assert_eq(r, 0); >> + >> + r = amdgpu_bo_cpu_map(src_plane_bo.handle, (void >**)&src_plane_bo.ptr); >> + igt_assert_eq(r, 0); >> + >> + r = amdgpu_bo_cpu_map(dst_plane_bo.handle, (void >**)&dst_plane_bo.ptr); >> + igt_assert_eq(r, 0); >> + >> + context->resources[context->num_resources++] = vpe_config_bo.handle; >> + context->resources[context->num_resources++] = src_plane_bo.handle; >> + context->resources[context->num_resources++] = >> + dst_plane_bo.handle; >> + >> + // plane config gpu addr >> + *(uint64_t *)(vpe_descriptor + 1) = vpe_config_bo.addr; >> + // vpep config0 gpu addr >> + *(uint64_t *)(vpe_descriptor + 4) = vpe_config_bo.addr + >vpep_config_offsets[0]; >> + // vpep config1 gpu addr >> + *(uint64_t *)(vpe_descriptor + 6) = vpe_config_bo.addr + >vpep_config_offsets[1]; >> + // vpep config2 gpu addr >> + *(uint64_t *)(vpe_descriptor + 8) = vpe_config_bo.addr + >vpep_config_offsets[2]; >> + // vpep config3 gpu addr >> + *(uint64_t *)(vpe_descriptor + 10) = vpe_config_bo.addr + >> + vpep_config_offsets[3]; >> + >> + memset(src_plane_bo.ptr, 0, PLANE_SIZE); >> + memset(dst_plane_bo.ptr, 0, PLANE_SIZE); >> + create_rgba8888(src_plane_bo.ptr, PLANE_WIDTH, PLANE_HEIGHT); >> + >> + /* gpu address of src */ >> + *(uint64_t *)(vpe_config + 2) = src_plane_bo.addr; >> + /* gpu address of dst */ >> + *(uint64_t *)(vpe_config + 8) = dst_plane_bo.addr; >> + >> + memset(vpe_config_bo.ptr, 0, sizeof(vpe_config)); >> + memcpy(vpe_config_bo.ptr, vpe_config, sizeof(vpe_config)); >> + >> + memset(context->ib_cpu, 0, IB_SIZE); >> + memcpy(context->ib_cpu, vpe_descriptor, >> + sizeof(vpe_descriptor)); >> + >> + context->resources[context->num_resources++] = >> + context->ib_handle; >> + >> + r = submit(device_handle, context, sizeof(vpe_descriptor)/4, >AMDGPU_HW_IP_VPE); >> + igt_assert_eq(r, 0); >> + >> + r = check_argb8888(dst_plane_bo.ptr, PLANE_WIDTH, PLANE_HEIGHT); >> + igt_assert_eq(r, 0); >> + >> + r = amdgpu_bo_cpu_unmap(vpe_config_bo.handle); >> + igt_assert_eq(r, 0); >> + >> + r = amdgpu_bo_cpu_unmap(src_plane_bo.handle); >> + igt_assert_eq(r, 0); >> + >> + r = amdgpu_bo_cpu_unmap(dst_plane_bo.handle); >> + igt_assert_eq(r, 0); >> + >> + free_resource(&vpe_config_bo); >> + free_resource(&src_plane_bo); >> + free_resource(&dst_plane_bo); } >> diff --git a/tests/amdgpu/meson.build b/tests/amdgpu/meson.build index >> f52fc3645..e82e02701 100644 >> --- a/tests/amdgpu/meson.build >> +++ b/tests/amdgpu/meson.build >> @@ -36,6 +36,7 @@ if libdrm_amdgpu.found() >> 'amd_vrr_range', >> 'amd_mall', >> 'amd_odm', >> + 'amd_vpe', >> ] >> if libdrm_amdgpu.version().version_compare('> 2.4.97') >> amdgpu_progs +=[ 'amd_syncobj', ] >> -- >> 2.25.1 >> ^ permalink raw reply [flat|nested] 7+ messages in thread
* [igt-dev] ✗ Fi.CI.BUILD: failure for series starting with [1/2] include/drm-uapi/amdgpu_drm.h: update amdgpu_drm.h 2023-11-09 7:07 [igt-dev] [PATCH 1/2] include/drm-uapi/amdgpu_drm.h: update amdgpu_drm.h Lang Yu 2023-11-09 7:07 ` [igt-dev] [PATCH 2/2] tests/amdgpu: add VPE tests Lang Yu @ 2023-11-09 8:24 ` Patchwork 2023-11-09 11:08 ` [igt-dev] [PATCH 1/2] " Kamil Konieczny 2 siblings, 0 replies; 7+ messages in thread From: Patchwork @ 2023-11-09 8:24 UTC (permalink / raw) To: Lang Yu; +Cc: igt-dev == Series Details == Series: series starting with [1/2] include/drm-uapi/amdgpu_drm.h: update amdgpu_drm.h URL : https://patchwork.freedesktop.org/series/126174/ State : failure == Summary == Applying: include/drm-uapi/amdgpu_drm.h: update amdgpu_drm.h Applying: tests/amdgpu: add VPE tests Using index info to reconstruct a base tree... M tests/amdgpu/meson.build Falling back to patching base and 3-way merge... Auto-merging tests/amdgpu/meson.build CONFLICT (content): Merge conflict in tests/amdgpu/meson.build Patch failed at 0002 tests/amdgpu: add VPE tests When you have resolved this problem, run "git am --continue". If you prefer to skip this patch, run "git am --skip" instead. To restore the original branch and stop patching, run "git am --abort". ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [igt-dev] [PATCH 1/2] include/drm-uapi/amdgpu_drm.h: update amdgpu_drm.h 2023-11-09 7:07 [igt-dev] [PATCH 1/2] include/drm-uapi/amdgpu_drm.h: update amdgpu_drm.h Lang Yu 2023-11-09 7:07 ` [igt-dev] [PATCH 2/2] tests/amdgpu: add VPE tests Lang Yu 2023-11-09 8:24 ` [igt-dev] ✗ Fi.CI.BUILD: failure for series starting with [1/2] include/drm-uapi/amdgpu_drm.h: update amdgpu_drm.h Patchwork @ 2023-11-09 11:08 ` Kamil Konieczny 2023-11-10 2:45 ` Yu, Lang 2 siblings, 1 reply; 7+ messages in thread From: Kamil Konieczny @ 2023-11-09 11:08 UTC (permalink / raw) To: igt-dev; +Cc: Alex Deucher, Lang Yu Hi Lang, On 2023-11-09 at 15:07:34 +0800, Lang Yu wrote: > Take from https://anongit.freedesktop.org/git/drm/drm.git. > > branch: drm-next > commit: 9ccde17d46554dbb2757c427f2cdf67688701f96 > > Signed-off-by: Lang Yu <Lang.Yu@amd.com> This is already part of igt, see latest i-g-t commit: 63945e20f drm-uapi/amdgpu: sync with drm-next so you can safely drop first patch. Side note: please add i-g-t into subject, so it will look: [PATCH i-g-t 1/2] your_patch_subject_here Regards, Kamil > --- > include/drm-uapi/amdgpu_drm.h | 50 ++++++++++++++++++++++++++--------- > 1 file changed, 38 insertions(+), 12 deletions(-) > > diff --git a/include/drm-uapi/amdgpu_drm.h b/include/drm-uapi/amdgpu_drm.h > index f44e140ad..ad21c613f 100644 > --- a/include/drm-uapi/amdgpu_drm.h > +++ b/include/drm-uapi/amdgpu_drm.h > @@ -94,6 +94,9 @@ extern "C" { > * > * %AMDGPU_GEM_DOMAIN_OA Ordered append, used by 3D or Compute engines > * for appending data. > + * > + * %AMDGPU_GEM_DOMAIN_DOORBELL Doorbell. It is an MMIO region for > + * signalling user mode queues. > */ > #define AMDGPU_GEM_DOMAIN_CPU 0x1 > #define AMDGPU_GEM_DOMAIN_GTT 0x2 > @@ -101,12 +104,14 @@ extern "C" { > #define AMDGPU_GEM_DOMAIN_GDS 0x8 > #define AMDGPU_GEM_DOMAIN_GWS 0x10 > #define AMDGPU_GEM_DOMAIN_OA 0x20 > +#define AMDGPU_GEM_DOMAIN_DOORBELL 0x40 > #define AMDGPU_GEM_DOMAIN_MASK (AMDGPU_GEM_DOMAIN_CPU | \ > AMDGPU_GEM_DOMAIN_GTT | \ > AMDGPU_GEM_DOMAIN_VRAM | \ > AMDGPU_GEM_DOMAIN_GDS | \ > AMDGPU_GEM_DOMAIN_GWS | \ > - AMDGPU_GEM_DOMAIN_OA) > + AMDGPU_GEM_DOMAIN_OA | \ > + AMDGPU_GEM_DOMAIN_DOORBELL) > > /* Flag that CPU access will be required for the case of VRAM domain */ > #define AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED (1 << 0) > @@ -145,7 +150,7 @@ extern "C" { > */ > #define AMDGPU_GEM_CREATE_DISCARDABLE (1 << 12) > /* Flag that BO is shared coherently between multiple devices or CPU threads. > - * May depend on GPU instructions to flush caches explicitly > + * May depend on GPU instructions to flush caches to system scope explicitly. > * > * This influences the choice of MTYPE in the PTEs on GFXv9 and later GPUs and > * may override the MTYPE selected in AMDGPU_VA_OP_MAP. > @@ -158,6 +163,14 @@ extern "C" { > * may override the MTYPE selected in AMDGPU_VA_OP_MAP. > */ > #define AMDGPU_GEM_CREATE_UNCACHED (1 << 14) > +/* Flag that BO should be coherent across devices when using device-level > + * atomics. May depend on GPU instructions to flush caches to device scope > + * explicitly, promoting them to system scope automatically. > + * > + * This influences the choice of MTYPE in the PTEs on GFXv9 and later GPUs and > + * may override the MTYPE selected in AMDGPU_VA_OP_MAP. > + */ > +#define AMDGPU_GEM_CREATE_EXT_COHERENT (1 << 15) > > struct drm_amdgpu_gem_create_in { > /** the requested memory size */ > @@ -236,9 +249,9 @@ union drm_amdgpu_bo_list { > /* unknown cause */ > #define AMDGPU_CTX_UNKNOWN_RESET 3 > > -/* indicate gpu reset occured after ctx created */ > +/* indicate gpu reset occurred after ctx created */ > #define AMDGPU_CTX_QUERY2_FLAGS_RESET (1<<0) > -/* indicate vram lost occured after ctx created */ > +/* indicate vram lost occurred after ctx created */ > #define AMDGPU_CTX_QUERY2_FLAGS_VRAMLOST (1<<1) > /* indicate some job from this context once cause gpu hang */ > #define AMDGPU_CTX_QUERY2_FLAGS_GUILTY (1<<2) > @@ -259,13 +272,6 @@ union drm_amdgpu_bo_list { > */ > #define AMDGPU_CTX_PRIORITY_HIGH 512 > #define AMDGPU_CTX_PRIORITY_VERY_HIGH 1023 > -/* select a stable profiling pstate for perfmon tools */ > -#define AMDGPU_CTX_STABLE_PSTATE_FLAGS_MASK 0xf > -#define AMDGPU_CTX_STABLE_PSTATE_NONE 0 > -#define AMDGPU_CTX_STABLE_PSTATE_STANDARD 1 > -#define AMDGPU_CTX_STABLE_PSTATE_MIN_SCLK 2 > -#define AMDGPU_CTX_STABLE_PSTATE_MIN_MCLK 3 > -#define AMDGPU_CTX_STABLE_PSTATE_PEAK 4 > > /* select a stable profiling pstate for perfmon tools */ > #define AMDGPU_CTX_STABLE_PSTATE_FLAGS_MASK 0xf > @@ -588,7 +594,8 @@ struct drm_amdgpu_gem_va { > */ > #define AMDGPU_HW_IP_VCN_ENC 7 > #define AMDGPU_HW_IP_VCN_JPEG 8 > -#define AMDGPU_HW_IP_NUM 9 > +#define AMDGPU_HW_IP_VPE 9 > +#define AMDGPU_HW_IP_NUM 10 > > #define AMDGPU_HW_IP_INSTANCE_MAX_COUNT 1 > > @@ -799,6 +806,8 @@ struct drm_amdgpu_cs_chunk_cp_gfx_shadow { > #define AMDGPU_INFO_FW_MES 0x1a > /* Subquery id: Query IMU firmware version */ > #define AMDGPU_INFO_FW_IMU 0x1b > + /* Subquery id: Query VPE firmware version */ > + #define AMDGPU_INFO_FW_VPE 0x1c > > /* number of bytes moved for TTM migration */ > #define AMDGPU_INFO_NUM_BYTES_MOVED 0x0f > @@ -897,6 +906,8 @@ struct drm_amdgpu_cs_chunk_cp_gfx_shadow { > #define AMDGPU_INFO_VIDEO_CAPS_ENCODE 1 > /* Query the max number of IBs per gang per submission */ > #define AMDGPU_INFO_MAX_IBS 0x22 > +/* query last page fault info */ > +#define AMDGPU_INFO_GPUVM_FAULT 0x23 > > #define AMDGPU_INFO_MMR_SE_INDEX_SHIFT 0 > #define AMDGPU_INFO_MMR_SE_INDEX_MASK 0xff > @@ -1222,6 +1233,20 @@ struct drm_amdgpu_info_video_caps { > struct drm_amdgpu_info_video_codec_info codec_info[AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_COUNT]; > }; > > +#define AMDGPU_VMHUB_TYPE_MASK 0xff > +#define AMDGPU_VMHUB_TYPE_SHIFT 0 > +#define AMDGPU_VMHUB_TYPE_GFX 0 > +#define AMDGPU_VMHUB_TYPE_MM0 1 > +#define AMDGPU_VMHUB_TYPE_MM1 2 > +#define AMDGPU_VMHUB_IDX_MASK 0xff00 > +#define AMDGPU_VMHUB_IDX_SHIFT 8 > + > +struct drm_amdgpu_info_gpuvm_fault { > + __u64 addr; > + __u32 status; > + __u32 vmhub; > +}; > + > /* > * Supported GPU families > */ > @@ -1240,6 +1265,7 @@ struct drm_amdgpu_info_video_caps { > #define AMDGPU_FAMILY_GC_11_0_1 148 /* GC 11.0.1 */ > #define AMDGPU_FAMILY_GC_10_3_6 149 /* GC 10.3.6 */ > #define AMDGPU_FAMILY_GC_10_3_7 151 /* GC 10.3.7 */ > +#define AMDGPU_FAMILY_GC_11_5_0 150 /* GC 11.5.0 */ > > #if defined(__cplusplus) > } > -- > 2.25.1 > ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [igt-dev] [PATCH 1/2] include/drm-uapi/amdgpu_drm.h: update amdgpu_drm.h 2023-11-09 11:08 ` [igt-dev] [PATCH 1/2] " Kamil Konieczny @ 2023-11-10 2:45 ` Yu, Lang 0 siblings, 0 replies; 7+ messages in thread From: Yu, Lang @ 2023-11-10 2:45 UTC (permalink / raw) To: Kamil Konieczny, igt-dev@lists.freedesktop.org; +Cc: Deucher, Alexander [Public] >-----Original Message----- >From: Kamil Konieczny <kamil.konieczny@linux.intel.com> >Sent: Thursday, November 9, 2023 7:09 PM >To: igt-dev@lists.freedesktop.org >Cc: Yu, Lang <Lang.Yu@amd.com>; Deucher, Alexander ><Alexander.Deucher@amd.com> >Subject: Re: [igt-dev] [PATCH 1/2] include/drm-uapi/amdgpu_drm.h: update >amdgpu_drm.h > >Hi Lang, >On 2023-11-09 at 15:07:34 +0800, Lang Yu wrote: >> Take from https://anongit.freedesktop.org/git/drm/drm.git. >> >> branch: drm-next >> commit: 9ccde17d46554dbb2757c427f2cdf67688701f96 >> >> Signed-off-by: Lang Yu <Lang.Yu@amd.com> > >This is already part of igt, see latest i-g-t >commit: 63945e20f drm-uapi/amdgpu: sync with drm-next > >so you can safely drop first patch. >Side note: please add i-g-t into subject, so it will look: > >[PATCH i-g-t 1/2] your_patch_subject_here Thanks. Got it. Regards, Lang >Regards, >Kamil > >> --- >> include/drm-uapi/amdgpu_drm.h | 50 >> ++++++++++++++++++++++++++--------- >> 1 file changed, 38 insertions(+), 12 deletions(-) >> >> diff --git a/include/drm-uapi/amdgpu_drm.h >> b/include/drm-uapi/amdgpu_drm.h index f44e140ad..ad21c613f 100644 >> --- a/include/drm-uapi/amdgpu_drm.h >> +++ b/include/drm-uapi/amdgpu_drm.h >> @@ -94,6 +94,9 @@ extern "C" { >> * >> * %AMDGPU_GEM_DOMAIN_OA Ordered append, used by 3D or Compute >engines >> * for appending data. >> + * >> + * %AMDGPU_GEM_DOMAIN_DOORBELL Doorbell. It is an MMIO region >for >> + * signalling user mode queues. >> */ >> #define AMDGPU_GEM_DOMAIN_CPU 0x1 >> #define AMDGPU_GEM_DOMAIN_GTT 0x2 >> @@ -101,12 +104,14 @@ extern "C" { >> #define AMDGPU_GEM_DOMAIN_GDS 0x8 >> #define AMDGPU_GEM_DOMAIN_GWS 0x10 >> #define AMDGPU_GEM_DOMAIN_OA 0x20 >> +#define AMDGPU_GEM_DOMAIN_DOORBELL 0x40 >> #define AMDGPU_GEM_DOMAIN_MASK > (AMDGPU_GEM_DOMAIN_CPU | \ >> AMDGPU_GEM_DOMAIN_GTT | \ >> AMDGPU_GEM_DOMAIN_VRAM | \ >> AMDGPU_GEM_DOMAIN_GDS | \ >> AMDGPU_GEM_DOMAIN_GWS | \ >> - AMDGPU_GEM_DOMAIN_OA) >> + AMDGPU_GEM_DOMAIN_OA | \ >> + AMDGPU_GEM_DOMAIN_DOORBELL) >> >> /* Flag that CPU access will be required for the case of VRAM domain */ >> #define AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED (1 << 0) >> @@ -145,7 +150,7 @@ extern "C" { >> */ >> #define AMDGPU_GEM_CREATE_DISCARDABLE (1 << 12) >> /* Flag that BO is shared coherently between multiple devices or CPU threads. >> - * May depend on GPU instructions to flush caches explicitly >> + * May depend on GPU instructions to flush caches to system scope explicitly. >> * >> * This influences the choice of MTYPE in the PTEs on GFXv9 and later GPUs and >> * may override the MTYPE selected in AMDGPU_VA_OP_MAP. >> @@ -158,6 +163,14 @@ extern "C" { >> * may override the MTYPE selected in AMDGPU_VA_OP_MAP. >> */ >> #define AMDGPU_GEM_CREATE_UNCACHED (1 << 14) >> +/* Flag that BO should be coherent across devices when using >> +device-level >> + * atomics. May depend on GPU instructions to flush caches to device >> +scope >> + * explicitly, promoting them to system scope automatically. >> + * >> + * This influences the choice of MTYPE in the PTEs on GFXv9 and later >> +GPUs and >> + * may override the MTYPE selected in AMDGPU_VA_OP_MAP. >> + */ >> +#define AMDGPU_GEM_CREATE_EXT_COHERENT (1 << 15) >> >> struct drm_amdgpu_gem_create_in { >> /** the requested memory size */ >> @@ -236,9 +249,9 @@ union drm_amdgpu_bo_list { >> /* unknown cause */ >> #define AMDGPU_CTX_UNKNOWN_RESET 3 >> >> -/* indicate gpu reset occured after ctx created */ >> +/* indicate gpu reset occurred after ctx created */ >> #define AMDGPU_CTX_QUERY2_FLAGS_RESET (1<<0) >> -/* indicate vram lost occured after ctx created */ >> +/* indicate vram lost occurred after ctx created */ >> #define AMDGPU_CTX_QUERY2_FLAGS_VRAMLOST (1<<1) >> /* indicate some job from this context once cause gpu hang */ >> #define AMDGPU_CTX_QUERY2_FLAGS_GUILTY (1<<2) >> @@ -259,13 +272,6 @@ union drm_amdgpu_bo_list { */ >> #define AMDGPU_CTX_PRIORITY_HIGH 512 >> #define AMDGPU_CTX_PRIORITY_VERY_HIGH 1023 >> -/* select a stable profiling pstate for perfmon tools */ -#define >> AMDGPU_CTX_STABLE_PSTATE_FLAGS_MASK 0xf -#define >> AMDGPU_CTX_STABLE_PSTATE_NONE 0 -#define >> AMDGPU_CTX_STABLE_PSTATE_STANDARD 1 -#define >> AMDGPU_CTX_STABLE_PSTATE_MIN_SCLK 2 -#define >> AMDGPU_CTX_STABLE_PSTATE_MIN_MCLK 3 -#define >> AMDGPU_CTX_STABLE_PSTATE_PEAK 4 >> >> /* select a stable profiling pstate for perfmon tools */ #define >> AMDGPU_CTX_STABLE_PSTATE_FLAGS_MASK 0xf @@ -588,7 +594,8 @@ struct >> drm_amdgpu_gem_va { >> */ >> #define AMDGPU_HW_IP_VCN_ENC 7 >> #define AMDGPU_HW_IP_VCN_JPEG 8 >> -#define AMDGPU_HW_IP_NUM 9 >> +#define AMDGPU_HW_IP_VPE 9 >> +#define AMDGPU_HW_IP_NUM 10 >> >> #define AMDGPU_HW_IP_INSTANCE_MAX_COUNT 1 >> >> @@ -799,6 +806,8 @@ struct drm_amdgpu_cs_chunk_cp_gfx_shadow { >> #define AMDGPU_INFO_FW_MES 0x1a >> /* Subquery id: Query IMU firmware version */ >> #define AMDGPU_INFO_FW_IMU 0x1b >> + /* Subquery id: Query VPE firmware version */ >> + #define AMDGPU_INFO_FW_VPE 0x1c >> >> /* number of bytes moved for TTM migration */ >> #define AMDGPU_INFO_NUM_BYTES_MOVED 0x0f >> @@ -897,6 +906,8 @@ struct drm_amdgpu_cs_chunk_cp_gfx_shadow { >> #define AMDGPU_INFO_VIDEO_CAPS_ENCODE 1 >> /* Query the max number of IBs per gang per submission */ >> #define AMDGPU_INFO_MAX_IBS 0x22 >> +/* query last page fault info */ >> +#define AMDGPU_INFO_GPUVM_FAULT 0x23 >> >> #define AMDGPU_INFO_MMR_SE_INDEX_SHIFT 0 >> #define AMDGPU_INFO_MMR_SE_INDEX_MASK 0xff >> @@ -1222,6 +1233,20 @@ struct drm_amdgpu_info_video_caps { >> struct drm_amdgpu_info_video_codec_info >> codec_info[AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_COUNT]; >> }; >> >> +#define AMDGPU_VMHUB_TYPE_MASK 0xff >> +#define AMDGPU_VMHUB_TYPE_SHIFT 0 >> +#define AMDGPU_VMHUB_TYPE_GFX 0 >> +#define AMDGPU_VMHUB_TYPE_MM0 1 >> +#define AMDGPU_VMHUB_TYPE_MM1 2 >> +#define AMDGPU_VMHUB_IDX_MASK 0xff00 >> +#define AMDGPU_VMHUB_IDX_SHIFT 8 >> + >> +struct drm_amdgpu_info_gpuvm_fault { >> + __u64 addr; >> + __u32 status; >> + __u32 vmhub; >> +}; >> + >> /* >> * Supported GPU families >> */ >> @@ -1240,6 +1265,7 @@ struct drm_amdgpu_info_video_caps { >> #define AMDGPU_FAMILY_GC_11_0_1 148 /* GC 11.0.1 */ >> #define AMDGPU_FAMILY_GC_10_3_6 149 /* GC 10.3.6 */ >> #define AMDGPU_FAMILY_GC_10_3_7 151 /* GC 10.3.7 */ >> +#define AMDGPU_FAMILY_GC_11_5_0 150 /* GC >11.5.0 */ >> >> #if defined(__cplusplus) >> } >> -- >> 2.25.1 >> ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2023-11-10 2:46 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2023-11-09 7:07 [igt-dev] [PATCH 1/2] include/drm-uapi/amdgpu_drm.h: update amdgpu_drm.h Lang Yu 2023-11-09 7:07 ` [igt-dev] [PATCH 2/2] tests/amdgpu: add VPE tests Lang Yu 2023-11-09 11:13 ` Kamil Konieczny 2023-11-10 2:46 ` Yu, Lang 2023-11-09 8:24 ` [igt-dev] ✗ Fi.CI.BUILD: failure for series starting with [1/2] include/drm-uapi/amdgpu_drm.h: update amdgpu_drm.h Patchwork 2023-11-09 11:08 ` [igt-dev] [PATCH 1/2] " Kamil Konieczny 2023-11-10 2:45 ` Yu, Lang
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox