All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH libdrm 1/2] amdgpu: Add wrappers for AMDGPU_VM IOCTL.
@ 2017-10-27  0:15 Andrey Grodzovsky
       [not found] ` <1509063355-5205-1-git-send-email-Andrey.Grodzovsky-5C7GfCeVMHo@public.gmane.org>
  0 siblings, 1 reply; 8+ messages in thread
From: Andrey Grodzovsky @ 2017-10-27  0:15 UTC (permalink / raw)
  To: dri-devel, amd-gfx; +Cc: Alexander.Deucher, christian.koenig

Change-Id: I7eafb85c1ca96d6d255f0183bed0ce4129746fe0
Signed-off-by: Andrey Grodzovsky <Andrey.Grodzovsky@amd.com>
---
 amdgpu/Makefile.sources |  1 +
 amdgpu/amdgpu.h         | 20 +++++++++++++++++++
 amdgpu/amdgpu_vm.c      | 52 +++++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 73 insertions(+)
 create mode 100644 amdgpu/amdgpu_vm.c

diff --git a/amdgpu/Makefile.sources b/amdgpu/Makefile.sources
index bc3abaa..498b64c 100644
--- a/amdgpu/Makefile.sources
+++ b/amdgpu/Makefile.sources
@@ -6,6 +6,7 @@ LIBDRM_AMDGPU_FILES := \
 	amdgpu_gpu_info.c \
 	amdgpu_internal.h \
 	amdgpu_vamgr.c \
+	amdgpu_vm.c \
 	util_hash.c \
 	util_hash.h \
 	util_hash_table.c \
diff --git a/amdgpu/amdgpu.h b/amdgpu/amdgpu.h
index ecc975f..07f2851 100644
--- a/amdgpu/amdgpu.h
+++ b/amdgpu/amdgpu.h
@@ -1489,6 +1489,26 @@ void amdgpu_cs_chunk_fence_to_dep(struct amdgpu_cs_fence *fence,
 void amdgpu_cs_chunk_fence_info_to_data(struct amdgpu_cs_fence_info *fence_info,
 					struct drm_amdgpu_cs_chunk_data *data);
 
+/**
+ * Reserve VMID
+ * \param   context - \c [in]  GPU Context
+ * \param   flags - \c [in]  TBD
+ *
+ * \return  0 on success otherwise POSIX Error code
+*/
+int amdgpu_vm_alloc_reserved_vmid(amdgpu_context_handle context,
+								  uint32_t	flags);
+
+/**
+ * Free reserved VMID
+ * \param   context - \c [in]  GPU Context
+ * \param   flags - \c [in]  TBD
+ *
+ * \return  0 on success otherwise POSIX Error code
+*/
+int amdgpu_vm_free_reserved_vmid(amdgpu_context_handle context,
+								 uint32_t	flags);
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/amdgpu/amdgpu_vm.c b/amdgpu/amdgpu_vm.c
new file mode 100644
index 0000000..1664b7b
--- /dev/null
+++ b/amdgpu/amdgpu_vm.c
@@ -0,0 +1,52 @@
+/*
+ * Copyright 2017 Advanced Micro Devices, Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
+ * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ * OTHER DEALINGS IN THE SOFTWARE.
+ *
+ */
+
+
+#include "amdgpu.h"
+#include "amdgpu_drm.h"
+#include "xf86drm.h"
+#include "amdgpu_internal.h"
+
+int amdgpu_vm_alloc_reserved_vmid(amdgpu_context_handle context,
+								  uint32_t	flags)
+{
+	union drm_amdgpu_vm vm;
+
+	vm.in.op = AMDGPU_VM_OP_RESERVE_VMID;
+	vm.in.flags = flags;
+
+	return drmCommandWriteRead(context->dev->fd, DRM_AMDGPU_VM,
+							   &vm, sizeof(vm));
+}
+
+int amdgpu_vm_free_reserved_vmid(amdgpu_context_handle context,
+								 uint32_t	flags)
+{
+	union drm_amdgpu_vm vm;
+
+	vm.in.op = AMDGPU_VM_OP_UNRESERVE_VMID;
+	vm.in.flags = flags;
+
+	return drmCommandWriteRead(context->dev->fd, DRM_AMDGPU_VM,
+							   &vm, sizeof(vm));
+}
-- 
2.7.4

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH libdrm 2/2] amdgpu: Add VMID reservation per GPU context test.
       [not found] ` <1509063355-5205-1-git-send-email-Andrey.Grodzovsky-5C7GfCeVMHo@public.gmane.org>
