From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <dev-bounces@dpdk.org>
Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124])
	by inbox.dpdk.org (Postfix) with ESMTP id 890BDA04FF;
	Tue, 24 May 2022 05:27:15 +0200 (CEST)
Received: from [217.70.189.124] (localhost [127.0.0.1])
	by mails.dpdk.org (Postfix) with ESMTP id 2AF4D4014F;
	Tue, 24 May 2022 05:27:15 +0200 (CEST)
Received: from mga06.intel.com (mga06b.intel.com [134.134.136.31])
 by mails.dpdk.org (Postfix) with ESMTP id 76C07400D6
 for <dev@dpdk.org>; Tue, 24 May 2022 05:27:13 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
 d=intel.com; i=@intel.com; q=dns/txt; s=Intel;
 t=1653362833; x=1684898833;
 h=from:to:cc:subject:date:message-id:references:
 in-reply-to:content-transfer-encoding:mime-version;
 bh=hQBpswltCp5KumRiIB3RCtf1Go5pDDimPvt6hiMRV6Q=;
 b=IH/4zr2B1w4hFEB1I0NAYh7AZjayGIa8UsoH0LkvefA9OKfS/WYDo/qy
 VIM/T+CvMrn68KUJghtz1Ii72ek7Iq6VzHme8vmrwMlCUDAfqhuAZONGx
 k9mPdrlEEHOpqj7IlAJt+DiQrhxL2m09/G+i6H5dnwxvNVa19Mm5mfaZF
 6CXSlacpzMH9AEiCy4qws+RyrpBDaoh05dRcfEBbwQ0xzCsPlCp7dXgLS
 +RWg37yf9XJjSAQbazu0iv+cz6B1YAea3RaqSeQzAO3hJnqf/29Gz+TbI
 QlS2KYgWJam0h6BNSZj3KLbCs7DTgj1n2JTKvp6qLaT+aZGm5M0OEZrCc Q==;
X-IronPort-AV: E=McAfee;i="6400,9594,10356"; a="334065889"
X-IronPort-AV: E=Sophos;i="5.91,247,1647327600"; d="scan'208";a="334065889"
Received: from orsmga008.jf.intel.com ([10.7.209.65])
 by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;
 23 May 2022 20:27:12 -0700
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="5.91,247,1647327600"; d="scan'208";a="601004362"
Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16])
 by orsmga008.jf.intel.com with ESMTP; 23 May 2022 20:27:12 -0700
Received: from orsmsx606.amr.corp.intel.com (10.22.229.19) by
 ORSMSX603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.1.2308.27; Mon, 23 May 2022 20:27:11 -0700
Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by
 orsmsx606.amr.corp.intel.com (10.22.229.19) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.1.2308.27 via Frontend Transport; Mon, 23 May 2022 20:27:11 -0700
Received: from NAM12-DM6-obe.outbound.protection.outlook.com (104.47.59.174)
 by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.1.2308.27; Mon, 23 May 2022 20:27:11 -0700
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=gberxaGRxwa4MCd4b4Eek2KhgW20d7mYjKkE1LQenj+/+OtTJZMQJ/HlZlPqja0rXwEpzUx85hQ4T0PMJQxoEv/NZpFhhkil0VKlxEuwqdxSBQHw6HyE4OJJLs/HM+5K3oGrYE5bNtFRqzWUz6am0sQgleLnmsvsInTKDomj1ZyhPJtXE+Fm+ckbAnskGaCoci1tHskYvAwQrBY4ipN0aeLTl+7yz40ZFdvPiFY0i2OWO0sN1qmW0k8+X4mAhaXJFzRiy5ae6wyrq8Sb+kMQWJIkry6+aNzbOswP8n9Bz1nd0ji0ANMGK0XUNJk+IhDNIrSLfOX8bT8IjNSe19M89w==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; 
 s=arcselector9901;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=zWsCJa8RSLwc0zZBrGT0BDYVpJ9Tlo+T9MUV/vWu974=;
 b=JZP504NGgyfup7PxddHh+XMGx1ln29gFNfpAcys8PKGckhwLncqTP9MJNXYINA7UwTk36yj4LFYVWzX98I61+CldmB9k5eqLuN3jFsRuhVwTAvzoISX9ZuVSdyqeE1NmUlAvLncmoP6X6nzWvZ3jpXFWAo/gEEAdWqdjWjsmFenKijn9NtewZ/0l8+egpb1USqrFLafO4agLxWjzDlp0UliqURK17H367vxTL3BknY+ekJjJKUMEC2UG3fmjGdXQIH5mxRSFRJj14XIFbsqPrslysbRH6bd69ZOlrQVX6l4c+mPZWogZpsLVrK7R3Ag8dbLZRcO5rbMQmVQzZa2spA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com;
 dkim=pass header.d=intel.com; arc=none
