[RFC,v1,1/2] crypto/virtio-crypto: Read crypto services and algorithm masks
diff mbox

Message ID e0fe84d1df4e0c2c88d7d29f94d621c988c22194.1528462918.git.alifm@linux.ibm.com
State New
Headers show

Commit Message

Farhan Ali June 8, 2018, 7:08 p.m. UTC
Read the crypto services and algorithm masks which provides
information about the services and algorithms supported by
virtio-crypto backend.

Signed-off-by: Farhan Ali <alifm@linux.ibm.com>
---
 drivers/crypto/virtio/virtio_crypto_common.h | 14 ++++++++++++++
 drivers/crypto/virtio/virtio_crypto_core.c   | 29 ++++++++++++++++++++++++++++
 2 files changed, 43 insertions(+)

Comments

Gonglei (Arei) June 11, 2018, 6:43 a.m. UTC | #1
> -----Original Message-----
> From: Farhan Ali [mailto:alifm@linux.ibm.com]
> Sent: Saturday, June 09, 2018 3:09 AM
> To: linux-kernel@vger.kernel.org; kvm@vger.kernel.org
> Cc: mst@redhat.com; qemu-devel@nongnu.org; Gonglei (Arei)
> <arei.gonglei@huawei.com>; longpeng <longpeng2@huawei.com>;
> pasic@linux.ibm.com; frankja@linux.ibm.com; borntraeger@de.ibm.com;
> alifm@linux.ibm.com
> Subject: [RFC v1 1/2] crypto/virtio-crypto: Read crypto services and algorithm
> masks
> 
> Read the crypto services and algorithm masks which provides
> information about the services and algorithms supported by
> virtio-crypto backend.
> 
> Signed-off-by: Farhan Ali <alifm@linux.ibm.com>
> ---
>  drivers/crypto/virtio/virtio_crypto_common.h | 14 ++++++++++++++
>  drivers/crypto/virtio/virtio_crypto_core.c   | 29
> ++++++++++++++++++++++++++++
>  2 files changed, 43 insertions(+)
> 
> diff --git a/drivers/crypto/virtio/virtio_crypto_common.h
> b/drivers/crypto/virtio/virtio_crypto_common.h
> index 66501a5..05eca12e 100644
> --- a/drivers/crypto/virtio/virtio_crypto_common.h
> +++ b/drivers/crypto/virtio/virtio_crypto_common.h
> @@ -55,6 +55,20 @@ struct virtio_crypto {
>  	/* Number of queue currently used by the driver */
>  	u32 curr_queue;
> 
> +	/*
> +	 * Specifies the services mask which the device support,
> +	 * see VIRTIO_CRYPTO_SERVICE_* above
> +	 */

Pls update the above comments. Except that:

Acked-by: Gonglei <arei.gonglei@huawei.com>

> +	u32 crypto_services;
> +
> +	/* Detailed algorithms mask */
> +	u32 cipher_algo_l;
> +	u32 cipher_algo_h;
> +	u32 hash_algo;
> +	u32 mac_algo_l;
> +	u32 mac_algo_h;
> +	u32 aead_algo;
> +
>  	/* Maximum length of cipher key */
>  	u32 max_cipher_key_len;
>  	/* Maximum length of authenticated key */
> diff --git a/drivers/crypto/virtio/virtio_crypto_core.c
> b/drivers/crypto/virtio/virtio_crypto_core.c
> index 8332698..8f745f2 100644
> --- a/drivers/crypto/virtio/virtio_crypto_core.c
> +++ b/drivers/crypto/virtio/virtio_crypto_core.c
> @@ -303,6 +303,13 @@ static int virtcrypto_probe(struct virtio_device *vdev)
>  	u32 max_data_queues = 0, max_cipher_key_len = 0;
>  	u32 max_auth_key_len = 0;
>  	u64 max_size = 0;
> +	u32 cipher_algo_l = 0;
> +	u32 cipher_algo_h = 0;
> +	u32 hash_algo = 0;
> +	u32 mac_algo_l = 0;
> +	u32 mac_algo_h = 0;
> +	u32 aead_algo = 0;
> +	u32 crypto_services = 0;
> 
>  	if (!virtio_has_feature(vdev, VIRTIO_F_VERSION_1))
>  		return -ENODEV;
> @@ -339,6 +346,20 @@ static int virtcrypto_probe(struct virtio_device *vdev)
>  		max_auth_key_len, &max_auth_key_len);
>  	virtio_cread(vdev, struct virtio_crypto_config,
>  		max_size, &max_size);
> +	virtio_cread(vdev, struct virtio_crypto_config,
> +		crypto_services, &crypto_services);
> +	virtio_cread(vdev, struct virtio_crypto_config,
> +		cipher_algo_l, &cipher_algo_l);
> +	virtio_cread(vdev, struct virtio_crypto_config,
> +		cipher_algo_h, &cipher_algo_h);
> +	virtio_cread(vdev, struct virtio_crypto_config,
> +		hash_algo, &hash_algo);
> +	virtio_cread(vdev, struct virtio_crypto_config,
> +		mac_algo_l, &mac_algo_l);
> +	virtio_cread(vdev, struct virtio_crypto_config,
> +		mac_algo_h, &mac_algo_h);
> +	virtio_cread(vdev, struct virtio_crypto_config,
> +		aead_algo, &aead_algo);
> 
>  	/* Add virtio crypto device to global table */
>  	err = virtcrypto_devmgr_add_dev(vcrypto);
> @@ -358,6 +379,14 @@ static int virtcrypto_probe(struct virtio_device *vdev)
>  	vcrypto->max_cipher_key_len = max_cipher_key_len;
>  	vcrypto->max_auth_key_len = max_auth_key_len;
>  	vcrypto->max_size = max_size;
> +	vcrypto->crypto_services = crypto_services;
> +	vcrypto->cipher_algo_l = cipher_algo_l;
> +	vcrypto->cipher_algo_h = cipher_algo_h;
> +	vcrypto->mac_algo_l = mac_algo_l;
> +	vcrypto->mac_algo_h = mac_algo_h;
> +	vcrypto->hash_algo = hash_algo;
> +	vcrypto->aead_algo = aead_algo;
> +
> 
>  	dev_info(&vdev->dev,
>  		"max_queues: %u, max_cipher_key_len: %u, max_auth_key_len: %u,
> max_size 0x%llx\n",
> --
> 2.7.4
Farhan Ali June 12, 2018, 5:06 p.m. UTC | #2
Hi Arei

On 06/11/2018 02:43 AM, Gonglei (Arei) wrote:
> 
>> -----Original Message-----
>> From: Farhan Ali [mailto:alifm@linux.ibm.com]
>> Sent: Saturday, June 09, 2018 3:09 AM
>> To: linux-kernel@vger.kernel.org; kvm@vger.kernel.org
>> Cc: mst@redhat.com; qemu-devel@nongnu.org; Gonglei (Arei)
>> <arei.gonglei@huawei.com>; longpeng <longpeng2@huawei.com>;
>> pasic@linux.ibm.com; frankja@linux.ibm.com; borntraeger@de.ibm.com;
>> alifm@linux.ibm.com
>> Subject: [RFC v1 1/2] crypto/virtio-crypto: Read crypto services and algorithm
>> masks
>>
>> Read the crypto services and algorithm masks which provides
>> information about the services and algorithms supported by
>> virtio-crypto backend.
>>
>> Signed-off-by: Farhan Ali <alifm@linux.ibm.com>
>> ---
>>   drivers/crypto/virtio/virtio_crypto_common.h | 14 ++++++++++++++
>>   drivers/crypto/virtio/virtio_crypto_core.c   | 29
>> ++++++++++++++++++++++++++++
>>   2 files changed, 43 insertions(+)
>>
>> diff --git a/drivers/crypto/virtio/virtio_crypto_common.h
>> b/drivers/crypto/virtio/virtio_crypto_common.h
>> index 66501a5..05eca12e 100644
>> --- a/drivers/crypto/virtio/virtio_crypto_common.h
>> +++ b/drivers/crypto/virtio/virtio_crypto_common.h
>> @@ -55,6 +55,20 @@ struct virtio_crypto {
>>   	/* Number of queue currently used by the driver */
>>   	u32 curr_queue;
>>
>> +	/*
>> +	 * Specifies the services mask which the device support,
>> +	 * see VIRTIO_CRYPTO_SERVICE_* above
>> +	 */
> 
> Pls update the above comments. Except that:
> 
> Acked-by: Gonglei <arei.gonglei@huawei.com>
> 

Sure will update the comment. How about " Specifies the services mask 
which the device support, * see VIRTIO_CRYPTO_SERVICE_*" ?

or should I specify the file where the VIRTIO_CRYPTO_SERVICE_* are defined?

Thanks
Farhan

>> +	u32 crypto_services;
>> +
>> +	/* Detailed algorithms mask */
>> +	u32 cipher_algo_l;
>> +	u32 cipher_algo_h;
>> +	u32 hash_algo;
>> +	u32 mac_algo_l;
>> +	u32 mac_algo_h;
>> +	u32 aead_algo;
>> +
>>   	/* Maximum length of cipher key */
>>   	u32 max_cipher_key_len;
>>   	/* Maximum length of authenticated key */
>> diff --git a/drivers/crypto/virtio/virtio_crypto_core.c
>> b/drivers/crypto/virtio/virtio_crypto_core.c
>> index 8332698..8f745f2 100644
>> --- a/drivers/crypto/virtio/virtio_crypto_core.c
>> +++ b/drivers/crypto/virtio/virtio_crypto_core.c
>> @@ -303,6 +303,13 @@ static int virtcrypto_probe(struct virtio_device *vdev)
>>   	u32 max_data_queues = 0, max_cipher_key_len = 0;
>>   	u32 max_auth_key_len = 0;
>>   	u64 max_size = 0;
>> +	u32 cipher_algo_l = 0;
>> +	u32 cipher_algo_h = 0;
>> +	u32 hash_algo = 0;
>> +	u32 mac_algo_l = 0;
>> +	u32 mac_algo_h = 0;
>> +	u32 aead_algo = 0;
>> +	u32 crypto_services = 0;
>>
>>   	if (!virtio_has_feature(vdev, VIRTIO_F_VERSION_1))
>>   		return -ENODEV;
>> @@ -339,6 +346,20 @@ static int virtcrypto_probe(struct virtio_device *vdev)
>>   		max_auth_key_len, &max_auth_key_len);
>>   	virtio_cread(vdev, struct virtio_crypto_config,
>>   		max_size, &max_size);
>> +	virtio_cread(vdev, struct virtio_crypto_config,
>> +		crypto_services, &crypto_services);
>> +	virtio_cread(vdev, struct virtio_crypto_config,
>> +		cipher_algo_l, &cipher_algo_l);
>> +	virtio_cread(vdev, struct virtio_crypto_config,
>> +		cipher_algo_h, &cipher_algo_h);
>> +	virtio_cread(vdev, struct virtio_crypto_config,
>> +		hash_algo, &hash_algo);
>> +	virtio_cread(vdev, struct virtio_crypto_config,
>> +		mac_algo_l, &mac_algo_l);
>> +	virtio_cread(vdev, struct virtio_crypto_config,
>> +		mac_algo_h, &mac_algo_h);
>> +	virtio_cread(vdev, struct virtio_crypto_config,
>> +		aead_algo, &aead_algo);
>>
>>   	/* Add virtio crypto device to global table */
>>   	err = virtcrypto_devmgr_add_dev(vcrypto);
>> @@ -358,6 +379,14 @@ static int virtcrypto_probe(struct virtio_device *vdev)
>>   	vcrypto->max_cipher_key_len = max_cipher_key_len;
>>   	vcrypto->max_auth_key_len = max_auth_key_len;
>>   	vcrypto->max_size = max_size;
>> +	vcrypto->crypto_services = crypto_services;
>> +	vcrypto->cipher_algo_l = cipher_algo_l;
>> +	vcrypto->cipher_algo_h = cipher_algo_h;
>> +	vcrypto->mac_algo_l = mac_algo_l;
>> +	vcrypto->mac_algo_h = mac_algo_h;
>> +	vcrypto->hash_algo = hash_algo;
>> +	vcrypto->aead_algo = aead_algo;
>> +
>>
>>   	dev_info(&vdev->dev,
>>   		"max_queues: %u, max_cipher_key_len: %u, max_auth_key_len: %u,
>> max_size 0x%llx\n",
>> --
>> 2.7.4
> 
>
Gonglei (Arei) June 13, 2018, 12:27 a.m. UTC | #3
> -----Original Message-----

> From: Farhan Ali [mailto:alifm@linux.ibm.com]

> Sent: Wednesday, June 13, 2018 1:07 AM

> To: Gonglei (Arei) <arei.gonglei@huawei.com>; linux-kernel@vger.kernel.org;

> kvm@vger.kernel.org

> Cc: mst@redhat.com; qemu-devel@nongnu.org; longpeng

> <longpeng2@huawei.com>; pasic@linux.ibm.com; frankja@linux.ibm.com;

> borntraeger@de.ibm.com

> Subject: Re: [RFC v1 1/2] crypto/virtio-crypto: Read crypto services and

> algorithm masks

> 

> Hi Arei

> 

> On 06/11/2018 02:43 AM, Gonglei (Arei) wrote:

> >

> >> -----Original Message-----

> >> From: Farhan Ali [mailto:alifm@linux.ibm.com]

> >> Sent: Saturday, June 09, 2018 3:09 AM

> >> To: linux-kernel@vger.kernel.org; kvm@vger.kernel.org

> >> Cc: mst@redhat.com; qemu-devel@nongnu.org; Gonglei (Arei)

> >> <arei.gonglei@huawei.com>; longpeng <longpeng2@huawei.com>;

> >> pasic@linux.ibm.com; frankja@linux.ibm.com; borntraeger@de.ibm.com;

> >> alifm@linux.ibm.com

> >> Subject: [RFC v1 1/2] crypto/virtio-crypto: Read crypto services and

> algorithm

> >> masks

> >>

> >> Read the crypto services and algorithm masks which provides

> >> information about the services and algorithms supported by

> >> virtio-crypto backend.

> >>

> >> Signed-off-by: Farhan Ali <alifm@linux.ibm.com>

> >> ---

> >>   drivers/crypto/virtio/virtio_crypto_common.h | 14 ++++++++++++++

> >>   drivers/crypto/virtio/virtio_crypto_core.c   | 29

> >> ++++++++++++++++++++++++++++

> >>   2 files changed, 43 insertions(+)

> >>

> >> diff --git a/drivers/crypto/virtio/virtio_crypto_common.h

> >> b/drivers/crypto/virtio/virtio_crypto_common.h

> >> index 66501a5..05eca12e 100644

> >> --- a/drivers/crypto/virtio/virtio_crypto_common.h

> >> +++ b/drivers/crypto/virtio/virtio_crypto_common.h

> >> @@ -55,6 +55,20 @@ struct virtio_crypto {

> >>   	/* Number of queue currently used by the driver */

> >>   	u32 curr_queue;

> >>

> >> +	/*

> >> +	 * Specifies the services mask which the device support,

> >> +	 * see VIRTIO_CRYPTO_SERVICE_* above

> >> +	 */

> >

> > Pls update the above comments. Except that:

> >

> > Acked-by: Gonglei <arei.gonglei@huawei.com>

> >

> 

> Sure will update the comment. How about " Specifies the services mask

> which the device support, * see VIRTIO_CRYPTO_SERVICE_*" ?

> 

It makes sense IMHO :)

Regards,
-Gonglei

> or should I specify the file where the VIRTIO_CRYPTO_SERVICE_* are defined?

> 

> Thanks

> Farhan

> 

> >> +	u32 crypto_services;

> >> +

> >> +	/* Detailed algorithms mask */

> >> +	u32 cipher_algo_l;

> >> +	u32 cipher_algo_h;

> >> +	u32 hash_algo;

> >> +	u32 mac_algo_l;

> >> +	u32 mac_algo_h;

> >> +	u32 aead_algo;

> >> +

> >>   	/* Maximum length of cipher key */

> >>   	u32 max_cipher_key_len;

> >>   	/* Maximum length of authenticated key */

> >> diff --git a/drivers/crypto/virtio/virtio_crypto_core.c

> >> b/drivers/crypto/virtio/virtio_crypto_core.c

> >> index 8332698..8f745f2 100644

> >> --- a/drivers/crypto/virtio/virtio_crypto_core.c

> >> +++ b/drivers/crypto/virtio/virtio_crypto_core.c

> >> @@ -303,6 +303,13 @@ static int virtcrypto_probe(struct virtio_device

> *vdev)

> >>   	u32 max_data_queues = 0, max_cipher_key_len = 0;

> >>   	u32 max_auth_key_len = 0;

> >>   	u64 max_size = 0;

> >> +	u32 cipher_algo_l = 0;

> >> +	u32 cipher_algo_h = 0;

> >> +	u32 hash_algo = 0;

> >> +	u32 mac_algo_l = 0;

> >> +	u32 mac_algo_h = 0;

> >> +	u32 aead_algo = 0;

> >> +	u32 crypto_services = 0;

> >>

> >>   	if (!virtio_has_feature(vdev, VIRTIO_F_VERSION_1))

> >>   		return -ENODEV;

> >> @@ -339,6 +346,20 @@ static int virtcrypto_probe(struct virtio_device

> *vdev)

> >>   		max_auth_key_len, &max_auth_key_len);

> >>   	virtio_cread(vdev, struct virtio_crypto_config,

> >>   		max_size, &max_size);

> >> +	virtio_cread(vdev, struct virtio_crypto_config,

> >> +		crypto_services, &crypto_services);

> >> +	virtio_cread(vdev, struct virtio_crypto_config,

> >> +		cipher_algo_l, &cipher_algo_l);

> >> +	virtio_cread(vdev, struct virtio_crypto_config,

> >> +		cipher_algo_h, &cipher_algo_h);

> >> +	virtio_cread(vdev, struct virtio_crypto_config,

> >> +		hash_algo, &hash_algo);

> >> +	virtio_cread(vdev, struct virtio_crypto_config,

> >> +		mac_algo_l, &mac_algo_l);

> >> +	virtio_cread(vdev, struct virtio_crypto_config,

> >> +		mac_algo_h, &mac_algo_h);

> >> +	virtio_cread(vdev, struct virtio_crypto_config,

> >> +		aead_algo, &aead_algo);

> >>

> >>   	/* Add virtio crypto device to global table */

> >>   	err = virtcrypto_devmgr_add_dev(vcrypto);

> >> @@ -358,6 +379,14 @@ static int virtcrypto_probe(struct virtio_device

> *vdev)

> >>   	vcrypto->max_cipher_key_len = max_cipher_key_len;

> >>   	vcrypto->max_auth_key_len = max_auth_key_len;

> >>   	vcrypto->max_size = max_size;

> >> +	vcrypto->crypto_services = crypto_services;

> >> +	vcrypto->cipher_algo_l = cipher_algo_l;

> >> +	vcrypto->cipher_algo_h = cipher_algo_h;

> >> +	vcrypto->mac_algo_l = mac_algo_l;

> >> +	vcrypto->mac_algo_h = mac_algo_h;

> >> +	vcrypto->hash_algo = hash_algo;

> >> +	vcrypto->aead_algo = aead_algo;

> >> +

> >>

> >>   	dev_info(&vdev->dev,

> >>   		"max_queues: %u, max_cipher_key_len: %u,

> max_auth_key_len: %u,

> >> max_size 0x%llx\n",

> >> --

> >> 2.7.4

> >

> >

Patch
diff mbox

diff --git a/drivers/crypto/virtio/virtio_crypto_common.h b/drivers/crypto/virtio/virtio_crypto_common.h
index 66501a5..05eca12e 100644
--- a/drivers/crypto/virtio/virtio_crypto_common.h
+++ b/drivers/crypto/virtio/virtio_crypto_common.h
@@ -55,6 +55,20 @@  struct virtio_crypto {
 	/* Number of queue currently used by the driver */
 	u32 curr_queue;
 
+	/*
+	 * Specifies the services mask which the device support,
+	 * see VIRTIO_CRYPTO_SERVICE_* above
+	 */
+	u32 crypto_services;
+
+	/* Detailed algorithms mask */
+	u32 cipher_algo_l;
+	u32 cipher_algo_h;
+	u32 hash_algo;
+	u32 mac_algo_l;
+	u32 mac_algo_h;
+	u32 aead_algo;
+
 	/* Maximum length of cipher key */
 	u32 max_cipher_key_len;
 	/* Maximum length of authenticated key */
diff --git a/drivers/crypto/virtio/virtio_crypto_core.c b/drivers/crypto/virtio/virtio_crypto_core.c
index 8332698..8f745f2 100644
--- a/drivers/crypto/virtio/virtio_crypto_core.c
+++ b/drivers/crypto/virtio/virtio_crypto_core.c
@@ -303,6 +303,13 @@  static int virtcrypto_probe(struct virtio_device *vdev)
 	u32 max_data_queues = 0, max_cipher_key_len = 0;
 	u32 max_auth_key_len = 0;
 	u64 max_size = 0;
+	u32 cipher_algo_l = 0;
+	u32 cipher_algo_h = 0;
+	u32 hash_algo = 0;
+	u32 mac_algo_l = 0;
+	u32 mac_algo_h = 0;
+	u32 aead_algo = 0;
+	u32 crypto_services = 0;
 
 	if (!virtio_has_feature(vdev, VIRTIO_F_VERSION_1))
 		return -ENODEV;
@@ -339,6 +346,20 @@  static int virtcrypto_probe(struct virtio_device *vdev)
 		max_auth_key_len, &max_auth_key_len);
 	virtio_cread(vdev, struct virtio_crypto_config,
 		max_size, &max_size);
+	virtio_cread(vdev, struct virtio_crypto_config,
+		crypto_services, &crypto_services);
+	virtio_cread(vdev, struct virtio_crypto_config,
+		cipher_algo_l, &cipher_algo_l);
+	virtio_cread(vdev, struct virtio_crypto_config,
+		cipher_algo_h, &cipher_algo_h);
+	virtio_cread(vdev, struct virtio_crypto_config,
+		hash_algo, &hash_algo);
+	virtio_cread(vdev, struct virtio_crypto_config,
+		mac_algo_l, &mac_algo_l);
+	virtio_cread(vdev, struct virtio_crypto_config,
+		mac_algo_h, &mac_algo_h);
+	virtio_cread(vdev, struct virtio_crypto_config,
+		aead_algo, &aead_algo);
 
 	/* Add virtio crypto device to global table */
 	err = virtcrypto_devmgr_add_dev(vcrypto);
@@ -358,6 +379,14 @@  static int virtcrypto_probe(struct virtio_device *vdev)
 	vcrypto->max_cipher_key_len = max_cipher_key_len;
 	vcrypto->max_auth_key_len = max_auth_key_len;
 	vcrypto->max_size = max_size;
+	vcrypto->crypto_services = crypto_services;
+	vcrypto->cipher_algo_l = cipher_algo_l;
+	vcrypto->cipher_algo_h = cipher_algo_h;
+	vcrypto->mac_algo_l = mac_algo_l;
+	vcrypto->mac_algo_h = mac_algo_h;
+	vcrypto->hash_algo = hash_algo;
+	vcrypto->aead_algo = aead_algo;
+
 
 	dev_info(&vdev->dev,
 		"max_queues: %u, max_cipher_key_len: %u, max_auth_key_len: %u, max_size 0x%llx\n",