@ 2017-10-27  0:15   ` Andrey Grodzovsky
  2017-10-27  7:44   ` [PATCH libdrm 1/2] amdgpu: Add wrappers for AMDGPU_VM IOCTL Christian König
  2017-10-27  8:52   ` Emil Velikov
  2 siblings, 0 replies; 8+ messages in thread
From: Andrey Grodzovsky @ 2017-10-27  0:15 UTC (permalink / raw)
  To: dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW
  Cc: Alexander.Deucher-5C7GfCeVMHo, Andrey Grodzovsky,
	christian.koenig-5C7GfCeVMHo

The test will Reserve a VMID, submit a command and
unreserve the VMID.

Change-Id: I2e5320b2c3044d1375bc5b18d936d3c0637f5daa
Signed-off-by: Andrey Grodzovsky <Andrey.Grodzovsky@amd.com>
---
 tests/amdgpu/Makefile.am   |   3 +-
 tests/amdgpu/amdgpu_test.c |   7 +++
 tests/amdgpu/amdgpu_test.h |  15 +++++
 tests/amdgpu/vm_tests.c    | 151 +++++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 175 insertions(+), 1 deletion(-)
 create mode 100644 tests/amdgpu/vm_tests.c

diff --git a/tests/amdgpu/Makefile.am b/tests/amdgpu/Makefile.am
index 8700c4d..e79c1bd 100644
--- a/tests/amdgpu/Makefile.am
+++ b/tests/amdgpu/Makefile.am
@@ -31,4 +31,5 @@ amdgpu_test_SOURCES = \
 	uvd_enc_tests.c \
 	vcn_tests.c \
 	uve_ib.h \
-	deadlock_tests.c
+	deadlock_tests.c \
+	vm_tests.c
diff --git a/tests/amdgpu/amdgpu_test.c b/tests/amdgpu/amdgpu_test.c
index 9925503..a82d9ab 100644
--- a/tests/amdgpu/amdgpu_test.c
+++ b/tests/amdgpu/amdgpu_test.c
@@ -103,6 +103,13 @@ static CU_SuiteInfo suites[] = {
 		.pCleanupFunc = suite_deadlock_tests_clean,
 		.pTests = deadlock_tests,
 	},
+	{
+		.pName = "VM Tests",
+		.pInitFunc = suite_vm_tests_init,
+		.pCleanupFunc = suite_vm_tests_clean,
+		.pTests = vm_tests,
+	},
+
 	CU_SUITE_INFO_NULL,
 };
 
diff --git a/tests/amdgpu/amdgpu_test.h b/tests/amdgpu/amdgpu_test.h
index ece93f4..4fffbc6 100644
--- a/tests/amdgpu/amdgpu_test.h
+++ b/tests/amdgpu/amdgpu_test.h
@@ -150,6 +150,21 @@ int suite_deadlock_tests_clean();
 extern CU_TestInfo deadlock_tests[];
 
 /**
+ * Initialize vm test suite
+ */
+int suite_vm_tests_init();
+
+/**
+ * Deinitialize deadlock test suite
+ */
+int suite_vm_tests_clean();
+
+/**
+ * Tests in vm test suite
+ */
+extern CU_TestInfo vm_tests[];
+
+/**
  * Helper functions
  */
 static inline amdgpu_bo_handle gpu_mem_alloc(
diff --git a/tests/amdgpu/vm_tests.c b/tests/amdgpu/vm_tests.c
new file mode 100644
index 0000000..22bac37
--- /dev/null
+++ b/tests/amdgpu/vm_tests.c
@@ -0,0 +1,151 @@
+/*
+ * Copyright 2017 Advanced Micro Devices, Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
+ * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ * OTHER DEALINGS IN THE SOFTWARE.
+ *
+*/
+
+#include "CUnit/Basic.h"
+
+#include "amdgpu_test.h"
+#include "amdgpu_drm.h"
+
+static  amdgpu_device_handle device_handle;
+static  uint32_t  major_version;
+static  uint32_t  minor_version;
+
+
+static void amdgpu_vmid_reserve_test(void);
+
+int suite_vm_tests_init(void)
+{
+	struct amdgpu_gpu_info gpu_info = {0};
+	int r;
+
+	r = amdgpu_device_initialize(drm_amdgpu[0], &major_version,
+				   &minor_version, &device_handle);
+
+	if (r) {
+		if ((r == -EACCES) && (errno == EACCES))
+			printf("\n\nError:%s. "
+				"Hint:Try to run this test program as root.",
+				strerror(errno));
+		return CUE_SINIT_FAILED;
+	}
+
+	return CUE_SUCCESS;
+}
+
+int suite_vm_tests_clean(void)
+{
+	int r = amdgpu_device_deinitialize(device_handle);
+
+	if (r == 0)
+		return CUE_SUCCESS;
+	else
+		return CUE_SCLEAN_FAILED;
+}
+
+
+CU_TestInfo vm_tests[] = {
+	{ "resere vmid test",  amdgpu_vmid_reserve_test },
+	CU_TEST_INFO_NULL,
+};
+
+static void amdgpu_vmid_reserve_test(void)
+{
+	amdgpu_context_handle context_handle;
+	amdgpu_bo_handle ib_result_handle;
+	void *ib_result_cpu;
+	uint64_t ib_result_mc_address;
+	struct amdgpu_cs_request ibs_request;
+	struct amdgpu_cs_ib_info ib_info;
+	struct amdgpu_cs_fence fence_status;
+	uint32_t expired, flags;
+	int i, r, instance;
+	amdgpu_bo_list_handle bo_list;
+	amdgpu_va_handle va_handle;
+	union drm_amdgpu_vm vm;
+	static uint32_t *ptr;
+
+	r = amdgpu_cs_ctx_create(device_handle, &context_handle);
+	CU_ASSERT_EQUAL(r, 0);
+
+	flags = 0;
+	r = amdgpu_vm_alloc_reserved_vmid(context_handle, flags);
+	CU_ASSERT_EQUAL(r, 0);
+
+
+	r = amdgpu_bo_alloc_and_map(device_handle, 4096, 4096,
+			AMDGPU_GEM_DOMAIN_GTT, 0,
+						    &ib_result_handle, &ib_result_cpu,
+						    &ib_result_mc_address, &va_handle);
+	CU_ASSERT_EQUAL(r, 0);
+
+	r = amdgpu_get_bo_list(device_handle, ib_result_handle, NULL,
+			       &bo_list);
+	CU_ASSERT_EQUAL(r, 0);
+
+	ptr = ib_result_cpu;
+
+	for (i = 0; i < 16; ++i)
+		ptr[i] = 0xffff1000;
+
+	memset(&ib_info, 0, sizeof(struct amdgpu_cs_ib_info));
+	ib_info.ib_mc_address = ib_result_mc_address;
+	ib_info.size = 16;
+
+	memset(&ibs_request, 0, sizeof(struct amdgpu_cs_request));
+	ibs_request.ip_type = AMDGPU_HW_IP_GFX;
+	ibs_request.ring = 0;
+	ibs_request.number_of_ibs = 1;
+	ibs_request.ibs = &ib_info;
+	ibs_request.resources = bo_list;
+	ibs_request.fence_info.handle = NULL;
+
+	r = amdgpu_cs_submit(context_handle, 0,&ibs_request, 1);
+	CU_ASSERT_EQUAL(r, 0);
+
+
+	memset(&fence_status, 0, sizeof(struct amdgpu_cs_fence));
+	fence_status.context = context_handle;
+	fence_status.ip_type = AMDGPU_HW_IP_GFX;
+	fence_status.ip_instance = 0;
+	fence_status.ring = 0;
+	fence_status.fence = ibs_request.seq_no;
+
+	r = amdgpu_cs_query_fence_status(&fence_status,
+			AMDGPU_TIMEOUT_INFINITE,0, &expired);
+	CU_ASSERT_EQUAL(r, 0);
+
+	r = amdgpu_bo_list_destroy(bo_list);
+	CU_ASSERT_EQUAL(r, 0);
+
+	r = amdgpu_bo_unmap_and_free(ib_result_handle, va_handle,
+				     ib_result_mc_address, 4096);
+	CU_ASSERT_EQUAL(r, 0);
+
+	flags = 0;
+	r = amdgpu_vm_free_reserved_vmid(context_handle, flags);
+	CU_ASSERT_EQUAL(r, 0);
+
+
+	r = amdgpu_cs_ctx_free(context_handle);
+	CU_ASSERT_EQUAL(r, 0);
+}
-- 
2.7.4

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH libdrm 1/2] amdgpu: Add wrappers for AMDGPU_VM IOCTL.
       [not found] ` <1509063355-5205-1-git-send-email-Andrey.Grodzovsky-5C7GfCeVMHo@public.gmane.org>
  2017-10-27  0:15   ` [PATCH libdrm 2/2] amdgpu: Add VMID reservation per GPU context test Andrey Grodzovsky
@ 2017-10-27  7:44   ` Christian König
  2017-10-27  8:52   ` Emil Velikov
  2 siblings, 0 replies; 8+ messages in thread
From: Christian König @ 2017-10-27  7:44 UTC (permalink / raw)
  To: Andrey Grodzovsky, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW
  Cc: Alexander.Deucher-5C7GfCeVMHo, christian.koenig-5C7GfCeVMHo

Am 27.10.2017 um 02:15 schrieb Andrey Grodzovsky:
> Change-Id: I7eafb85c1ca96d6d255f0183bed0ce4129746fe0
> Signed-off-by: Andrey Grodzovsky <Andrey.Grodzovsky@amd.com>
> ---
>   amdgpu/Makefile.sources |  1 +
>   amdgpu/amdgpu.h         | 20 +++++++++++++++++++
>   amdgpu/amdgpu_vm.c      | 52 +++++++++++++++++++++++++++++++++++++++++++++++++
>   3 files changed, 73 insertions(+)
>   create mode 100644 amdgpu/amdgpu_vm.c
>
> diff --git a/amdgpu/Makefile.sources b/amdgpu/Makefile.sources
> index bc3abaa..498b64c 100644
> --- a/amdgpu/Makefile.sources
> +++ b/amdgpu/Makefile.sources
> @@ -6,6 +6,7 @@ LIBDRM_AMDGPU_FILES := \
>   	amdgpu_gpu_info.c \
>   	amdgpu_internal.h \
>   	amdgpu_vamgr.c \
> +	amdgpu_vm.c \
>   	util_hash.c \
>   	util_hash.h \
>   	util_hash_table.c \
> diff --git a/amdgpu/amdgpu.h b/amdgpu/amdgpu.h
> index ecc975f..07f2851 100644
> --- a/amdgpu/amdgpu.h
> +++ b/amdgpu/amdgpu.h
> @@ -1489,6 +1489,26 @@ void amdgpu_cs_chunk_fence_to_dep(struct amdgpu_cs_fence *fence,
>   void amdgpu_cs_chunk_fence_info_to_data(struct amdgpu_cs_fence_info *fence_info,
>   					struct drm_amdgpu_cs_chunk_data *data);
>   
> +/**
> + * Reserve VMID
> + * \param   context - \c [in]  GPU Context
> + * \param   flags - \c [in]  TBD
> + *
> + * \return  0 on success otherwise POSIX Error code
> +*/
> +int amdgpu_vm_alloc_reserved_vmid(amdgpu_context_handle context,
> +								  uint32_t	flags);
> +
> +/**
> + * Free reserved VMID
> + * \param   context - \c [in]  GPU Context
> + * \param   flags - \c [in]  TBD
> + *
> + * \return  0 on success otherwise POSIX Error code
> +*/
> +int amdgpu_vm_free_reserved_vmid(amdgpu_context_handle context,
> +								 uint32_t	flags);
> +
>   #ifdef __cplusplus
>   }
>   #endif
> diff --git a/amdgpu/amdgpu_vm.c b/amdgpu/amdgpu_vm.c
> new file mode 100644
> index 0000000..1664b7b
> --- /dev/null
> +++ b/amdgpu/amdgpu_vm.c
> @@ -0,0 +1,52 @@
> +/*
> + * Copyright 2017 Advanced Micro Devices, Inc.
> + *
> + * Permission is hereby granted, free of charge, to any person obtaining a
> + * copy of this software and associated documentation files (the "Software"),
> + * to deal in the Software without restriction, including without limitation
> + * the rights to use, copy, modify, merge, publish, distribute, sublicense,
> + * and/or sell copies of the Software, and to permit persons to whom the
> + * Software is furnished to do so, subject to the following conditions:
> + *
> + * The above copyright notice and this permission notice shall be included in
> + * all copies or substantial portions of the Software.
> + *
> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
> + * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
> + * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
> + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
> + * OTHER DEALINGS IN THE SOFTWARE.
> + *
> + */
> +
> +
> +#include "amdgpu.h"
> +#include "amdgpu_drm.h"
> +#include "xf86drm.h"
> +#include "amdgpu_internal.h"
> +
> +int amdgpu_vm_alloc_reserved_vmid(amdgpu_context_handle context,
> +								  uint32_t	flags)

Could just be the mail client, but flags looks way to much indented to 
the right.

Additional to that I would keep the name of the kernel IOCTL for the 
function name.

E.g. amdgpu_vm_reserve_vmid() and amdgpu_vm_unreserve_vmid().

Apart from that both patches look good to me.

Christian.

> +{
> +	union drm_amdgpu_vm vm;
> +
> +	vm.in.op = AMDGPU_VM_OP_RESERVE_VMID;
> +	vm.in.flags = flags;
> +
> +	return drmCommandWriteRead(context->dev->fd, DRM_AMDGPU_VM,
> +							   &vm, sizeof(vm));
> +}
> +
> +int amdgpu_vm_free_reserved_vmid(amdgpu_context_handle context,
> +								 uint32_t	flags)
> +{
> +	union drm_amdgpu_vm vm;
> +
> +	vm.in.op = AMDGPU_VM_OP_UNRESERVE_VMID;
> +	vm.in.flags = flags;
> +
> +	return drmCommandWriteRead(context->dev->fd, DRM_AMDGPU_VM,
> +							   &vm, sizeof(vm));
> +}


_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH libdrm 1/2] amdgpu: Add wrappers for AMDGPU_VM IOCTL.
       [not found] ` <1509063355-5205-1-git-send-email-Andrey.Grodzovsky-5C7GfCeVMHo@public.gmane.org>
  2017-10-27  0:15   ` [PATCH libdrm 2/2] amdgpu: Add VMID reservation per GPU context test Andrey Grodzovsky
  2017-10-27  7:44   ` [PATCH libdrm 1/2] amdgpu: Add wrappers for AMDGPU_VM IOCTL Christian König