Received: from DM5PR11MB1739.namprd11.prod.outlook.com (2603:10b6:3:111::22)
 by MWHPR11MB0014.namprd11.prod.outlook.com (2603:10b6:301:64::31) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5273.19; Tue, 24 May
 2022 03:27:09 +0000
Received: from DM5PR11MB1739.namprd11.prod.outlook.com
 ([fe80::8c3b:8a54:d186:b555]) by DM5PR11MB1739.namprd11.prod.outlook.com
 ([fe80::8c3b:8a54:d186:b555%11]) with mapi id 15.20.5273.023; Tue, 24 May
 2022 03:27:09 +0000
From: "Pei, Andy" <andy.pei@intel.com>
To: "Xia, Chenbo" <chenbo.xia@intel.com>, "dev@dpdk.org" <dev@dpdk.org>
CC: "maxime.coquelin@redhat.com" <maxime.coquelin@redhat.com>, "Cao, Gang"
 <gang.cao@intel.com>, "Liu, Changpeng" <changpeng.liu@intel.com>, "Xu, Rosen"
 <rosen.xu@intel.com>, "Xiao, QimaiX" <qimaix.xiao@intel.com>
Subject: RE: [PATCH v9 04/13] vdpa/ifc: add blk ops for ifc device
Thread-Topic: [PATCH v9 04/13] vdpa/ifc: add blk ops for ifc device
Thread-Index: AQHYbo8NOJHBF6P7GEe/SfRfRmPr460tVhfAgAAI+/A=
Date: Tue, 24 May 2022 03:27:09 +0000
Message-ID: <DM5PR11MB17392FCFFF3913BB6FB28B318FD79@DM5PR11MB1739.namprd11.prod.outlook.com>
References: <1643093258-47258-2-git-send-email-andy.pei@intel.com>
 <1653298524-232138-1-git-send-email-andy.pei@intel.com>
 <1653298524-232138-5-git-send-email-andy.pei@intel.com>
 <SN6PR11MB3504ADC054E0EE6C823676B09CD79@SN6PR11MB3504.namprd11.prod.outlook.com>
