From: "Christian König" <christian.koenig@amd.com>
To: Arunpravin Paneer Selvam <Arunpravin.PaneerSelvam@amd.com>,
amd-gfx@lists.freedesktop.org
Cc: alexander.deucher@amd.com
Subject: Re: [PATCH 4/6] drm/amdgpu: UAPI headers for userqueue Secure semaphore
Date: Mon, 27 Feb 2023 13:52:54 +0100 [thread overview]
Message-ID: <f4a2d704-5096-e03e-84eb-863956bcd963@amd.com> (raw)
In-Reply-To: <20230226165435.41641-5-Arunpravin.PaneerSelvam@amd.com>
Am 26.02.23 um 17:54 schrieb Arunpravin Paneer Selvam:
> - Add UAPI header support for userqueue Secure semaphore
>
> v2: (Christian)
> - Add bo handles,bo flags and padding fields.
> - Include value/va in a combined array.
>
> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
> Signed-off-by: Arunpravin Paneer Selvam <Arunpravin.PaneerSelvam@amd.com>
> ---
> .../amd/amdgpu/amdgpu_userqueue_mqd_gfx_v11.c | 1 +
> include/uapi/drm/amdgpu_drm.h | 46 +++++++++++++++++++
> 2 files changed, 47 insertions(+)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_userqueue_mqd_gfx_v11.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_userqueue_mqd_gfx_v11.c
> index b8943e6aea22..5cb255a39732 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_userqueue_mqd_gfx_v11.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_userqueue_mqd_gfx_v11.c
> @@ -22,6 +22,7 @@
> */
> #include "amdgpu.h"
> #include "amdgpu_userqueue.h"
> +#include "amdgpu_userq_fence.h"
> #include "v11_structs.h"
> #include "amdgpu_mes.h"
> #include "mes_api_def.h"
> diff --git a/include/uapi/drm/amdgpu_drm.h b/include/uapi/drm/amdgpu_drm.h
> index 2d94cca566e0..bd37c715f5a7 100644
> --- a/include/uapi/drm/amdgpu_drm.h
> +++ b/include/uapi/drm/amdgpu_drm.h
> @@ -56,6 +56,8 @@ extern "C" {
> #define DRM_AMDGPU_SCHED 0x15
> #define DRM_AMDGPU_USERQ 0x16
> #define DRM_AMDGPU_USERQ_DOORBELL_RING 0x17
> +#define DRM_AMDGPU_USERQ_SIGNAL 0x18
> +#define DRM_AMDGPU_USERQ_WAIT 0x19
>
> #define DRM_IOCTL_AMDGPU_GEM_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_GEM_CREATE, union drm_amdgpu_gem_create)
> #define DRM_IOCTL_AMDGPU_GEM_MMAP DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_GEM_MMAP, union drm_amdgpu_gem_mmap)
> @@ -75,6 +77,8 @@ extern "C" {
> #define DRM_IOCTL_AMDGPU_SCHED DRM_IOW(DRM_COMMAND_BASE + DRM_AMDGPU_SCHED, union drm_amdgpu_sched)
> #define DRM_IOCTL_AMDGPU_USERQ DRM_IOW(DRM_COMMAND_BASE + DRM_AMDGPU_USERQ, union drm_amdgpu_userq)
> #define DRM_IOCTL_AMDGPU_USERQ_DOORBELL_RING DRM_IOW(DRM_COMMAND_BASE + DRM_AMDGPU_USERQ_DOORBELL_RING, struct drm_amdgpu_db_ring)
> +#define DRM_IOCTL_AMDGPU_USERQ_SIGNAL DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_USERQ_SIGNAL, struct drm_amdgpu_userq_signal)
> +#define DRM_IOCTL_AMDGPU_USERQ_WAIT DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_USERQ_WAIT, struct drm_amdgpu_userq_wait)
>
> /**
> * DOC: memory domains
> @@ -361,6 +365,48 @@ union drm_amdgpu_userq {
> struct drm_amdgpu_userq_out out;
> };
>
> +/* userq signal/wait ioctl */
> +struct drm_amdgpu_userq_signal {
> + /** Queue ID */
> + __u32 queue_id;
> + /** Flags */
> + __u32 flags;
> + /** Sync obj handle */
> + __u32 handle;
Maybe rename to obj_handle or even syncobj_handle.
> + __u32 pad;
> + /* Sync obj timeline */
> + __u64 point;
Same prefix here, either obj_point or even better syncobj_point.
> + /** number of BO handles */
> + __u64 num_bo_handles;
This can be 32bit I think. And when you move the bo_flags after this
field we don't even need a padding.
> + /** array of BO handles */
> + __u64 bo_handles_array;
> + /** bo flags */
> + __u32 bo_flags;
> +};
> +
> +struct drm_amdgpu_userq_fence_info {
> + __u64 va;
> + __u64 value;
> +};
> +
> +struct drm_amdgpu_userq_wait {
> + /** Flags */
> + __u32 flags;
> + /** array of Sync obj handles */
> + __u64 handles;
> + __u32 pad;
That padding is misplaced as far as I can see.
> + /** number of Sync obj handles */
> + __u64 count_handles;
Better let's us use num_syncobj_handles here as well. And u32 should be
sufficient.
If you re-arrange the fields you could also drop the padding.
> + /** number of BO handles */
> + __u64 num_bo_handles;
Again u32 is sufficient for the number of handles.
> + /** array of BO handles */
> + __u64 bo_handles_array;
> + /** bo flags */
> + __u32 bo_wait_flags;
> + /** array of addr/values */
> + __u64 userq_fence_info;
We need a number for that as well. It can be that a BO is idle and has
no fences and it can be that we have tons of fences on a single BO.
The usual semantics is that you call the kernel driver with the
userq_fence_info==0 first to get how much space you need to reserve and
then once more after you allocated enough.
See function sync_file_ioctl_fence_info() for a good example how to do this.
Regards,
Christian.
> +};
> +
> /* vm ioctl */
> #define AMDGPU_VM_OP_RESERVE_VMID 1
> #define AMDGPU_VM_OP_UNRESERVE_VMID 2
next prev parent reply other threads:[~2023-02-27 12:53 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-02-26 16:54 [PATCH 0/6] Usermode queue fencing synchronization Arunpravin Paneer Selvam
2023-02-26 16:54 ` [PATCH 1/6] drm/amdgpu: Implement a new 64bit sequence memory driver Arunpravin Paneer Selvam
2023-02-26 16:54 ` [PATCH 2/6] drm/amdgpu: Implement a new userqueue fence driver Arunpravin Paneer Selvam
2023-02-27 12:42 ` Christian König
2023-02-28 8:45 ` Arunpravin Paneer Selvam
2023-02-26 16:54 ` [PATCH 3/6] drm/amdgpu: Add mqd support for the fence address Arunpravin Paneer Selvam
2023-02-26 16:54 ` [PATCH 4/6] drm/amdgpu: UAPI headers for userqueue Secure semaphore Arunpravin Paneer Selvam
2023-02-27 12:52 ` Christian König [this message]
2023-02-26 16:54 ` [PATCH 5/6] drm/amdgpu: Implement userqueue signal/wait IOCTL functions Arunpravin Paneer Selvam
2023-02-27 12:59 ` Christian König
2023-02-27 13:20 ` Arunpravin Paneer Selvam
2023-02-27 13:23 ` Christian König
2023-02-27 13:35 ` Arunpravin Paneer Selvam
2023-02-26 16:54 ` [PATCH 6/6] drm/amdgpu: Enable userqueue fence interrupt handling support Arunpravin Paneer Selvam
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=f4a2d704-5096-e03e-84eb-863956bcd963@amd.com \
--to=christian.koenig@amd.com \
--cc=Arunpravin.PaneerSelvam@amd.com \
--cc=alexander.deucher@amd.com \
--cc=amd-gfx@lists.freedesktop.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.