@ 2017-10-27  8:52   ` Emil Velikov
  2017-10-27 13:55     ` Andrey Grodzovsky
  2017-10-27 15:09     ` [PATCH libdrm v2 " Andrey Grodzovsky
  2 siblings, 2 replies; 8+ messages in thread
From: Emil Velikov @ 2017-10-27  8:52 UTC (permalink / raw)
  To: Andrey Grodzovsky
  Cc: Alex Deucher, amd-gfx mailing list, ML dri-devel, Christian König

On 27 October 2017 at 01:15, Andrey Grodzovsky
<Andrey.Grodzovsky@amd.com> wrote:
> Change-Id: I7eafb85c1ca96d6d255f0183bed0ce4129746fe0
> Signed-off-by: Andrey Grodzovsky <Andrey.Grodzovsky@amd.com>
> ---
>  amdgpu/Makefile.sources |  1 +
>  amdgpu/amdgpu.h         | 20 +++++++++++++++++++
>  amdgpu/amdgpu_vm.c      | 52 +++++++++++++++++++++++++++++++++++++++++++++++++
>  3 files changed, 73 insertions(+)
>  create mode 100644 amdgpu/amdgpu_vm.c
>
> diff --git a/amdgpu/Makefile.sources b/amdgpu/Makefile.sources
> index bc3abaa..498b64c 100644
> --- a/amdgpu/Makefile.sources
> +++ b/amdgpu/Makefile.sources
> @@ -6,6 +6,7 @@ LIBDRM_AMDGPU_FILES := \
>         amdgpu_gpu_info.c \
>         amdgpu_internal.h \
>         amdgpu_vamgr.c \
> +       amdgpu_vm.c \
>         util_hash.c \
>         util_hash.h \
>         util_hash_table.c \
> diff --git a/amdgpu/amdgpu.h b/amdgpu/amdgpu.h
> index ecc975f..07f2851 100644
> --- a/amdgpu/amdgpu.h
> +++ b/amdgpu/amdgpu.h
> @@ -1489,6 +1489,26 @@ void amdgpu_cs_chunk_fence_to_dep(struct amdgpu_cs_fence *fence,
>  void amdgpu_cs_chunk_fence_info_to_data(struct amdgpu_cs_fence_info *fence_info,
>                                         struct drm_amdgpu_cs_chunk_data *data);
>
> +/**
> + * Reserve VMID
> + * \param   context - \c [in]  GPU Context
> + * \param   flags - \c [in]  TBD
> + *
> + * \return  0 on success otherwise POSIX Error code
> +*/
> +int amdgpu_vm_alloc_reserved_vmid(amdgpu_context_handle context,
> +                                                                 uint32_t      flags);
> +
> +/**
> + * Free reserved VMID
> + * \param   context - \c [in]  GPU Context
> + * \param   flags - \c [in]  TBD
> + *
> + * \return  0 on success otherwise POSIX Error code
> +*/
> +int amdgpu_vm_free_reserved_vmid(amdgpu_context_handle context,
> +                                                                uint32_t       flags);
> +
Andrey, don't forget to run make check. You'll see it flag a lovely error ;-)

-Emil
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH libdrm 1/2] amdgpu: Add wrappers for AMDGPU_VM IOCTL.
  2017-10-27  8:52   ` Emil Velikov