In-Reply-To: <SN6PR11MB3504ADC054E0EE6C823676B09CD79@SN6PR11MB3504.namprd11.prod.outlook.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
dlp-product: dlpe-windows
dlp-version: 11.6.500.17
dlp-reaction: no-action
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=intel.com;
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: b48f7cac-715d-44ee-bec6-08da3d354923
x-ms-traffictypediagnostic: MWHPR11MB0014:EE_
x-microsoft-antispam-prvs: <MWHPR11MB00147B13D7732B07A59C34848FD79@MWHPR11MB0014.namprd11.prod.outlook.com>
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info: Omo+KasiBYpzMWEaogNNO2I7SrTz9Se6GqCXGyoXFLg9wqVG7hvddqz1fyg3U+C2y5InE9yPPqr14bBRE9Dzyu5iHZdrfs5/sMjVZS8GE/2jb3BPIHwkTnaRg+R1HpmmMfozb1PxOTPdWt2d3SJGcl11M0bdcUEUG0u/usTMHhxclg3NjV8Ne0PALx3Xbvu+UDtd/XRKt6jONz4lARjKTCrONAv41ygt2PgfgBhhVhlCAibhK4gXCCoelBdoagd7MDdE0IbZJZRO+CUbhiH73HpqiHjyR9EuxFNemzfkRBVO1RgnI9GGcmylGQ7iXyWsaZ/XRFaCma0jOeExGBunN+mSWW1R9vzucPrvRXC2JOAWMSCCrre20J2iThOjoxYJ4cPUyTdSmoxXW9qRBvfb1BM3ic6XZf+hp+StMEjETE7zOmj+zF1pnr52ecdjHFHZYEViRhDPbmnk4kzWUad9TZdVy3ErcODYbANm2/Q1SEk5KpMLVz4ymQ1CvzBPpOpS1LOoXly09Ewc8mJzygLwHwP02VhwtE7TROU8GALsFOY1mVNOpVZc5R14MGHMsOo4/OprYk3lt5D2XnP1SCAcN/H4gCc32qGRMjNjNHL+zSmYLWTmsF1PP3nNY7pCNkr3U2Vl+NfoO1y6/0TN+pKnDtM64Uzz55HE2pWP3ametHyDPVT3cEYedqoW8uXheaZgDm+VG9PyQYhM6hCJK6pPCA==
x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:;
 IPV:NLI; SFV:NSPM; H:DM5PR11MB1739.namprd11.prod.outlook.com; PTR:; CAT:NONE;
 SFS:(13230001)(366004)(86362001)(26005)(66476007)(66556008)(64756008)(38100700002)(186003)(38070700005)(54906003)(71200400001)(9686003)(76116006)(107886003)(66446008)(110136005)(66946007)(2906002)(6506007)(33656002)(55016003)(5660300002)(316002)(53546011)(52536014)(7696005)(508600001)(4326008)(83380400001)(8676002)(82960400001)(122000001)(8936002);
 DIR:OUT; SFP:1102; 
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?yPdHoz5+0deNbl7DwUUDwdG0Yp8pFXcs6ek6IxjPI1Kbfd9e6YtTxzO4Qj64?=
 =?us-ascii?Q?0GU/6SOiCv4OqsmnX8xy/2i1OVM+XqQEMMTMANJi/fXRICv5QftJMBBp10W3?=
 =?us-ascii?Q?3FiYe3/UEGwVTKDBtwqNB8JiIBZHyJJIV3tjBYchRfPC6vCfi5kHu4lKXEdN?=
 =?us-ascii?Q?awjAp+yoSOvd3ROxuNKur66zHU95cXklCKJlALTjv5yAOpcj0lqUaURJ0HOk?=
 =?us-ascii?Q?H0CcyD6cjUsQNJg2rM7ytE8B73EdIrJ2MOX8qRYs0DVguB8KWQrFaUUYvaEe?=
 =?us-ascii?Q?pqnhahG76ALAEXlnhjjLFzZE1wEuos+g/qke9b3HOfZKrXyaoxrics45g3gd?=
 =?us-ascii?Q?cCMiWDvwuYNL4FxLBWfkfcjJnkMOyo74L7DCcCkp8otvAorNMR4VQ5Oi1Zpk?=
 =?us-ascii?Q?p45yMFrgVJJsZjRKAWF3JSdeKZZ7tLBq+SlIAeybTpA4AvlE255GS9G5E5B/?=
 =?us-ascii?Q?p3ntRN7FUx8B49qKLk17aMchS12ve5yBpp1MmJXaLpuBQeM53Wf9bPg+yPmF?=
 =?us-ascii?Q?65k+4YILD8z55oc7/jxHwusFhrwNh9FxGMXQBECKnxQqjhLvFFMC90DynX8V?=
 =?us-ascii?Q?xg59U6Np768RTFS7WPzckJT+2Fpw/ta0Z4t7E53vTDwcIPZ4CZySx+CJ5q4n?=
 =?us-ascii?Q?Ff8PNYQO2Pi+dWhf9z+7K/UqwsuDyuYK+XWBRQ6ULzkYok6hBQwzjXpFFOIL?=
 =?us-ascii?Q?a0enDd4uPqTXM46FKczedAcW4oDRE3lPQAXL3eGm0wGA31BNViuDj0/KbUFK?=
 =?us-ascii?Q?ir5uelgadhGKzzLZUDhVIt8jULP3vfSphLj5fzNySYK+JTj9RTqHJE1EwNuX?=
 =?us-ascii?Q?Es4vBvBJH6qxQVa5ys2EWhEeYjiKbKdRR5oLNOeIunygfS/lHY3lCU9aBIZU?=
 =?us-ascii?Q?sbj+rplDdnSN+S2+GcObspO/P9FWokS6vg0IKRlMgGyWaFdxrK8vi6EwPDFZ?=
 =?us-ascii?Q?9sgd4xGqWWjHzN0vGJDJydIeKxUn6/UEpLEIB2rOxMdYH0u/HAR7ZGGFA26T?=
 =?us-ascii?Q?jypmyRu5cVZmITQoI6rmTe+wYI/FWElz8yue5ipkrhJx9mTJUjnlo7CdTKAk?=
 =?us-ascii?Q?IAI2IWeIcSzvspfDnsxl4OkeVUztY867gHjlIQIa1bk8A11vcp22M8ryl0xp?=
 =?us-ascii?Q?sfDYjNuATWma4mHiZe0wdsCzzVys/iYl4Qnwjboi6tmxvBuLaS2HUYZDP+FD?=
 =?us-ascii?Q?74haDX3od+dCkXnurSrydVL1ZGsBAN75riGa7WAuLASnlHGrS0yyL128lMFd?=
 =?us-ascii?Q?jyKso7G+KpmdB7o9QExNv/PkJq8h3oXUJSO9rlVgznA6bsjTMzVJR0RGGZ+v?=
 =?us-ascii?Q?bWb24RbUBlY+FjIAnpVohfgWv64gi6xnbeaInFS7Pk+1CDgWB2ZJNx5OP73x?=
 =?us-ascii?Q?3pDkXbz8hDk3+bFmgL8x2T87b99um19c6BxP6O7UCZa+usDQcsrSN6LtsyUj?=
 =?us-ascii?Q?dh56v9HF1qF02eA6tSPdd2GnddWQWjGuTt+3w4eAr4T5cwe5+ctwrGhbLSS5?=
 =?us-ascii?Q?+hZK+WINHMRgc8jrzhMlmV29OgX0sZ0HGj8R9Jh0Uw+2fO07OrkVOc44xJrG?=
 =?us-ascii?Q?UHZ6uuRo16fM1GZCsKXIK74wvv+1ayUpCIJd/mTt/H3h7Jh2EdLy1GgzJaMq?=
 =?us-ascii?Q?a1xOVEKt4J11bwezwNA+ZDb2P1+435ToY4cJBbPiMzOQ1JldHY5nFhNd3JGX?=
 =?us-ascii?Q?iNKGXfWY7NF04YqU5REsWE+fvuTYUbhxEWcP7C2Rn3t97FVkCD5H7Z7timiO?=
 =?us-ascii?Q?iM1di8vnVg=3D=3D?=
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: DM5PR11MB1739.namprd11.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: b48f7cac-715d-44ee-bec6-08da3d354923
X-MS-Exchange-CrossTenant-originalarrivaltime: 24 May 2022 03:27:09.5361 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: +hJRZDnIuCwb0kbthgj8Y0SPEUW2OCC9qptCMbA2SQzd7uCziV5gs7ehsuq9ejs+rHIU+NG7RyhCC8ZaKK85wg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR11MB0014
X-OriginatorOrg: intel.com
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: DPDK patches and discussions <dev.dpdk.org>
List-Unsubscribe: <https://mails.dpdk.org/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://mails.dpdk.org/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <https://mails.dpdk.org/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
Errors-To: dev-bounces@dpdk.org



