linux-rdma.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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

  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).