@ 2017-10-27 13:55     ` Andrey Grodzovsky
  2017-10-27 15:09     ` [PATCH libdrm v2 " Andrey Grodzovsky
  1 sibling, 0 replies; 8+ messages in thread
From: Andrey Grodzovsky @ 2017-10-27 13:55 UTC (permalink / raw)
  To: Emil Velikov
  Cc: Alex Deucher, amd-gfx mailing list, ML dri-devel, Christian König



On 10/27/2017 04:52 AM, Emil Velikov wrote:
> On 27 October 2017 at 01:15, Andrey Grodzovsky
> <Andrey.Grodzovsky@amd.com> wrote:
>> Change-Id: I7eafb85c1ca96d6d255f0183bed0ce4129746fe0
>> Signed-off-by: Andrey Grodzovsky <Andrey.Grodzovsky@amd.com>
>> ---
>>   amdgpu/Makefile.sources |  1 +
>>   amdgpu/amdgpu.h         | 20 +++++++++++++++++++
>>   amdgpu/amdgpu_vm.c      | 52 +++++++++++++++++++++++++++++++++++++++++++++++++
>>   3 files changed, 73 insertions(+)
>>   create mode 100644 amdgpu/amdgpu_vm.c
>>
>> diff --git a/amdgpu/Makefile.sources b/amdgpu/Makefile.sources
>> index bc3abaa..498b64c 100644
>> --- a/amdgpu/Makefile.sources
>> +++ b/amdgpu/Makefile.sources
>> @@ -6,6 +6,7 @@ LIBDRM_AMDGPU_FILES := \
>>          amdgpu_gpu_info.c \
>>          amdgpu_internal.h \
>>          amdgpu_vamgr.c \
>> +       amdgpu_vm.c \
>>          util_hash.c \
>>          util_hash.h \
>>          util_hash_table.c \
>> diff --git a/amdgpu/amdgpu.h b/amdgpu/amdgpu.h
>> index ecc975f..07f2851 100644
>> --- a/amdgpu/amdgpu.h
>> +++ b/amdgpu/amdgpu.h
>> @@ -1489,6 +1489,26 @@ void amdgpu_cs_chunk_fence_to_dep(struct amdgpu_cs_fence *fence,
>>   void amdgpu_cs_chunk_fence_info_to_data(struct amdgpu_cs_fence_info *fence_info,
>>                                          struct drm_amdgpu_cs_chunk_data *data);
>>
>> +/**
>> + * Reserve VMID
>> + * \param   context - \c [in]  GPU Context
>> + * \param   flags - \c [in]  TBD
>> + *
>> + * \return  0 on success otherwise POSIX Error code
>> +*/
>> +int amdgpu_vm_alloc_reserved_vmid(amdgpu_context_handle context,
>> +                                                                 uint32_t      flags);
>> +
>> +/**
>> + * Free reserved VMID
>> + * \param   context - \c [in]  GPU Context
>> + * \param   flags - \c [in]  TBD
>> + *
>> + * \return  0 on success otherwise POSIX Error code
>> +*/
>> +int amdgpu_vm_free_reserved_vmid(amdgpu_context_handle context,
>> +                                                                uint32_t       flags);
>> +
> Andrey, don't forget to run make check. You'll see it flag a lovely error ;-)

Thanks, didn't know about the check option, will fix.

Andrey

>
> -Emil

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH libdrm v2 1/2] amdgpu: Add wrappers for AMDGPU_VM IOCTL.
  2017-10-27  8:52   ` Emil Velikov
  2017-10-27 13:55     ` Andrey Grodzovsky
