vhost: enable CONFIG feature

Message ID 20220913095519.2554445-1-chenh@yusur.tech (mailing list archive)
State Superseded, archived
Delegated to: Maxime Coquelin
Headers
Series vhost: enable CONFIG feature |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/iol-mellanox-Performance success Performance Testing PASS
ci/iol-aarch64-unit-testing success Testing PASS
ci/iol-intel-Functional success Functional Testing PASS
ci/iol-x86_64-unit-testing success Testing PASS
ci/iol-x86_64-compile-testing success Testing PASS
ci/iol-intel-Performance success Performance Testing PASS
ci/iol-aarch64-compile-testing success Testing PASS
ci/github-robot: build success github build: passed
ci/Intel-compilation fail Compilation issues
ci/intel-Testing success Testing PASS

Commit Message

Hao Chen Sept. 13, 2022, 9:55 a.m. UTC
Enable this feature, so that libvirt or qemu can call vdpa vendor
driver's ops '.get_config' through 'vhost_net_get_config' to get
the mac address of the vdpa hardware without manual configuration.

Signed-off-by: Hao Chen <chenh@yusur.tech>
---
 lib/vhost/vhost_user.h | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
  

Comments

houyl@yusur.tech Sept. 15, 2022, 8:04 a.m. UTC | #1
On Tue, Sep 13, 2022 at 17:55 PM Hao Chen <chenh@yusur.tech> wrote:


>From: Hao Chen



>Date: 2022-09-13 17:55



>To: maxime.coquelin; chenbo.xia



>CC: dev; houyl; zy; Hao Chen



>Subject: [PATCH] vhost: enable CONFIG feature



>Enable this feature, so that libvirt or qemu can call vdpa vendor



>driver's ops '.get_config' through 'vhost_net_get_config' to get



>the mac address of the vdpa hardware without manual configuration.



 



>Signed-off-by: Hao Chen <chenh@yusur.tech>



>---



>lib/vhost/vhost_user.h | 3 ++-



>1 file changed, 2 insertions(+), 1 deletion(-)



 



>diff --git a/lib/vhost/vhost_user.h b/lib/vhost/vhost_user.h



>index 8ecca68597..12e8d116f3 100644



>--- a/lib/vhost/vhost_user.h



>+++ b/lib/vhost/vhost_user.h



>@@ -23,7 +23,8 @@



>(1ULL << VHOST_USER_PROTOCOL_F_SLAVE_SEND_FD) | \



>(1ULL << VHOST_USER_PROTOCOL_F_HOST_NOTIFIER) | \



>(1ULL << VHOST_USER_PROTOCOL_F_PAGEFAULT) | \



>- (1ULL << VHOST_USER_PROTOCOL_F_STATUS))



>+ (1ULL << VHOST_USER_PROTOCOL_F_STATUS) | \



>+ (1ULL << VHOST_USER_PROTOCOL_F_CONFIG))