> -----Original Message-----
> From: Xia, Chenbo <chenbo.xia@intel.com>
> Sent: Tuesday, May 24, 2022 10:55 AM
> To: Pei, Andy <andy.pei@intel.com>; dev@dpdk.org
> Cc: maxime.coquelin@redhat.com; Cao, Gang <gang.cao@intel.com>; Liu,
> Changpeng <changpeng.liu@intel.com>; Xu, Rosen <rosen.xu@intel.com>;
> Xiao, QimaiX <qimaix.xiao@intel.com>
> Subject: RE: [PATCH v9 04/13] vdpa/ifc: add blk ops for ifc device
>=20
> > -----Original Message-----
> > From: Pei, Andy <andy.pei@intel.com>
> > Sent: Monday, May 23, 2022 5:35 PM
> > To: dev@dpdk.org
> > Cc: Xia, Chenbo <chenbo.xia@intel.com>; maxime.coquelin@redhat.com;
> > Cao, Gang <gang.cao@intel.com>; Liu, Changpeng
> > <changpeng.liu@intel.com>; Xu, Rosen <rosen.xu@intel.com>; Xiao,
> > QimaiX <qimaix.xiao@intel.com>
> > Subject: [PATCH v9 04/13] vdpa/ifc: add blk ops for ifc device
> >
> > For virtio blk device, re-use part of ifc driver ops.
> > Implement ifcvf_blk_get_config for virtio blk device.
> > Support VHOST_USER_PROTOCOL_F_CONFIG feature for virtio blk device.
> >
> > Signed-off-by: Andy Pei <andy.pei@intel.com>
> > ---
> >  drivers/vdpa/ifc/base/ifcvf.h |  4 ++  drivers/vdpa/ifc/ifcvf_vdpa.c
> > | 91
> > ++++++++++++++++++++++++++++++++++++++++++-
> >  2 files changed, 94 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/vdpa/ifc/base/ifcvf.h
> > b/drivers/vdpa/ifc/base/ifcvf.h index a761d49..b6fdfdb 100644
> > --- a/drivers/vdpa/ifc/base/ifcvf.h
> > +++ b/drivers/vdpa/ifc/base/ifcvf.h
> > @@ -65,6 +65,10 @@
> >  #define IFCVF_32_BIT_MASK		0xffffffff
> >
> >
> > +#ifndef VHOST_USER_PROTOCOL_F_CONFIG
> > +#define VHOST_USER_PROTOCOL_F_CONFIG	9
> > +#endif
> > +
> >  struct ifcvf_pci_cap {
> >  	u8 cap_vndr;            /* Generic PCI field: PCI_CAP_ID_VNDR */
> >  	u8 cap_next;            /* Generic PCI field: next ptr. */
> > diff --git a/drivers/vdpa/ifc/ifcvf_vdpa.c
> > b/drivers/vdpa/ifc/ifcvf_vdpa.c index 1eed90b..c1fc1d7 100644
> > --- a/drivers/vdpa/ifc/ifcvf_vdpa.c
> > +++ b/drivers/vdpa/ifc/ifcvf_vdpa.c
> > @@ -1087,6 +1087,10 @@ struct rte_vdpa_dev_info {
> >  		 1ULL << VHOST_USER_PROTOCOL_F_HOST_NOTIFIER | \
> >  		 1ULL << VHOST_USER_PROTOCOL_F_LOG_SHMFD | \
> >  		 1ULL << VHOST_USER_PROTOCOL_F_STATUS)
> > +
> > +#define VDPA_BLK_PROTOCOL_FEATURES \
> > +		(1ULL << VHOST_USER_PROTOCOL_F_CONFIG)
> > +
> >  static int
> >  ifcvf_get_protocol_features(struct rte_vdpa_device *vdev, uint64_t
> > *features)
> >  {
> > @@ -1199,6 +1203,91 @@ struct rte_vdpa_dev_info {
> >  	return device_id;
> >  }
> >
> > +static int
> > +ifcvf_blk_get_config(int vid, uint8_t *config, uint32_t size) {
> > +	struct virtio_blk_config *dev_cfg;
> > +	struct ifcvf_internal *internal;
> > +	struct rte_vdpa_device *vdev;
> > +	struct internal_list *list;
> > +	uint32_t i;
> > +	uint64_t capacity =3D 0;
> > +	uint8_t *byte;
> > +
> > +	if (size !=3D sizeof(struct virtio_blk_config)) {
> > +		DRV_LOG(ERR, "Invalid len: %u, required: %u",
> > +			size, (uint32_t)sizeof(struct virtio_blk_config));
> > +		return -1;
> > +	}
> > +
> > +	vdev =3D rte_vhost_get_vdpa_device(vid);
>=20
> Check vdev is not NULL here.
>=20
Sure, I will fix it in next version.

> Thanks
> Chenbo
>=20
> > +	list =3D find_internal_resource_by_vdev(vdev);
> > +	if (list =3D=3D NULL) {
> > +		DRV_LOG(ERR, "Invalid vDPA device: %p", vdev);
> > +		return -1;
> > +	}
> > +
> > +	internal =3D list->internal;
> > +
> > +	for (i =3D 0; i < sizeof(struct virtio_blk_config); i++)
> > +		config[i] =3D *((u8 *)internal->hw.blk_cfg + i);
> > +
> > +	dev_cfg =3D (struct virtio_blk_config *)internal->hw.blk_cfg;
> > +
> > +	/* cannot read 64-bit register in one attempt, so read byte by byte.
> > */
> > +	for (i =3D 0; i < sizeof(internal->hw.blk_cfg->capacity); i++) {
> > +		byte =3D (uint8_t *)&internal->hw.blk_cfg->capacity + i;
> > +		capacity |=3D (uint64_t)*byte << (i * 8);
> > +	}
> > +	/* The capacity is number of sectors in 512-byte.
> > +	 * So right shift 1 bit  we get in K,
> > +	 * another right shift 10 bits we get in M,
> > +	 * right shift 10 more bits, we get in G.
> > +	 * To show capacity in G, we right shift 21 bits in total.
> > +	 */
> > +	DRV_LOG(DEBUG, "capacity  : %"PRIu64"G", capacity >> 21);
> > +
> > +	DRV_LOG(DEBUG, "size_max  : 0x%08x", dev_cfg->size_max);
> > +	DRV_LOG(DEBUG, "seg_max   : 0x%08x", dev_cfg->seg_max);
> > +	DRV_LOG(DEBUG, "blk_size  : 0x%08x", dev_cfg->blk_size);
> > +	DRV_LOG(DEBUG, "geometry");
> > +	DRV_LOG(DEBUG, "      cylinders: %u", dev_cfg->geometry.cylinders);
> > +	DRV_LOG(DEBUG, "      heads    : %u", dev_cfg->geometry.heads);
> > +	DRV_LOG(DEBUG, "      sectors  : %u", dev_cfg->geometry.sectors);
> > +	DRV_LOG(DEBUG, "num_queues: 0x%08x", dev_cfg->num_queues);
> > +
> > +	DRV_LOG(DEBUG, "config: [%x] [%x] [%x] [%x] [%x] [%x] [%x] [%x]\n",
> > +		config[0], config[1], config[2], config[3], config[4],
> > +		config[5], config[6], config[7]);
> > +	return 0;
> > +}
> > +
> > +static int
> > +ifcvf_blk_get_protocol_features(struct rte_vdpa_device *vdev,
> > +	uint64_t *features)
> > +{
> > +	RTE_SET_USED(vdev);
> > +
> > +	*features =3D VDPA_SUPPORTED_PROTOCOL_FEATURES;
> > +	*features |=3D VDPA_BLK_PROTOCOL_FEATURES;
> > +	return 0;
> > +}
> > +
> > +static struct rte_vdpa_dev_ops ifcvf_blk_ops =3D {
> > +	.get_queue_num =3D ifcvf_get_queue_num,
> > +	.get_features =3D ifcvf_get_vdpa_features,
> > +	.set_features =3D ifcvf_set_features,
> > +	.get_protocol_features =3D ifcvf_blk_get_protocol_features,
> > +	.dev_conf =3D ifcvf_dev_config,
> > +	.dev_close =3D ifcvf_dev_close,
> > +	.set_vring_state =3D ifcvf_set_vring_state,
> > +	.migration_done =3D NULL,
> > +	.get_vfio_group_fd =3D ifcvf_get_vfio_group_fd,
> > +	.get_vfio_device_fd =3D ifcvf_get_vfio_device_fd,
> > +	.get_notify_area =3D ifcvf_get_notify_area,
> > +	.get_config =3D ifcvf_blk_get_config,
> > +};
> > +
> >  struct rte_vdpa_dev_info dev_info[] =3D {
> >  	{
> >  		.features =3D (1ULL << VIRTIO_NET_F_GUEST_ANNOUNCE) |
> @@ -1211,7
> > +1300,7 @@ struct rte_vdpa_dev_info dev_info[] =3D {
> >  	{
> >  		.features =3D (1ULL << VHOST_USER_F_PROTOCOL_FEATURES)
> |
> >  			    (1ULL << VHOST_F_LOG_ALL),
> > -		.ops =3D NULL,
> > +		.ops =3D &ifcvf_blk_ops,
> >  	},
> >  };
> >
> > --
> > 1.8.3.1