@ 2017-10-27 15:09     ` Andrey Grodzovsky
       [not found]       ` <1509116951-1250-1-git-send-email-andrey.grodzovsky-5C7GfCeVMHo@public.gmane.org>
  2017-10-27 15:12       ` [PATCH libdrm v2 1/2] amdgpu: Add wrappers for AMDGPU_VM IOCTL Christian König
  1 sibling, 2 replies; 8+ messages in thread
From: Andrey Grodzovsky @ 2017-10-27 15:09 UTC (permalink / raw)
  To: dri-devel, amd-gfx; +Cc: emil.l.velikov, Christian.Koenig

From: Andrey Grodzovsky <Andrey.Grodzovsky@amd.com>

v2:
Rename wrappers to match the IOCTL naming, fix
identation and fix make check error.

Signed-off-by: Andrey Grodzovsky <Andrey.Grodzovsky@amd.com>
---
 amdgpu/Makefile.sources    |  1 +
 amdgpu/amdgpu-symbol-check |  2 ++
 amdgpu/amdgpu.h            | 18 +++++++++++++++++
 amdgpu/amdgpu_vm.c         | 50 ++++++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 71 insertions(+)
 create mode 100644 amdgpu/amdgpu_vm.c

diff --git a/amdgpu/Makefile.sources b/amdgpu/Makefile.sources
index bc3abaa..498b64c 100644
--- a/amdgpu/Makefile.sources
+++ b/amdgpu/Makefile.sources
@@ -6,6 +6,7 @@ LIBDRM_AMDGPU_FILES := \
 	amdgpu_gpu_info.c \
 	amdgpu_internal.h \
 	amdgpu_vamgr.c \
+	amdgpu_vm.c \
 	util_hash.c \
 	util_hash.h \
 	util_hash_table.c \
diff --git a/amdgpu/amdgpu-symbol-check b/amdgpu/amdgpu-symbol-check
index 095c3a0..d476038 100755
--- a/amdgpu/amdgpu-symbol-check
+++ b/amdgpu/amdgpu-symbol-check
@@ -64,6 +64,8 @@ amdgpu_read_mm_registers
 amdgpu_va_range_alloc
 amdgpu_va_range_free
 amdgpu_va_range_query
+amdgpu_vm_reserve_vmid
+amdgpu_vm_unreserve_vmid
 EOF
 done)
 
diff --git a/amdgpu/amdgpu.h b/amdgpu/amdgpu.h
index ecc975f..597fc2b 100644
--- a/amdgpu/amdgpu.h
+++ b/amdgpu/amdgpu.h
@@ -1489,6 +1489,24 @@ void amdgpu_cs_chunk_fence_to_dep(struct amdgpu_cs_fence *fence,
 void amdgpu_cs_chunk_fence_info_to_data(struct amdgpu_cs_fence_info *fence_info,
 					struct drm_amdgpu_cs_chunk_data *data);
 
+/**
+ * Reserve VMID
+ * \param   context - \c [in]  GPU Context
+ * \param   flags - \c [in]  TBD
+ *
+ * \return  0 on success otherwise POSIX Error code
+*/
+int amdgpu_vm_reserve_vmid(amdgpu_context_handle context, uint32_t flags);
+
+/**
+ * Free reserved VMID
+ * \param   context - \c [in]  GPU Context
+ * \param   flags - \c [in]  TBD
+ *
+ * \return  0 on success otherwise POSIX Error code
+*/
+int amdgpu_vm_unreserve_vmid(amdgpu_context_handle context, uint32_t flags);
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/amdgpu/amdgpu_vm.c b/amdgpu/amdgpu_vm.c
new file mode 100644
index 0000000..8a9a0a1
--- /dev/null
+++ b/amdgpu/amdgpu_vm.c
@@ -0,0 +1,50 @@
+/*
+ * Copyright 2017 Advanced Micro Devices, Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
+ * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ * OTHER DEALINGS IN THE SOFTWARE.
+ *
+ */
+
+
+#include "amdgpu.h"
+#include "amdgpu_drm.h"
+#include "xf86drm.h"
+#include "amdgpu_internal.h"
+
+int amdgpu_vm_reserve_vmid(amdgpu_context_handle context, uint32_t flags)
+{
+	union drm_amdgpu_vm vm;
+
+	vm.in.op = AMDGPU_VM_OP_RESERVE_VMID;
+	vm.in.flags = flags;
+
+	return drmCommandWriteRead(context->dev->fd, DRM_AMDGPU_VM,
+				   &vm, sizeof(vm));
+}
+
+int amdgpu_vm_unreserve_vmid(amdgpu_context_handle context, uint32_t flags)
+{
+	union drm_amdgpu_vm vm;
+
+	vm.in.op = AMDGPU_VM_OP_UNRESERVE_VMID;
+	vm.in.flags = flags;
+
+	return drmCommandWriteRead(context->dev->fd, DRM_AMDGPU_VM,
+				   &vm, sizeof(vm));
+}
-- 
2.7.4

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH libdrm v2 2/2] amdgpu: Add VMID reservation per GPU context test.
       [not found]       ` <1509116951-1250-1-git-send-email-andrey.grodzovsky-5C7GfCeVMHo@public.gmane.org>