>typedef enum VhostUserRequest {



>VHOST_USER_NONE = 0,



>--



Yusur (YUSUR Technology Co., Ltd.) focuses on the research and development of special data processors.
The independently developed international leading DPU series products can be widely used in ultra-low
latency network, big data processing, 5G edge computing, high-speed storage and other scenarios,
helping computing power become the new productivity of the digital era.

The company put forward innovative Software Defined Accelerator technology and independently
developed the chip architecture KPU(Kernel Processing Unit) and agile heterogeneous Software stack
(HADOS) for domain-specific computing (DSA).


Now, adding the feature of obtain vdpa device's mac address automatically for DPDK vDPA  path.
  
Chenbo Xia Sept. 26, 2022, 7:26 a.m. UTC | #2
> -----Original Message-----
> From: Hao Chen <chenh@yusur.tech>
> Sent: Tuesday, September 13, 2022 5:55 PM
> To: maxime.coquelin@redhat.com; Xia, Chenbo <chenbo.xia@intel.com>
> Cc: dev@dpdk.org; houyl@yusur.tech; zy@yusur.tech; Hao Chen
> <chenh@yusur.tech>
> Subject: [PATCH] vhost: enable CONFIG feature
> 
> Enable this feature, so that libvirt or qemu can call vdpa vendor
> driver's ops '.get_config' through 'vhost_net_get_config' to get
> the mac address of the vdpa hardware without manual configuration.

I think we should add this in vendor's vdpa driver, not in common library.
Because some hardware and the sw back-end can't support get/set config.

Thanks,
Chenbo

> 
> Signed-off-by: Hao Chen <chenh@yusur.tech>
> ---
>  lib/vhost/vhost_user.h | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/lib/vhost/vhost_user.h b/lib/vhost/vhost_user.h
> index 8ecca68597..12e8d116f3 100644
> --- a/lib/vhost/vhost_user.h
> +++ b/lib/vhost/vhost_user.h
> @@ -23,7 +23,8 @@
>  					 (1ULL <<
> VHOST_USER_PROTOCOL_F_SLAVE_SEND_FD) | \
>  					 (1ULL <<
> VHOST_USER_PROTOCOL_F_HOST_NOTIFIER) | \
>  					 (1ULL << VHOST_USER_PROTOCOL_F_PAGEFAULT) |
> \
> -					 (1ULL << VHOST_USER_PROTOCOL_F_STATUS))
> +					 (1ULL << VHOST_USER_PROTOCOL_F_STATUS) | \
> +					 (1ULL << VHOST_USER_PROTOCOL_F_CONFIG))
> 
>  typedef enum VhostUserRequest {
>  	VHOST_USER_NONE = 0,
> --
> 2.34.1
  
Hao Chen Oct. 8, 2022, 3:40 a.m. UTC | #3
On 2022/9/26 15:26, Xia, Chenbo wrote:
>> -----Original Message-----
>> From: Hao Chen <chenh@yusur.tech>
>> Sent: Tuesday, September 13, 2022 5:55 PM
>> To: maxime.coquelin@redhat.com; Xia, Chenbo <chenbo.xia@intel.com>
>> Cc: dev@dpdk.org; houyl@yusur.tech; zy@yusur.tech; Hao Chen
>> <chenh@yusur.tech>
>> Subject: [PATCH] vhost: enable CONFIG feature
>>
>> Enable this feature, so that libvirt or qemu can call vdpa vendor
>> driver's ops '.get_config' through 'vhost_net_get_config' to get
>> the mac address of the vdpa hardware without manual configuration.
> I think we should add this in vendor's vdpa driver, not in common library.
> Because some hardware and the sw back-end can't support get/set config.
>
> Thanks,
> Chenbo

In function 'rte_vhost_driver_get_protocol_features' at 
lib/vhost/socket.c, "*protocol_features = vsocket->protocol_features & 
vdpa_protocol_features". If you want vdpa driver to support VHOST_ USER_ 
PROTOCOL_ F_ CONFIG, we need to add this feature here, and we also need 
the vdpa driver to support VHOST_ USER_ PROTOCOL_ F_ CONFIG in rte_ 
vdpa_ dev_ ops's get_ features,  only add this in vendor's vdpa driver 
is invalid.

Thanks.

>> Signed-off-by: Hao Chen <chenh@yusur.tech>
>> ---
>>   lib/vhost/vhost_user.h | 3 ++-
>>   1 file changed, 2 insertions(+), 1 deletion(-)
>>
>> diff --git a/lib/vhost/vhost_user.h b/lib/vhost/vhost_user.h
>> index 8ecca68597..12e8d116f3 100644
>> --- a/lib/vhost/vhost_user.h
>> +++ b/lib/vhost/vhost_user.h
>> @@ -23,7 +23,8 @@
>>   					 (1ULL <<
>> VHOST_USER_PROTOCOL_F_SLAVE_SEND_FD) | \
>>   					 (1ULL <<
>> VHOST_USER_PROTOCOL_F_HOST_NOTIFIER) | \
>>   					 (1ULL << VHOST_USER_PROTOCOL_F_PAGEFAULT) |
>> \
>> -					 (1ULL << VHOST_USER_PROTOCOL_F_STATUS))
>> +					 (1ULL << VHOST_USER_PROTOCOL_F_STATUS) | \
>> +					 (1ULL << VHOST_USER_PROTOCOL_F_CONFIG))
>>
>>   typedef enum VhostUserRequest {
>>   	VHOST_USER_NONE = 0,
>> --
>> 2.34.1
  
Hao Chen Oct. 8, 2022, 7:56 a.m. UTC | #4
On 2022/9/26 15:26, Xia, Chenbo wrote:
>> -----Original Message-----
>> From: Hao Chen <chenh@yusur.tech>
>> Sent: Tuesday, September 13, 2022 5:55 PM
>> To: maxime.coquelin@redhat.com; Xia, Chenbo <chenbo.xia@intel.com>
>> Cc: dev@dpdk.org; houyl@yusur.tech; zy@yusur.tech; Hao Chen
>> <chenh@yusur.tech>
>> Subject: [PATCH] vhost: enable CONFIG feature
>>
>> Enable this feature, so that libvirt or qemu can call vdpa vendor
>> driver's ops '.get_config' through 'vhost_net_get_config' to get
>> the mac address of the vdpa hardware without manual configuration.
> I think we should add this in vendor's vdpa driver, not in common library.
> Because some hardware and the sw back-end can't support get/set config.
>
> Thanks,
> Chenbo
Yeah, maybe add "if (vdpa_protocol_features & (1ULL << 
VHOST_USER_PROTOCOL_F_CONFIG))   *protocol_features |= (1ULL << 
VHOST_USER_PROTOCOL_F_CONFIG);" at the end of function 
'rte_vhost_driver_get_protocol_features' will be better. I will send 
patch v2.

