From: oulijun <oulijun-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
To: Jason Gunthorpe
<jgunthorpe-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>,
linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Cc: "Wei Hu(Xavier)" <xavier.huwei-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
Subject: Re: [PATCH rdma-core 09/10] hns: Use the generic modalias matcher
Date: Wed, 20 Sep 2017 11:28:11 +0800 [thread overview]
Message-ID: <4349bfc1-61a0-8432-02f7-083bafee7769@huawei.com> (raw)
In-Reply-To: <1505855931-4956-10-git-send-email-jgunthorpe-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
在 2017/9/20 5:18, Jason Gunthorpe 写道:
> Use the new verbs infrastructure to match providers against modalias
> files. This changes the parse of the compatible string to one
> that is based on modalias instead of directly reading the compatible
> string.
>
> Signed-off-by: Jason Gunthorpe <jgunthorpe-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
> ---
> providers/hns/hns_roce_u.c | 52 +++++++---------------------------------
> providers/hns/hns_roce_u.h | 1 +
> providers/hns/hns_roce_u_hw_v1.c | 1 +
> 3 files changed, 10 insertions(+), 44 deletions(-)
>
> diff --git a/providers/hns/hns_roce_u.c b/providers/hns/hns_roce_u.c
> index 88389721811fce..c27212ac7fb603 100644
> --- a/providers/hns/hns_roce_u.c
> +++ b/providers/hns/hns_roce_u.c
> @@ -44,20 +44,11 @@
> #define HID_LEN 15
> #define DEV_MATCH_LEN 128
>
> -struct hca_ent {
> - const char *str;
> - struct hns_roce_u_hw *data;
> - int version;
> -};
> -
> -static const struct hca_ent acpi_table[] = {
> - {"acpi:HISI00D1:", &hns_roce_u_hw_v1, HNS_ROCE_HW_VER1},
> - {},
> -};
> -
> -static const struct hca_ent dt_table[] = {
> - {"hisilicon,hns-roce-v1", &hns_roce_u_hw_v1, HNS_ROCE_HW_VER1},
> - {},
> +static const struct verbs_match_ent hca_table[] = {
> + VERBS_MODALIAS_MATCH("acpi*:HISI00D1:*", &hns_roce_u_hw_v1),
> + VERBS_MODALIAS_MATCH("of:N*T*Chisilicon,hns-roce-v1C*", &hns_roce_u_hw_v1),
> + VERBS_MODALIAS_MATCH("of:N*T*Chisilicon,hns-roce-v1", &hns_roce_u_hw_v1),
> + {}
> };
>
> static struct ibv_context *hns_roce_alloc_context(struct ibv_device *ibdev,
> @@ -178,43 +169,16 @@ static void hns_uninit_device(struct verbs_device *verbs_device)
> free(dev);
> }
>
> -static bool hns_device_match(struct verbs_sysfs_dev *sysfs_dev)
> -{
> - const char *uverbs_sys_path = sysfs_dev->sysfs_path;
> - char value[128];
> - int i;
> -
> - if (ibv_read_sysfs_file(uverbs_sys_path, "device/modalias",
> - value, sizeof(value)) > 0)
> - for (i = 0; i < sizeof(acpi_table) / sizeof(acpi_table[0]); ++i)
> - if (!strcmp(value, acpi_table[i].str)) {
> - sysfs_dev->provider_data =
> - (void *)&acpi_table[i];
> - return true;
> - }
> -
> - if (ibv_read_sysfs_file(uverbs_sys_path, "device/of_node/compatible",
> - value, sizeof(value)) > 0)
> - for (i = 0; i < sizeof(dt_table) / sizeof(dt_table[0]); ++i)
> - if (!strcmp(value, dt_table[i].str)) {
> - sysfs_dev->provider_data = (void *)&dt_table[i];
> - return true;
> - }
> -
> - return false;
> -}
> -
> static struct verbs_device *hns_device_alloc(struct verbs_sysfs_dev *sysfs_dev)
> {
> struct hns_roce_device *dev;
> - const struct hca_ent *hca_ent = sysfs_dev->provider_data;
>
> dev = calloc(1, sizeof(*dev));
> if (!dev)
> return NULL;
>
> - dev->u_hw = hca_ent->data;
> - dev->hw_version = hca_ent->version;
> + dev->u_hw = sysfs_dev->match->driver_data;
> + dev->hw_version = dev->u_hw->hw_version;
> dev->page_size = sysconf(_SC_PAGESIZE);
> return &dev->ibv_dev;
> }
> @@ -223,7 +187,7 @@ static const struct verbs_device_ops hns_roce_dev_ops = {
> .name = "hns",
> .match_min_abi_version = 0,
> .match_max_abi_version = INT_MAX,
> - .match_device = hns_device_match,
> + .match_table = hca_table,
> .alloc_device = hns_device_alloc,
> .uninit_device = hns_uninit_device,
> .alloc_context = hns_roce_alloc_context,
> diff --git a/providers/hns/hns_roce_u.h b/providers/hns/hns_roce_u.h
> index dc8956af4f8fae..d0e2351fc7fc4c 100644
> --- a/providers/hns/hns_roce_u.h
> +++ b/providers/hns/hns_roce_u.h
> @@ -170,6 +170,7 @@ struct hns_roce_qp {
> };
>
> struct hns_roce_u_hw {
> + uint32_t hw_version;
> int (*poll_cq)(struct ibv_cq *ibvcq, int ne, struct ibv_wc *wc);
> int (*arm_cq)(struct ibv_cq *ibvcq, int solicited);
> int (*post_send)(struct ibv_qp *ibvqp, struct ibv_send_wr *wr,
> diff --git a/providers/hns/hns_roce_u_hw_v1.c b/providers/hns/hns_roce_u_hw_v1.c
> index 0de94e1fabd3d9..482eac90df2183 100644
> --- a/providers/hns/hns_roce_u_hw_v1.c
> +++ b/providers/hns/hns_roce_u_hw_v1.c
> @@ -829,6 +829,7 @@ out:
> }
>
> struct hns_roce_u_hw hns_roce_u_hw_v1 = {
> + .hw_version = HNS_ROCE_HW_VER1,
> .poll_cq = hns_roce_u_v1_poll_cq,
> .arm_cq = hns_roce_u_v1_arm_cq,
> .post_send = hns_roce_u_v1_post_send,
>
Acked-by: Lijun Ou <oulijun-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2017-09-20 3:28 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-09-19 21:18 [PATCH rdma-core 00/10] Rework the verb init scheme Jason Gunthorpe
[not found] ` <1505855931-4956-1-git-send-email-jgunthorpe-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2017-09-19 21:18 ` [PATCH rdma-core 01/10] verbs: Change verbs_register_driver to accept the ops struct directly Jason Gunthorpe
[not found] ` <1505855931-4956-2-git-send-email-jgunthorpe-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2017-09-19 21:31 ` Steve Wise
2017-09-25 6:46 ` Devesh Sharma
2017-09-19 21:18 ` [PATCH rdma-core 02/10] cxgb4: Move sysconf up to driver_init Jason Gunthorpe
[not found] ` <1505855931-4956-3-git-send-email-jgunthorpe-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2017-09-19 21:23 ` Steve Wise
2017-09-19 21:18 ` [PATCH rdma-core 03/10] verbs: Split init_device into a match and alloc/bind step Jason Gunthorpe
[not found] ` <1505855931-4956-4-git-send-email-jgunthorpe-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2017-09-26 16:00 ` Yishai Hadas
[not found] ` <5a30e4a3-e22c-5d1a-435d-d3c5d94333fd-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2017-09-27 7:55 ` Leon Romanovsky
[not found] ` <20170927075552.GC2297-U/DQcQFIOTAAJjI8aNfphQ@public.gmane.org>
2017-09-27 13:49 ` Yishai Hadas
2017-09-28 15:56 ` Jason Gunthorpe
2017-09-19 21:18 ` [PATCH rdma-core 04/10] providers: Use the new match_device and allocate_device ops Jason Gunthorpe
[not found] ` <1505855931-4956-5-git-send-email-jgunthorpe-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2017-09-19 21:29 ` Steve Wise
2017-09-19 22:32 ` Jason Gunthorpe
2017-09-24 13:44 ` Amrani, Ram
[not found] ` <BN3PR07MB257813BD7D36694EBF97BA91F8650-EldUQEzkDQfpW3VS/XPqkOFPX92sqiQdvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2017-09-24 20:10 ` Jason Gunthorpe
[not found] ` <20170924201053.GA31652-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2017-09-25 12:52 ` Amrani, Ram
2017-09-25 7:41 ` Devesh Sharma
2017-09-19 21:18 ` [PATCH rdma-core 05/10] verbs: Remove the init_device entry point Jason Gunthorpe
2017-09-19 21:18 ` [PATCH rdma-core 06/10] verbs: Provide common code to match providers against kernel devices Jason Gunthorpe
2017-09-19 21:18 ` [PATCH rdma-core 07/10] providers: Use the new common PCI matching infrastructure Jason Gunthorpe
[not found] ` <1505855931-4956-8-git-send-email-jgunthorpe-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2017-09-24 13:29 ` Amrani, Ram
[not found] ` <BN3PR07MB2578333789DA041401297EC0F8650-EldUQEzkDQfpW3VS/XPqkOFPX92sqiQdvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2017-09-24 15:58 ` Jason Gunthorpe
[not found] ` <20170924155845.GB14796-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2017-09-25 12:52 ` Amrani, Ram
2017-09-25 7:48 ` Devesh Sharma
2017-09-19 21:18 ` [PATCH rdma-core 08/10] cxgb: " Jason Gunthorpe
[not found] ` <1505855931-4956-9-git-send-email-jgunthorpe-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2017-09-19 21:24 ` Steve Wise
2017-09-19 21:18 ` [PATCH rdma-core 09/10] hns: Use the generic modalias matcher Jason Gunthorpe
[not found] ` <1505855931-4956-10-git-send-email-jgunthorpe-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2017-09-20 3:28 ` oulijun [this message]
2017-09-19 21:18 ` [PATCH rdma-core 10/10] rxe: Use VERBS_NAME_MATCH to match the rxe device Jason Gunthorpe
2017-09-28 14:03 ` [PATCH rdma-core 00/10] Rework the verb init scheme Leon Romanovsky
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=4349bfc1-61a0-8432-02f7-083bafee7769@huawei.com \
--to=oulijun-hv44wf8li93qt0dzr+alfa@public.gmane.org \
--cc=jgunthorpe-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org \
--cc=linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=xavier.huwei-hv44wF8Li93QT0dZR+AlfA@public.gmane.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).