@ 2017-10-27 15:09         ` Andrey Grodzovsky
  0 siblings, 0 replies; 8+ messages in thread
From: Andrey Grodzovsky @ 2017-10-27 15:09 UTC (permalink / raw)
  To: dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW
  Cc: Andrey Grodzovsky, emil.l.velikov-Re5JQEeQqe8AvxtiuMwx3w,
	Christian.Koenig-5C7GfCeVMHo

From: Andrey Grodzovsky <Andrey.Grodzovsky@amd.com>

The test will Reserve a VMID, submit a command and
unreserve the VMID.

v2:
Wrappers names were changed.

Signed-off-by: Andrey Grodzovsky <Andrey.Grodzovsky@amd.com>
---
 tests/amdgpu/Makefile.am   |   3 +-
 tests/amdgpu/amdgpu_test.c |   7 +++
 tests/amdgpu/amdgpu_test.h |  15 +++++
 tests/amdgpu/vm_tests.c    | 151 +++++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 175 insertions(+), 1 deletion(-)
 create mode 100644 tests/amdgpu/vm_tests.c

diff --git a/tests/amdgpu/Makefile.am b/tests/amdgpu/Makefile.am
index 8700c4d..e79c1bd 100644
--- a/tests/amdgpu/Makefile.am
+++ b/tests/amdgpu/Makefile.am
@@ -31,4 +31,5 @@ amdgpu_test_SOURCES = \
 	uvd_enc_tests.c \
 	vcn_tests.c \
 	uve_ib.h \
-	deadlock_tests.c
+	deadlock_tests.c \
+	vm_tests.c
diff --git a/tests/amdgpu/amdgpu_test.c b/tests/amdgpu/amdgpu_test.c
index 9925503..a82d9ab 100644
--- a/tests/amdgpu/amdgpu_test.c
+++ b/tests/amdgpu/amdgpu_test.c
@@ -103,6 +103,13 @@ static CU_SuiteInfo suites[] = {
 		.pCleanupFunc = suite_deadlock_tests_clean,
 		.pTests = deadlock_tests,
 	},
+	{
+		.pName = "VM Tests",
+		.pInitFunc = suite_vm_tests_init,
+		.pCleanupFunc = suite_vm_tests_clean,
+		.pTests = vm_tests,
+	},
+
 	CU_SUITE_INFO_NULL,
 };
 
diff --git a/tests/amdgpu/amdgpu_test.h b/tests/amdgpu/amdgpu_test.h
index ece93f4..4fffbc6 100644
--- a/tests/amdgpu/amdgpu_test.h
+++ b/tests/amdgpu/amdgpu_test.h
@@ -150,6 +150,21 @@ int suite_deadlock_tests_clean();
 extern CU_TestInfo deadlock_tests[];
 
 /**
+ * Initialize vm test suite
+ */
+int suite_vm_tests_init();
+
+/**
+ * Deinitialize deadlock test suite
+ */
+int suite_vm_tests_clean();
+
+/**
+ * Tests in vm test suite
+ */
+extern CU_TestInfo vm_tests[];
+
+/**
  * Helper functions
  */
 static inline amdgpu_bo_handle gpu_mem_alloc(
diff --git a/tests/amdgpu/vm_tests.c b/tests/amdgpu/vm_tests.c
new file mode 100644
index 0000000..cbfafe9
--- /dev/null
+++ b/tests/amdgpu/vm_tests.c
@@ -0,0 +1,151 @@
+/*
+ * Copyright 2017 Advanced Micro Devices, Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
+ * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ * OTHER DEALINGS IN THE SOFTWARE.
+ *
+*/
+
+#include "CUnit/Basic.h"
+
+#include "amdgpu_test.h"
+#include "amdgpu_drm.h"
+
+static  amdgpu_device_handle device_handle;
+static  uint32_t  major_version;
+static  uint32_t  minor_version;
+
+
+static void amdgpu_vmid_reserve_test(void);
+
+int suite_vm_tests_init(void)
+{
+	struct amdgpu_gpu_info gpu_info = {0};
+	int r;
+
+	r = amdgpu_device_initialize(drm_amdgpu[0], &major_version,
+				   &minor_version, &device_handle);
+
+	if (r) {
+		if ((r == -EACCES) && (errno == EACCES))
+			printf("\n\nError:%s. "
+				"Hint:Try to run this test program as root.",
+				strerror(errno));
+		return CUE_SINIT_FAILED;
+	}
+
+	return CUE_SUCCESS;
+}
+
+int suite_vm_tests_clean(void)
+{
+	int r = amdgpu_device_deinitialize(device_handle);
+
+	if (r == 0)
+		return CUE_SUCCESS;
+	else
+		return CUE_SCLEAN_FAILED;
+}
+
+
+CU_TestInfo vm_tests[] = {
+	{ "resere vmid test",  amdgpu_vmid_reserve_test },
+	CU_TEST_INFO_NULL,
+};
+
+static void amdgpu_vmid_reserve_test(void)
+{
+	amdgpu_context_handle context_handle;
+	amdgpu_bo_handle ib_result_handle;
+	void *ib_result_cpu;
+	uint64_t ib_result_mc_address;
+	struct amdgpu_cs_request ibs_request;
+	struct amdgpu_cs_ib_info ib_info;
+	struct amdgpu_cs_fence fence_status;
+	uint32_t expired, flags;
+	int i, r, instance;
+	amdgpu_bo_list_handle bo_list;
+	amdgpu_va_handle va_handle;
+	union drm_amdgpu_vm vm;
+	static uint32_t *ptr;
+
+	r = amdgpu_cs_ctx_create(device_handle, &context_handle);
+	CU_ASSERT_EQUAL(r, 0);
+
+	flags = 0;
+	r = amdgpu_vm_reserve_vmid(context_handle, flags);
+	CU_ASSERT_EQUAL(r, 0);
+
+
+	r = amdgpu_bo_alloc_and_map(device_handle, 4096, 4096,
+			AMDGPU_GEM_DOMAIN_GTT, 0,
+						    &ib_result_handle, &ib_result_cpu,
+						    &ib_result_mc_address, &va_handle);
+	CU_ASSERT_EQUAL(r, 0);
+
+	r = amdgpu_get_bo_list(device_handle, ib_result_handle, NULL,
+			       &bo_list);
+	CU_ASSERT_EQUAL(r, 0);
+
+	ptr = ib_result_cpu;
+
+	for (i = 0; i < 16; ++i)
+		ptr[i] = 0xffff1000;
+
+	memset(&ib_info, 0, sizeof(struct amdgpu_cs_ib_info));
+	ib_info.ib_mc_address = ib_result_mc_address;
+	ib_info.size = 16;
+
+	memset(&ibs_request, 0, sizeof(struct amdgpu_cs_request));
+	ibs_request.ip_type = AMDGPU_HW_IP_GFX;
+	ibs_request.ring = 0;
+	ibs_request.number_of_ibs = 1;
+	ibs_request.ibs = &ib_info;
+	ibs_request.resources = bo_list;
+	ibs_request.fence_info.handle = NULL;
+
+	r = amdgpu_cs_submit(context_handle, 0,&ibs_request, 1);
+	CU_ASSERT_EQUAL(r, 0);
+
+
+	memset(&fence_status, 0, sizeof(struct amdgpu_cs_fence));
+	fence_status.context = context_handle;
+	fence_status.ip_type = AMDGPU_HW_IP_GFX;
+	fence_status.ip_instance = 0;
+	fence_status.ring = 0;
+	fence_status.fence = ibs_request.seq_no;
+
+	r = amdgpu_cs_query_fence_status(&fence_status,
+			AMDGPU_TIMEOUT_INFINITE,0, &expired);
+	CU_ASSERT_EQUAL(r, 0);
+
+	r = amdgpu_bo_list_destroy(bo_list);
+	CU_ASSERT_EQUAL(r, 0);
+
+	r = amdgpu_bo_unmap_and_free(ib_result_handle, va_handle,
+				     ib_result_mc_address, 4096);
+	CU_ASSERT_EQUAL(r, 0);
+
+	flags = 0;
+	r = amdgpu_vm_unreserve_vmid(context_handle, flags);
+	CU_ASSERT_EQUAL(r, 0);
+
+
+	r = amdgpu_cs_ctx_free(context_handle);
+	CU_ASSERT_EQUAL(r, 0);
+}
-- 
2.7.4

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH libdrm v2 1/2] amdgpu: Add wrappers for AMDGPU_VM IOCTL.
  2017-10-27 15:09     ` [PATCH libdrm v2 " Andrey Grodzovsky
       [not found]       ` <1509116951-1250-1-git-send-email-andrey.grodzovsky-5C7GfCeVMHo@public.gmane.org>
@ 2017-10-27 15:12       ` Christian König
  1 sibling, 0 replies; 8+ messages in thread
From: Christian König @ 2017-10-27 15:12 UTC (permalink / raw)
  To: Andrey Grodzovsky, dri-devel, amd-gfx; +Cc: emil.l.velikov, Christian.Koenig

Am 27.10.2017 um 17:09 schrieb Andrey Grodzovsky:
> From: Andrey Grodzovsky <Andrey.Grodzovsky@amd.com>
>
> v2:
> Rename wrappers to match the IOCTL naming, fix
> identation and fix make check error.
>
> Signed-off-by: Andrey Grodzovsky <Andrey.Grodzovsky@amd.com>

Reviewed-by: Christian König <christian.koenig@amd.com> for both.

> ---
>   amdgpu/Makefile.sources    |  1 +
>   amdgpu/amdgpu-symbol-check |  2 ++
>   amdgpu/amdgpu.h            | 18 +++++++++++++++++
>   amdgpu/amdgpu_vm.c         | 50 ++++++++++++++++++++++++++++++++++++++++++++++
>   4 files changed, 71 insertions(+)
>   create mode 100644 amdgpu/amdgpu_vm.c
>
> diff --git a/amdgpu/Makefile.sources b/amdgpu/Makefile.sources
> index bc3abaa..498b64c 100644
> --- a/amdgpu/Makefile.sources
> +++ b/amdgpu/Makefile.sources
> @@ -6,6 +6,7 @@ LIBDRM_AMDGPU_FILES := \
>   	amdgpu_gpu_info.c \
>   	amdgpu_internal.h \
>   	amdgpu_vamgr.c \
> +	amdgpu_vm.c \
>   	util_hash.c \
>   	util_hash.h \
>   	util_hash_table.c \
> diff --git a/amdgpu/amdgpu-symbol-check b/amdgpu/amdgpu-symbol-check
> index 095c3a0..d476038 100755
> --- a/amdgpu/amdgpu-symbol-check
> +++ b/amdgpu/amdgpu-symbol-check
> @@ -64,6 +64,8 @@ amdgpu_read_mm_registers
>   amdgpu_va_range_alloc
>   amdgpu_va_range_free
>   amdgpu_va_range_query
> +amdgpu_vm_reserve_vmid
> +amdgpu_vm_unreserve_vmid
>   EOF
>   done)
>   
> diff --git a/amdgpu/amdgpu.h b/amdgpu/amdgpu.h
> index ecc975f..597fc2b 100644
> --- a/amdgpu/amdgpu.h
> +++ b/amdgpu/amdgpu.h
> @@ -1489,6 +1489,24 @@ void amdgpu_cs_chunk_fence_to_dep(struct amdgpu_cs_fence *fence,
>   void amdgpu_cs_chunk_fence_info_to_data(struct amdgpu_cs_fence_info *fence_info,
>   					struct drm_amdgpu_cs_chunk_data *data);
>   
> +/**
> + * Reserve VMID
> + * \param   context - \c [in]  GPU Context
> + * \param   flags - \c [in]  TBD
> + *
> + * \return  0 on success otherwise POSIX Error code
> +*/
> +int amdgpu_vm_reserve_vmid(amdgpu_context_handle context, uint32_t flags);
> +
> +/**
> + * Free reserved VMID
> + * \param   context - \c [in]  GPU Context
> + * \param   flags - \c [in]  TBD
> + *
> + * \return  0 on success otherwise POSIX Error code
> +*/
> +int amdgpu_vm_unreserve_vmid(amdgpu_context_handle context, uint32_t flags);
> +
>   #ifdef __cplusplus
>   }
>   #endif
> diff --git a/amdgpu/amdgpu_vm.c b/amdgpu/amdgpu_vm.c
> new file mode 100644
> index 0000000..8a9a0a1
> --- /dev/null
> +++ b/amdgpu/amdgpu_vm.c
> @@ -0,0 +1,50 @@
> +/*
> + * Copyright 2017 Advanced Micro Devices, Inc.
> + *
> + * Permission is hereby granted, free of charge, to any person obtaining a
> + * copy of this software and associated documentation files (the "Software"),
> + * to deal in the Software without restriction, including without limitation
> + * the rights to use, copy, modify, merge, publish, distribute, sublicense,
> + * and/or sell copies of the Software, and to permit persons to whom the
> + * Software is furnished to do so, subject to the following conditions:
> + *
> + * The above copyright notice and this permission notice shall be included in
> + * all copies or substantial portions of the Software.
> + *
> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
> + * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
> + * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
> + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
> + * OTHER DEALINGS IN THE SOFTWARE.
> + *
> + */
> +
> +
> +#include "amdgpu.h"
> +#include "amdgpu_drm.h"
> +#include "xf86drm.h"
> +#include "amdgpu_internal.h"
> +
> +int amdgpu_vm_reserve_vmid(amdgpu_context_handle context, uint32_t flags)
> +{
> +	union drm_amdgpu_vm vm;
> +
> +	vm.in.op = AMDGPU_VM_OP_RESERVE_VMID;
> +	vm.in.flags = flags;
> +
> +	return drmCommandWriteRead(context->dev->fd, DRM_AMDGPU_VM,
> +				   &vm, sizeof(vm));
> +}
> +
> +int amdgpu_vm_unreserve_vmid(amdgpu_context_handle context, uint32_t flags)
> +{
> +	union drm_amdgpu_vm vm;
> +
> +	vm.in.op = AMDGPU_VM_OP_UNRESERVE_VMID;
> +	vm.in.flags = flags;
> +
> +	return drmCommandWriteRead(context->dev->fd, DRM_AMDGPU_VM,
> +				   &vm, sizeof(vm));
> +}


