From: Felix Kuehling <felix.kuehling@amd.com>
To: David Yat Sin <david.yatsin@amd.com>, amd-gfx@lists.freedesktop.org
Cc: rajneesh.bhardwaj@amd.com
Subject: Re: [PATCH 10/18] drm/amdkfd: CRIU restore queue ids
Date: Mon, 23 Aug 2021 14:29:52 -0400 [thread overview]
Message-ID: <6fb17533-3247-0f38-a071-778c788cee26@amd.com> (raw)
In-Reply-To: <20210819133713.4168-11-david.yatsin@amd.com>
Am 2021-08-19 um 9:37 a.m. schrieb David Yat Sin:
> When re-creating queues during CRIU restore, restore the queue with the
> same queue id value used during CRIU dump. Adding a new private
> structure queue_restore_data to store queue restore information.
The sentence about the queue_restore_data structure is outdated.
Regards,
Felix
>
> Signed-off-by: Rajneesh Bhardwaj <rajneesh.bhardwaj@amd.com>
> Signed-off-by: David Yat Sin <david.yatsin@amd.com>
> ---
> drivers/gpu/drm/amd/amdkfd/kfd_chardev.c | 4 ++--
> drivers/gpu/drm/amd/amdkfd/kfd_dbgdev.c | 2 +-
> drivers/gpu/drm/amd/amdkfd/kfd_priv.h | 2 ++
> .../amd/amdkfd/kfd_process_queue_manager.c | 22 ++++++++++++++++++-
> 4 files changed, 26 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c
> index 6f1c9fb8d46c..813ed42e3ce6 100644
> --- a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c
> +++ b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c
> @@ -312,7 +312,7 @@ static int kfd_ioctl_create_queue(struct file *filep, struct kfd_process *p,
> p->pasid,
> dev->id);
>
> - err = pqm_create_queue(&p->pqm, dev, filep, &q_properties, &queue_id,
> + err = pqm_create_queue(&p->pqm, dev, filep, &q_properties, &queue_id, NULL,
> &doorbell_offset_in_process);
> if (err != 0)
> goto err_create_queue;
> @@ -2543,7 +2543,7 @@ static int criu_restore_queue(struct kfd_process *p,
>
> print_queue_properties(&qp);
>
> - ret = pqm_create_queue(&p->pqm, dev, NULL, &qp, &queue_id, NULL);
> + ret = pqm_create_queue(&p->pqm, dev, NULL, &qp, &queue_id, q_data, NULL);
> if (ret) {
> pr_err("Failed to create new queue err:%d\n", ret);
> ret = -EINVAL;
> diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_dbgdev.c b/drivers/gpu/drm/amd/amdkfd/kfd_dbgdev.c
> index 159add0f5aaa..749a7a3bf191 100644
> --- a/drivers/gpu/drm/amd/amdkfd/kfd_dbgdev.c
> +++ b/drivers/gpu/drm/amd/amdkfd/kfd_dbgdev.c
> @@ -185,7 +185,7 @@ static int dbgdev_register_diq(struct kfd_dbgdev *dbgdev)
> properties.type = KFD_QUEUE_TYPE_DIQ;
>
> status = pqm_create_queue(dbgdev->pqm, dbgdev->dev, NULL,
> - &properties, &qid, NULL);
> + &properties, &qid, NULL, NULL);
>
> if (status) {
> pr_err("Failed to create DIQ\n");
> diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_priv.h b/drivers/gpu/drm/amd/amdkfd/kfd_priv.h
> index 4b4808b191f2..eaf5fe1480e9 100644
> --- a/drivers/gpu/drm/amd/amdkfd/kfd_priv.h
> +++ b/drivers/gpu/drm/amd/amdkfd/kfd_priv.h
> @@ -468,6 +468,7 @@ enum KFD_QUEUE_PRIORITY {
> * it's user mode or kernel mode queue.
> *
> */
> +
> struct queue_properties {
> enum kfd_queue_type type;
> enum kfd_queue_format format;
> @@ -1114,6 +1115,7 @@ int pqm_create_queue(struct process_queue_manager *pqm,
> struct file *f,
> struct queue_properties *properties,
> unsigned int *qid,
> + const struct kfd_criu_queue_priv_data *q_data,
> uint32_t *p_doorbell_offset_in_process);
> int pqm_destroy_queue(struct process_queue_manager *pqm, unsigned int qid);
> int pqm_update_queue(struct process_queue_manager *pqm, unsigned int qid,
> diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c b/drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c
> index 95a6c36cea4c..e6abab16b8de 100644
> --- a/drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c
> +++ b/drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c
> @@ -42,6 +42,20 @@ static inline struct process_queue_node *get_queue_by_qid(
> return NULL;
> }
>
> +static int assign_queue_slot_by_qid(struct process_queue_manager *pqm,
> + unsigned int qid)
> +{
> + if (qid >= KFD_MAX_NUM_OF_QUEUES_PER_PROCESS)
> + return -EINVAL;
> +
> + if (__test_and_set_bit(qid, pqm->queue_slot_bitmap)) {
> + pr_err("Cannot create new queue because requested qid(%u) is in use\n", qid);
> + return -ENOSPC;
> + }
> +
> + return 0;
> +}
> +
> static int find_available_queue_slot(struct process_queue_manager *pqm,
> unsigned int *qid)
> {
> @@ -193,6 +207,7 @@ int pqm_create_queue(struct process_queue_manager *pqm,
> struct file *f,
> struct queue_properties *properties,
> unsigned int *qid,
> + const struct kfd_criu_queue_priv_data *q_data,
> uint32_t *p_doorbell_offset_in_process)
> {
> int retval;
> @@ -224,7 +239,12 @@ int pqm_create_queue(struct process_queue_manager *pqm,
> if (pdd->qpd.queue_count >= max_queues)
> return -ENOSPC;
>
> - retval = find_available_queue_slot(pqm, qid);
> + if (q_data) {
> + retval = assign_queue_slot_by_qid(pqm, q_data->q_id);
> + *qid = q_data->q_id;
> + } else
> + retval = find_available_queue_slot(pqm, qid);
> +
> if (retval != 0)
> return retval;
>
next prev parent reply other threads:[~2021-08-23 18:29 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-08-19 13:36 [PATCH 00/18] CHECKPOINT RESTORE WITH ROCm David Yat Sin
2021-08-19 13:36 ` [PATCH 01/18] x86/configs: CRIU update release defconfig David Yat Sin
2021-08-19 13:36 ` [PATCH 02/18] x86/configs: CRIU update debug rock defconfig David Yat Sin
2021-08-19 13:36 ` [PATCH 03/18] drm/amdkfd: CRIU Introduce Checkpoint-Restore APIs David Yat Sin
2021-08-23 18:57 ` Felix Kuehling
2021-08-19 13:36 ` [PATCH 04/18] drm/amdkfd: CRIU Implement KFD process_info ioctl David Yat Sin
2021-08-19 13:37 ` [PATCH 05/18] drm/amdkfd: CRIU Implement KFD dumper ioctl David Yat Sin
2021-08-23 18:53 ` Felix Kuehling
2021-08-19 13:37 ` [PATCH 06/18] drm/amdkfd: CRIU Implement KFD restore ioctl David Yat Sin
2021-08-19 13:37 ` [PATCH 07/18] drm/amdkfd: CRIU Implement KFD resume ioctl David Yat Sin
2021-08-19 13:37 ` [PATCH 08/18] drm/amdkfd: CRIU Implement KFD pause ioctl David Yat Sin
2021-08-19 13:37 ` [PATCH 09/18] drm/amdkfd: CRIU add queues support David Yat Sin
2021-08-23 18:29 ` Felix Kuehling
2021-08-19 13:37 ` [PATCH 10/18] drm/amdkfd: CRIU restore queue ids David Yat Sin
2021-08-23 18:29 ` Felix Kuehling [this message]
2021-08-19 13:37 ` [PATCH 11/18] drm/amdkfd: CRIU restore sdma id for queues David Yat Sin
2021-08-19 13:37 ` [PATCH 12/18] drm/amdkfd: CRIU restore queue doorbell id David Yat Sin
2021-08-19 13:37 ` [PATCH 13/18] drm/amdkfd: CRIU dump and restore queue mqds David Yat Sin
2021-08-19 13:37 ` [PATCH 14/18] drm/amdkfd: CRIU dump/restore queue control stack David Yat Sin
2021-08-19 13:37 ` [PATCH 15/18] drm/amdkfd: CRIU dump and restore events David Yat Sin
2021-08-23 18:39 ` Felix Kuehling
2021-08-19 13:37 ` [PATCH 16/18] drm/amdkfd: CRIU implement gpu_id remapping David Yat Sin
2021-08-23 18:48 ` Felix Kuehling
2021-08-19 13:37 ` [PATCH 17/18] Revert "drm/amdgpu: Remove verify_access shortcut for KFD BOs" David Yat Sin
2021-08-19 13:37 ` [PATCH 18/18] drm/amdkfd: CRIU export kfd bos as prime dmabuf objects David Yat Sin
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=6fb17533-3247-0f38-a071-778c788cee26@amd.com \
--to=felix.kuehling@amd.com \
--cc=amd-gfx@lists.freedesktop.org \
--cc=david.yatsin@amd.com \
--cc=rajneesh.bhardwaj@amd.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox