Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1420213 > unrolled thread
| Started by | "Wei Hu (Xavier)" <xavier.huwei@huawei.com> |
|---|---|
| First post | 2016-06-12 11:50 +0200 |
| Last post | 2016-06-17 03:30 +0200 |
| Articles | 3 — 2 participants |
Back to article view | Back to linux.kernel
This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by
below is the oldest one visible, not the original post.
Re: [PATCH v9 11/22] IB/hns: Add IB device registration "Wei Hu (Xavier)" <xavier.huwei@huawei.com> - 2016-06-12 11:50 +0200
Re: [PATCH v9 11/22] IB/hns: Add IB device registration Leon Romanovsky <leon@kernel.org> - 2016-06-13 14:50 +0200
Re: [PATCH v9 11/22] IB/hns: Add IB device registration "Wei Hu (Xavier)" <xavier.huwei@huawei.com> - 2016-06-17 03:30 +0200
| From | "Wei Hu (Xavier)" <xavier.huwei@huawei.com> |
|---|---|
| Date | 2016-06-12 11:50 +0200 |
| Subject | Re: [PATCH v9 11/22] IB/hns: Add IB device registration |
| Message-ID | <rJabL-6Xa-3@gated-at.bofh.it> |
On 2016/6/9 14:26, Leon Romanovsky wrote:
> On Wed, Jun 01, 2016 at 11:37:53PM +0800, Lijun Ou wrote:
>> This patch registered IB device when loaded, and unregistered
>> IB device when removed.
>>
>> Signed-off-by: Wei Hu <xavier.huwei@huawei.com>
>> Signed-off-by: Nenglong Zhao <zhaonenglong@hisilicon.com>
>> Signed-off-by: Lijun Ou <oulijun@huawei.com>
>> ---
>> drivers/infiniband/hw/hns/hns_roce_main.c | 46 +++++++++++++++++++++++++++++++
>> 1 file changed, 46 insertions(+)
>>
>> diff --git a/drivers/infiniband/hw/hns/hns_roce_main.c b/drivers/infiniband/hw/hns/hns_roce_main.c
>> index 7fb0d34..f179a7f 100644
>> --- a/drivers/infiniband/hw/hns/hns_roce_main.c
>> +++ b/drivers/infiniband/hw/hns/hns_roce_main.c
>> @@ -62,6 +62,41 @@
>> #include "hns_roce_device.h"
>> #include "hns_roce_icm.h"
>>
>> +void hns_roce_unregister_device(struct hns_roce_dev *hr_dev)
> You are not calling to this function in this patch.
>
>> +{
>> + ib_unregister_device(&hr_dev->ib_dev);
>> +}
>> +
>> +int hns_roce_register_device(struct hns_roce_dev *hr_dev)
> This function should be static.
>
>> +{
>> + int ret;
>> + struct hns_roce_ib_iboe *iboe = NULL;
>> + struct ib_device *ib_dev = NULL;
>> + struct device *dev = &hr_dev->pdev->dev;
>> +
>> + iboe = &hr_dev->iboe;
>> +
>> + ib_dev = &hr_dev->ib_dev;
>> + strlcpy(ib_dev->name, "hisi_%d", IB_DEVICE_NAME_MAX);
>> +
>> + ib_dev->owner = THIS_MODULE;
>> + ib_dev->node_type = RDMA_NODE_IB_CA;
>> + ib_dev->dma_device = dev;
>> +
>> + ib_dev->phys_port_cnt = hr_dev->caps.num_ports;
>> + ib_dev->local_dma_lkey = hr_dev->caps.reserved_lkey;
>> + ib_dev->num_comp_vectors = hr_dev->caps.num_comp_vectors;
>> + ib_dev->uverbs_abi_ver = 1;
>> +
>> + ret = ib_register_device(ib_dev, NULL);
>> + if (ret) {
>> + dev_err(dev, "ib_register_device failed!\n");
>> + return ret;
>> + }
>> +
>> + return 0;
>> +}
>> +
>> int hns_roce_get_cfg(struct hns_roce_dev *hr_dev)
>> {
>> int i;
>> @@ -363,6 +398,17 @@ static int hns_roce_probe(struct platform_device *pdev)
>> goto error_failed_engine_init;
>> }
>>
>> + ret = hns_roce_register_device(hr_dev);
>> + if (ret) {
>> + dev_err(dev, "register_device failed!\n");
> According to the current code, you will print this error together with
> error line in hns_roce_register_device for the same failure.
>
> "ib_register_device failed!"
> "register_device failed!"
Hi, leon
In this patch [PATCH v9 11/22], there is only one error branch in
funtion named hns_roce_register_device.
In the following patch [PATCH v9 13/22], we add more operation,
there are more
than two error branch in this function as below.
@@ -212,8 +402,27 @@ int hns_roce_register_device(struct hns_roce_dev *hr_dev)
goto error_failed_setup_mtu_gids;
}
spin_lock_init(&iboe->lock);
iboe->nb.notifier_call = hns_roce_netdev_event;
ret = register_netdevice_notifier(&iboe->nb);
if (ret) {
dev_err(dev, "register_netdevice_notifier failed!\n");
goto error_failed_setup_mtu_gids;
}
iboe->nb_inet.notifier_call = hns_roce_inet_event;
ret = register_inetaddr_notifier(&iboe->nb_inet);
if (ret) {
dev_err(dev, "register inet addr notifier failed!\n");
goto error_failed_register_inetaddr_notifier;
}
return 0;
error_failed_register_inetaddr_notifier:
unregister_netdevice_notifier(&iboe->nb);
error_failed_setup_mtu_gids:
ib_unregister_device(ib_dev);
Regards
Wei Hu
>
>> + goto error_failed_register_device;
>> + }
>> +
>> + return 0;
>> +
>> +error_failed_register_device:
>> + hns_roce_engine_exit(hr_dev);
>> +
>> error_failed_engine_init:
>> hns_roce_cleanup_bitmap(hr_dev);
>>
>> --
>> 1.9.1
>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at http://vger.kernel.org/majordomo-info.html
[toc] | [next] | [standalone]
| From | Leon Romanovsky <leon@kernel.org> |
|---|---|
| Date | 2016-06-13 14:50 +0200 |
| Message-ID | <rJztw-6l4-43@gated-at.bofh.it> |
| In reply to | #1420213 |
[Multipart message — attachments visible in raw view] — view raw
On Sun, Jun 12, 2016 at 05:41:06PM +0800, Wei Hu (Xavier) wrote:
>
>
> On 2016/6/9 14:26, Leon Romanovsky wrote:
> >On Wed, Jun 01, 2016 at 11:37:53PM +0800, Lijun Ou wrote:
> >>This patch registered IB device when loaded, and unregistered
> >>IB device when removed.
> >>
> >>Signed-off-by: Wei Hu <xavier.huwei@huawei.com>
> >>Signed-off-by: Nenglong Zhao <zhaonenglong@hisilicon.com>
> >>Signed-off-by: Lijun Ou <oulijun@huawei.com>
> >>---
> >> drivers/infiniband/hw/hns/hns_roce_main.c | 46 +++++++++++++++++++++++++++++++
> >> 1 file changed, 46 insertions(+)
> >>
> >>diff --git a/drivers/infiniband/hw/hns/hns_roce_main.c b/drivers/infiniband/hw/hns/hns_roce_main.c
> >>index 7fb0d34..f179a7f 100644
> >>--- a/drivers/infiniband/hw/hns/hns_roce_main.c
> >>+++ b/drivers/infiniband/hw/hns/hns_roce_main.c
> >>@@ -62,6 +62,41 @@
> >> #include "hns_roce_device.h"
> >> #include "hns_roce_icm.h"
> >>+void hns_roce_unregister_device(struct hns_roce_dev *hr_dev)
> >You are not calling to this function in this patch.
> >
> >>+{
> >>+ ib_unregister_device(&hr_dev->ib_dev);
> >>+}
> >>+
> >>+int hns_roce_register_device(struct hns_roce_dev *hr_dev)
> >This function should be static.
> >
> >>+{
> >>+ int ret;
> >>+ struct hns_roce_ib_iboe *iboe = NULL;
> >>+ struct ib_device *ib_dev = NULL;
> >>+ struct device *dev = &hr_dev->pdev->dev;
> >>+
> >>+ iboe = &hr_dev->iboe;
> >>+
> >>+ ib_dev = &hr_dev->ib_dev;
> >>+ strlcpy(ib_dev->name, "hisi_%d", IB_DEVICE_NAME_MAX);
> >>+
> >>+ ib_dev->owner = THIS_MODULE;
> >>+ ib_dev->node_type = RDMA_NODE_IB_CA;
> >>+ ib_dev->dma_device = dev;
> >>+
> >>+ ib_dev->phys_port_cnt = hr_dev->caps.num_ports;
> >>+ ib_dev->local_dma_lkey = hr_dev->caps.reserved_lkey;
> >>+ ib_dev->num_comp_vectors = hr_dev->caps.num_comp_vectors;
> >>+ ib_dev->uverbs_abi_ver = 1;
> >>+
> >>+ ret = ib_register_device(ib_dev, NULL);
> >>+ if (ret) {
> >>+ dev_err(dev, "ib_register_device failed!\n");
> >>+ return ret;
> >>+ }
> >>+
> >>+ return 0;
> >>+}
> >>+
> >> int hns_roce_get_cfg(struct hns_roce_dev *hr_dev)
> >> {
> >> int i;
> >>@@ -363,6 +398,17 @@ static int hns_roce_probe(struct platform_device *pdev)
> >> goto error_failed_engine_init;
> >> }
> >>+ ret = hns_roce_register_device(hr_dev);
> >>+ if (ret) {
> >>+ dev_err(dev, "register_device failed!\n");
> >According to the current code, you will print this error together with
> >error line in hns_roce_register_device for the same failure.
> >
> >"ib_register_device failed!"
> >"register_device failed!"
> Hi, leon
> In this patch [PATCH v9 11/22], there is only one error branch in
> funtion named hns_roce_register_device.
> In the following patch [PATCH v9 13/22], we add more operation, there
> are more
> than two error branch in this function as below.
Yes, and in all these error flows you already printed debug messages, your
"register_device failed" print is useless.
[toc] | [prev] | [next] | [standalone]
| From | "Wei Hu (Xavier)" <xavier.huwei@huawei.com> |
|---|---|
| Date | 2016-06-17 03:30 +0200 |
| Message-ID | <rKQLD-8aN-5@gated-at.bofh.it> |
| In reply to | #1420796 |
On 2016/6/13 20:46, Leon Romanovsky wrote:
> On Sun, Jun 12, 2016 at 05:41:06PM +0800, Wei Hu (Xavier) wrote:
>>
>> On 2016/6/9 14:26, Leon Romanovsky wrote:
>>> On Wed, Jun 01, 2016 at 11:37:53PM +0800, Lijun Ou wrote:
>>>> This patch registered IB device when loaded, and unregistered
>>>> IB device when removed.
>>>>
>>>> Signed-off-by: Wei Hu <xavier.huwei@huawei.com>
>>>> Signed-off-by: Nenglong Zhao <zhaonenglong@hisilicon.com>
>>>> Signed-off-by: Lijun Ou <oulijun@huawei.com>
>>>> ---
>>>> drivers/infiniband/hw/hns/hns_roce_main.c | 46 +++++++++++++++++++++++++++++++
>>>> 1 file changed, 46 insertions(+)
>>>>
>>>> diff --git a/drivers/infiniband/hw/hns/hns_roce_main.c b/drivers/infiniband/hw/hns/hns_roce_main.c
>>>> index 7fb0d34..f179a7f 100644
>>>> --- a/drivers/infiniband/hw/hns/hns_roce_main.c
>>>> +++ b/drivers/infiniband/hw/hns/hns_roce_main.c
>>>> @@ -62,6 +62,41 @@
>>>> #include "hns_roce_device.h"
>>>> #include "hns_roce_icm.h"
>>>> +void hns_roce_unregister_device(struct hns_roce_dev *hr_dev)
>>> You are not calling to this function in this patch.
>>>
>>>> +{
>>>> + ib_unregister_device(&hr_dev->ib_dev);
>>>> +}
>>>> +
>>>> +int hns_roce_register_device(struct hns_roce_dev *hr_dev)
>>> This function should be static.
>>>
>>>> +{
>>>> + int ret;
>>>> + struct hns_roce_ib_iboe *iboe = NULL;
>>>> + struct ib_device *ib_dev = NULL;
>>>> + struct device *dev = &hr_dev->pdev->dev;
>>>> +
>>>> + iboe = &hr_dev->iboe;
>>>> +
>>>> + ib_dev = &hr_dev->ib_dev;
>>>> + strlcpy(ib_dev->name, "hisi_%d", IB_DEVICE_NAME_MAX);
>>>> +
>>>> + ib_dev->owner = THIS_MODULE;
>>>> + ib_dev->node_type = RDMA_NODE_IB_CA;
>>>> + ib_dev->dma_device = dev;
>>>> +
>>>> + ib_dev->phys_port_cnt = hr_dev->caps.num_ports;
>>>> + ib_dev->local_dma_lkey = hr_dev->caps.reserved_lkey;
>>>> + ib_dev->num_comp_vectors = hr_dev->caps.num_comp_vectors;
>>>> + ib_dev->uverbs_abi_ver = 1;
>>>> +
>>>> + ret = ib_register_device(ib_dev, NULL);
>>>> + if (ret) {
>>>> + dev_err(dev, "ib_register_device failed!\n");
>>>> + return ret;
>>>> + }
>>>> +
>>>> + return 0;
>>>> +}
>>>> +
>>>> int hns_roce_get_cfg(struct hns_roce_dev *hr_dev)
>>>> {
>>>> int i;
>>>> @@ -363,6 +398,17 @@ static int hns_roce_probe(struct platform_device *pdev)
>>>> goto error_failed_engine_init;
>>>> }
>>>> + ret = hns_roce_register_device(hr_dev);
>>>> + if (ret) {
>>>> + dev_err(dev, "register_device failed!\n");
>>> According to the current code, you will print this error together with
>>> error line in hns_roce_register_device for the same failure.
>>>
>>> "ib_register_device failed!"
>>> "register_device failed!"
>> Hi, leon
>> In this patch [PATCH v9 11/22], there is only one error branch in
>> funtion named hns_roce_register_device.
>> In the following patch [PATCH v9 13/22], we add more operation, there
>> are more
>> than two error branch in this function as below.
> Yes, and in all these error flows you already printed debug messages, your
> "register_device failed" print is useless.
Hi, leon
We have fixed it.
And Oulijun have sent PATCH V10. Thanks
Regards
Wei Hu
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web