Thanks.
>> Signed-off-by: Hao Chen <chenh@yusur.tech>
>> ---
>>   lib/vhost/vhost_user.h | 3 ++-
>>   1 file changed, 2 insertions(+), 1 deletion(-)
>>
>> diff --git a/lib/vhost/vhost_user.h b/lib/vhost/vhost_user.h
>> index 8ecca68597..12e8d116f3 100644
>> --- a/lib/vhost/vhost_user.h
>> +++ b/lib/vhost/vhost_user.h
>> @@ -23,7 +23,8 @@
>>   					 (1ULL <<
>> VHOST_USER_PROTOCOL_F_SLAVE_SEND_FD) | \
>>   					 (1ULL <<
>> VHOST_USER_PROTOCOL_F_HOST_NOTIFIER) | \
>>   					 (1ULL << VHOST_USER_PROTOCOL_F_PAGEFAULT) |
>> \
>> -					 (1ULL << VHOST_USER_PROTOCOL_F_STATUS))
>> +					 (1ULL << VHOST_USER_PROTOCOL_F_STATUS) | \
>> +					 (1ULL << VHOST_USER_PROTOCOL_F_CONFIG))
>>
>>   typedef enum VhostUserRequest {
>>   	VHOST_USER_NONE = 0,
>> --
>> 2.34.1
  

Patch

diff --git a/lib/vhost/vhost_user.h b/lib/vhost/vhost_user.h
index 8ecca68597..12e8d116f3 100644
--- a/lib/vhost/vhost_user.h
+++ b/lib/vhost/vhost_user.h
@@ -23,7 +23,8 @@ 
 					 (1ULL << VHOST_USER_PROTOCOL_F_SLAVE_SEND_FD) | \
 					 (1ULL << VHOST_USER_PROTOCOL_F_HOST_NOTIFIER) | \
 					 (1ULL << VHOST_USER_PROTOCOL_F_PAGEFAULT) | \
-					 (1ULL << VHOST_USER_PROTOCOL_F_STATUS))
+					 (1ULL << VHOST_USER_PROTOCOL_F_STATUS) | \
+					 (1ULL << VHOST_USER_PROTOCOL_F_CONFIG))
 
 typedef enum VhostUserRequest {
 	VHOST_USER_NONE = 0,