_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2017-10-27 15:12 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-10-27  0:15 [PATCH libdrm 1/2] amdgpu: Add wrappers for AMDGPU_VM IOCTL Andrey Grodzovsky
     [not found] ` <1509063355-5205-1-git-send-email-Andrey.Grodzovsky-5C7GfCeVMHo@public.gmane.org>
2017-10-27  0:15   ` [PATCH libdrm 2/2] amdgpu: Add VMID reservation per GPU context test Andrey Grodzovsky
2017-10-27  7:44   ` [PATCH libdrm 1/2] amdgpu: Add wrappers for AMDGPU_VM IOCTL Christian König
2017-10-27  8:52   ` Emil Velikov
2017-10-27 13:55     ` Andrey Grodzovsky
2017-10-27 15:09     ` [PATCH libdrm v2 " Andrey Grodzovsky
     [not found]       ` <1509116951-1250-1-git-send-email-andrey.grodzovsky-5C7GfCeVMHo@public.gmane.org>
2017-10-27 15:09         ` [PATCH libdrm v2 2/2] amdgpu: Add VMID reservation per GPU context test Andrey Grodzovsky
2017-10-27 15:12       ` [PATCH libdrm v2 1/2] amdgpu: Add wrappers for AMDGPU_VM IOCTL Christian König

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.