From: "Wei Hu (Xavier)" <xavier.huwei@huawei.com>
To: Jason Gunthorpe <jgg@ziepe.ca>
Cc: dledford@redhat.com, linux-rdma@vger.kernel.org,
linux-kernel@vger.kernel.org, xavier.huwei@tom.com,
lijun_nudt@163.com
Subject: Re: [PATCH rdma-next 1/5] RDMA/hns: Implement the disassociate_ucontext API
Date: Wed, 23 May 2018 17:33:58 +0800 [thread overview]
Message-ID: <5B053586.8090800@huawei.com> (raw)
In-Reply-To: <20180522202141.GA21148@ziepe.ca>
On 2018/5/23 4:21, Jason Gunthorpe wrote:
> On Sat, May 19, 2018 at 04:24:40PM +0800, Wei Hu (Xavier) wrote:
>>
>> On 2018/5/17 23:00, Jason Gunthorpe wrote:
>>> On Thu, May 17, 2018 at 04:02:49PM +0800, Wei Hu (Xavier) wrote:
>>>> This patch Implements the IB core disassociate_ucontext API.
>>>>
>>>> Signed-off-by: Wei Hu (Xavier) <xavier.huwei@huawei.com>
>>>> drivers/infiniband/hw/hns/hns_roce_main.c | 36 +++++++++++++++++++++++++++++++
>>>> 1 file changed, 36 insertions(+)
>>>>
>>>> diff --git a/drivers/infiniband/hw/hns/hns_roce_main.c b/drivers/infiniband/hw/hns/hns_roce_main.c
>>>> index 96fb6a9..7fafe9d 100644
>>>> +++ b/drivers/infiniband/hw/hns/hns_roce_main.c
>>>> @@ -33,6 +33,9 @@
>>>> #include <linux/acpi.h>
>>>> #include <linux/of_platform.h>
>>>> #include <linux/module.h>
>>>> +#include <linux/sched.h>
>>>> +#include <linux/sched/mm.h>
>>>> +#include <linux/sched/task.h>
>>>> #include <rdma/ib_addr.h>
>>>> #include <rdma/ib_smi.h>
>>>> #include <rdma/ib_user_verbs.h>
>>>> @@ -422,6 +425,38 @@ static int hns_roce_port_immutable(struct ib_device *ib_dev, u8 port_num,
>>>> return 0;
>>>> }
>>>>
>>>> +static void hns_roce_disassociate_ucontext(struct ib_ucontext *ibcontext)
>>>> +{
>>>> + struct task_struct *process;
>>>> + struct mm_struct *mm;
>>>> +
>>>> + process = get_pid_task(ibcontext->tgid, PIDTYPE_PID);
>>>> + if (!process)
>>>> + return;
>>>> +
>>>> + mm = get_task_mm(process);
>>>> + if (!mm) {
>>>> + pr_info("no mm, disassociate ucontext is pending task termination\n");
>>>> + while (1) {
>>>> + put_task_struct(process);
>>>> + usleep_range(1000, 2000);
>>>> + process = get_pid_task(ibcontext->tgid, PIDTYPE_PID);
>>>> + if (!process || process->state == TASK_DEAD) {
>>>> + pr_info("disassociate ucontext done, task was terminated\n");
>>>> + /* if task was dead, need to release the task
>>>> + * struct.
>>>> + */
>>>> + if (process)
>>>> + put_task_struct(process);
>>>> + return;
>>>> + }
>>>> + }
>>>> + }
>>> I don't want to see this boilerplate code copied into every
>>> driver. Hoist it into the core code, have the disassociate driver callback
>>> accept a mm_struct parameter, and refactor the other drivers using this.
>> When the userspace RDMA application process is suspended for some reason
>> without executing ibv_close_device function,
>> There will be calltrace as follows when rmmod roce kernel driver ko in
>> the current version.
>> It looks like a common problem to every driver and the code segment
>> above is suitable for every driver.
>> Pardon me for asking, but if you have any plan to do this?
> My plan is to ask you to do it :)
Hi, Jason
I will pull this patch out of the series and send V2.
We will think how to hoist it into the core code later.
Thanks
Regards
Wei Hu
> Jason
>
> .
>
WARNING: multiple messages have this Message-ID (diff)
From: "Wei Hu (Xavier)" <xavier.huwei@huawei.com>
To: Jason Gunthorpe <jgg@ziepe.ca>
Cc: <dledford@redhat.com>, <linux-rdma@vger.kernel.org>,
<linux-kernel@vger.kernel.org>, <xavier.huwei@tom.com>,
<lijun_nudt@163.com>
Subject: Re: [PATCH rdma-next 1/5] RDMA/hns: Implement the disassociate_ucontext API
Date: Wed, 23 May 2018 17:33:58 +0800 [thread overview]
Message-ID: <5B053586.8090800@huawei.com> (raw)
In-Reply-To: <20180522202141.GA21148@ziepe.ca>
On 2018/5/23 4:21, Jason Gunthorpe wrote:
> On Sat, May 19, 2018 at 04:24:40PM +0800, Wei Hu (Xavier) wrote:
>>
>> On 2018/5/17 23:00, Jason Gunthorpe wrote:
>>> On Thu, May 17, 2018 at 04:02:49PM +0800, Wei Hu (Xavier) wrote:
>>>> This patch Implements the IB core disassociate_ucontext API.
>>>>
>>>> Signed-off-by: Wei Hu (Xavier) <xavier.huwei@huawei.com>
>>>> drivers/infiniband/hw/hns/hns_roce_main.c | 36 +++++++++++++++++++++++++++++++
>>>> 1 file changed, 36 insertions(+)
>>>>
>>>> diff --git a/drivers/infiniband/hw/hns/hns_roce_main.c b/drivers/infiniband/hw/hns/hns_roce_main.c
>>>> index 96fb6a9..7fafe9d 100644
>>>> +++ b/drivers/infiniband/hw/hns/hns_roce_main.c
>>>> @@ -33,6 +33,9 @@
>>>> #include <linux/acpi.h>
>>>> #include <linux/of_platform.h>
>>>> #include <linux/module.h>
>>>> +#include <linux/sched.h>
>>>> +#include <linux/sched/mm.h>
>>>> +#include <linux/sched/task.h>
>>>> #include <rdma/ib_addr.h>
>>>> #include <rdma/ib_smi.h>
>>>> #include <rdma/ib_user_verbs.h>
>>>> @@ -422,6 +425,38 @@ static int hns_roce_port_immutable(struct ib_device *ib_dev, u8 port_num,
>>>> return 0;
>>>> }
>>>>
>>>> +static void hns_roce_disassociate_ucontext(struct ib_ucontext *ibcontext)
>>>> +{
>>>> + struct task_struct *process;
>>>> + struct mm_struct *mm;
>>>> +
>>>> + process = get_pid_task(ibcontext->tgid, PIDTYPE_PID);
>>>> + if (!process)
>>>> + return;
>>>> +
>>>> + mm = get_task_mm(process);
>>>> + if (!mm) {
>>>> + pr_info("no mm, disassociate ucontext is pending task termination\n");
>>>> + while (1) {
>>>> + put_task_struct(process);
>>>> + usleep_range(1000, 2000);
>>>> + process = get_pid_task(ibcontext->tgid, PIDTYPE_PID);
>>>> + if (!process || process->state == TASK_DEAD) {
>>>> + pr_info("disassociate ucontext done, task was terminated\n");
>>>> + /* if task was dead, need to release the task
>>>> + * struct.
>>>> + */
>>>> + if (process)
>>>> + put_task_struct(process);
>>>> + return;
>>>> + }
>>>> + }
>>>> + }
>>> I don't want to see this boilerplate code copied into every
>>> driver. Hoist it into the core code, have the disassociate driver callback
>>> accept a mm_struct parameter, and refactor the other drivers using this.
>> When the userspace RDMA application process is suspended for some reason
>> without executing ibv_close_device function,
>> There will be calltrace as follows when rmmod roce kernel driver ko in
>> the current version.
>> It looks like a common problem to every driver and the code segment
>> above is suitable for every driver.
>> Pardon me for asking, but if you have any plan to do this?
> My plan is to ask you to do it :)
Hi, Jason
I will pull this patch out of the series and send V2.
We will think how to hoist it into the core code later.
Thanks
Regards
Wei Hu
> Jason
>
> .
>
next prev parent reply other threads:[~2018-05-23 9:33 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-05-17 8:02 [PATCH rdma-next 0/5] Misc update for hns driver Wei Hu (Xavier)
2018-05-17 8:02 ` Wei Hu (Xavier)
2018-05-17 8:02 ` [PATCH rdma-next 1/5] RDMA/hns: Implement the disassociate_ucontext API Wei Hu (Xavier)
2018-05-17 8:02 ` Wei Hu (Xavier)
2018-05-17 15:00 ` Jason Gunthorpe
2018-05-19 8:24 ` Wei Hu (Xavier)
2018-05-19 8:24 ` Wei Hu (Xavier)
2018-05-22 20:21 ` Jason Gunthorpe
2018-05-23 9:33 ` Wei Hu (Xavier) [this message]
2018-05-23 9:33 ` Wei Hu (Xavier)
2018-05-17 8:02 ` [PATCH rdma-next 2/5] RDMA/hns: Modify uar allocation algorithm to avoid bitmap exhaust Wei Hu (Xavier)
2018-05-17 8:02 ` Wei Hu (Xavier)
2018-05-23 6:05 ` Leon Romanovsky
2018-05-23 6:49 ` Wei Hu (Xavier)
2018-05-23 6:49 ` Wei Hu (Xavier)
2018-05-23 7:00 ` Leon Romanovsky
2018-05-23 7:12 ` Wei Hu (Xavier)
2018-05-23 7:12 ` Wei Hu (Xavier)
2018-05-23 7:22 ` Leon Romanovsky
2018-05-17 8:02 ` [PATCH rdma-next 3/5] RDMA/hns: Increase checking CMQ status timeout value Wei Hu (Xavier)
2018-05-17 8:02 ` Wei Hu (Xavier)
2018-05-23 5:49 ` Leon Romanovsky
2018-05-23 6:09 ` Wei Hu (Xavier)
2018-05-23 6:09 ` Wei Hu (Xavier)
2018-05-23 6:15 ` Wei Hu (Xavier)
2018-05-23 6:15 ` Wei Hu (Xavier)
2018-05-23 6:23 ` Leon Romanovsky
2018-05-17 8:02 ` [PATCH rdma-next 4/5] RDMA/hns: Add reset process for RoCE in hip08 Wei Hu (Xavier)
2018-05-17 8:02 ` Wei Hu (Xavier)
2018-05-17 15:14 ` Jason Gunthorpe
2018-05-18 3:28 ` Wei Hu (Xavier)
2018-05-18 3:28 ` Wei Hu (Xavier)
2018-05-18 4:15 ` Jason Gunthorpe
2018-05-18 7:23 ` Wei Hu (Xavier)
2018-05-18 7:23 ` Wei Hu (Xavier)
2018-05-22 20:26 ` Jason Gunthorpe
2018-05-23 2:54 ` Wei Hu (Xavier)
2018-05-23 2:54 ` Wei Hu (Xavier)
2018-05-23 3:47 ` Jason Gunthorpe
2018-05-23 9:35 ` Wei Hu (Xavier)
2018-05-23 9:35 ` Wei Hu (Xavier)
2018-05-23 3:49 ` Wei Hu (Xavier)
2018-05-23 3:49 ` Wei Hu (Xavier)
2018-05-17 8:02 ` [PATCH rdma-next 5/5] RDMA/hns: Fix the illegal memory operation when cross page Wei Hu (Xavier)
2018-05-17 8:02 ` Wei Hu (Xavier)
2018-05-23 6:17 ` Leon Romanovsky
2018-05-23 6:38 ` Wei Hu (Xavier)
2018-05-23 6:38 ` Wei Hu (Xavier)
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=5B053586.8090800@huawei.com \
--to=xavier.huwei@huawei.com \
--cc=dledford@redhat.com \
--cc=jgg@ziepe.ca \
--cc=lijun_nudt@163.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-rdma@vger.kernel.org \
--cc=xavier.huwei@tom.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 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.