compress/isal: fix getting information about CPU

Message ID 1551958101-15679-1-git-send-email-tomaszx.cel@intel.com
State Accepted, archived
Delegated to: akhil goyal
Headers show
Series
  • compress/isal: fix getting information about CPU
Related show

Checks

Context Check Description
ci/Intel-compilation success Compilation OK
ci/checkpatch success coding style OK
ci/intel-Performance-Testing success Performance Testing PASS
ci/mellanox-Performance-Testing success Performance Testing PASS

Commit Message

Cel, TomaszX March 7, 2019, 11:28 a.m.
This patch adds query about CPU features

Fixes: 53a9baa98c36 ("compress/isal: add basic PMD ops")
Cc: stable@dpdk.org

Signed-off-by: Tomasz Cel <tomaszx.cel@intel.com>
---
 drivers/compress/isal/isal_compress_pmd_ops.c | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

Comments

Akhil Goyal March 27, 2019, 2:05 p.m. | #1
Hi Fiona/Lee,

Could you please review this patch.

Thanks,
Akhil

On 3/7/2019 4:58 PM, Tomasz Cel wrote:
> This patch adds query about CPU features
>
> Fixes: 53a9baa98c36 ("compress/isal: add basic PMD ops")
> Cc: stable@dpdk.org
>
> Signed-off-by: Tomasz Cel <tomaszx.cel@intel.com>
> ---
>   drivers/compress/isal/isal_compress_pmd_ops.c | 16 ++++++++++++----
>   1 file changed, 12 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/compress/isal/isal_compress_pmd_ops.c b/drivers/compress/isal/isal_compress_pmd_ops.c
> index 7b91849..fe99959 100644
> --- a/drivers/compress/isal/isal_compress_pmd_ops.c
> +++ b/drivers/compress/isal/isal_compress_pmd_ops.c
> @@ -135,10 +135,18 @@ isal_comp_pmd_info_get(struct rte_compressdev *dev __rte_unused,
>   {
>   	if (dev_info != NULL) {
>   		dev_info->capabilities = isal_pmd_capabilities;
> -		dev_info->feature_flags = RTE_COMPDEV_FF_CPU_AVX512 |
> -				RTE_COMPDEV_FF_CPU_AVX2 |
> -				RTE_COMPDEV_FF_CPU_AVX |
> -				RTE_COMPDEV_FF_CPU_SSE;
> +
> +		/* Check CPU for supported vector instruction and set
> +		 * feature_flags
> +		 */
> +		if (rte_cpu_get_flag_enabled(RTE_CPUFLAG_AVX512F))
> +			dev_info->feature_flags |= RTE_COMPDEV_FF_CPU_AVX512;
> +		else if (rte_cpu_get_flag_enabled(RTE_CPUFLAG_AVX2))
> +			dev_info->feature_flags |= RTE_COMPDEV_FF_CPU_AVX2;
> +		else if (rte_cpu_get_flag_enabled(RTE_CPUFLAG_AVX))
> +			dev_info->feature_flags |= RTE_COMPDEV_FF_CPU_AVX;
> +		else
> +			dev_info->feature_flags |= RTE_COMPDEV_FF_CPU_SSE;
>   	}
>   }
>
Daly, Lee March 27, 2019, 3:01 p.m. | #2
Hi Tomasz,

	This patch makes sense to check does the CPU have the capability of certain instructions before
Adding it to the dev_info flags. I think one more addition should be made in isal_compress_pmd.c 
When checking what compression level should be used , decided by the AVX instructions available, it previously used the 
Rte_cpu_get_flag_enabled() function, however, I don’t believe that is needed any more since it will now be checked beforehand, it would be doing twice the work.
When the driver now needs to decide the compression level it should now just check the feature_flags set below. Perhaps a V2 could be sent with this addition.
Regards,
Lee.

> > This patch adds query about CPU features
> >
> > Fixes: 53a9baa98c36 ("compress/isal: add basic PMD ops")
> > Cc: stable@dpdk.org
> >
> > Signed-off-by: Tomasz Cel <tomaszx.cel@intel.com>
> > ---
> >   drivers/compress/isal/isal_compress_pmd_ops.c | 16 ++++++++++++----
> >   1 file changed, 12 insertions(+), 4 deletions(-)
> >
> > diff --git a/drivers/compress/isal/isal_compress_pmd_ops.c
> b/drivers/compress/isal/isal_compress_pmd_ops.c
> > index 7b91849..fe99959 100644
> > --- a/drivers/compress/isal/isal_compress_pmd_ops.c
> > +++ b/drivers/compress/isal/isal_compress_pmd_ops.c
> > @@ -135,10 +135,18 @@ isal_comp_pmd_info_get(struct
> rte_compressdev *dev __rte_unused,
> >   {
> >   	if (dev_info != NULL) {
> >   		dev_info->capabilities = isal_pmd_capabilities;
> > -		dev_info->feature_flags = RTE_COMPDEV_FF_CPU_AVX512 |
> > -				RTE_COMPDEV_FF_CPU_AVX2 |
> > -				RTE_COMPDEV_FF_CPU_AVX |
> > -				RTE_COMPDEV_FF_CPU_SSE;
> > +
> > +		/* Check CPU for supported vector instruction and set
> > +		 * feature_flags
> > +		 */
> > +		if (rte_cpu_get_flag_enabled(RTE_CPUFLAG_AVX512F))
> > +			dev_info->feature_flags |=
> RTE_COMPDEV_FF_CPU_AVX512;
> > +		else if (rte_cpu_get_flag_enabled(RTE_CPUFLAG_AVX2))
> > +			dev_info->feature_flags |=
> RTE_COMPDEV_FF_CPU_AVX2;
> > +		else if (rte_cpu_get_flag_enabled(RTE_CPUFLAG_AVX))
> > +			dev_info->feature_flags |=
> RTE_COMPDEV_FF_CPU_AVX;
> > +		else
> > +			dev_info->feature_flags |=
> RTE_COMPDEV_FF_CPU_SSE;
> >   	}
> >   }
> >
Daly, Lee March 29, 2019, 3:28 p.m. | #3
Hi Tomasz,
	After some testing I can now see the approach in your patch in the best method for getting the CPU info.
Rgds,
Lee.
> -----Original Message-----
> From: Daly, Lee
> Sent: Wednesday, March 27, 2019 3:01 PM
> To: Akhil Goyal <akhil.goyal@nxp.com>; Cel, TomaszX
> <tomaszx.cel@intel.com>; dev@dpdk.org
> Cc: stable@dpdk.org; Trahe, Fiona <fiona.trahe@intel.com>
> Subject: RE: [dpdk-dev] [PATCH] compress/isal: fix getting information about
> CPU
> 
> Hi Tomasz,
> 
> 	This patch makes sense to check does the CPU have the capability of
> certain instructions before Adding it to the dev_info flags. I think one more
> addition should be made in isal_compress_pmd.c When checking what
> compression level should be used , decided by the AVX instructions available,
> it previously used the
> Rte_cpu_get_flag_enabled() function, however, I don’t believe that is needed
> any more since it will now be checked beforehand, it would be doing twice
> the work.
> When the driver now needs to decide the compression level it should now
> just check the feature_flags set below. Perhaps a V2 could be sent with this
> addition.
> Regards,
> Lee.
> 
> > > This patch adds query about CPU features
> > >
> > > Fixes: 53a9baa98c36 ("compress/isal: add basic PMD ops")
> > > Cc: stable@dpdk.org
> > >
> > > Signed-off-by: Tomasz Cel <tomaszx.cel@intel.com>
> > > ---
Acked-by: Lee Daly <lee.daly@intel.com>
Akhil Goyal March 29, 2019, 3:37 p.m. | #4
On 3/29/2019 8:58 PM, Daly, Lee wrote:
> Hi Tomasz,
> 	After some testing I can now see the approach in your patch in the best method for getting the CPU info.
> Rgds,
> Lee.
>> -----Original Message-----
>> From: Daly, Lee
>> Sent: Wednesday, March 27, 2019 3:01 PM
>> To: Akhil Goyal <akhil.goyal@nxp.com>; Cel, TomaszX
>> <tomaszx.cel@intel.com>; dev@dpdk.org
>> Cc: stable@dpdk.org; Trahe, Fiona <fiona.trahe@intel.com>
>> Subject: RE: [dpdk-dev] [PATCH] compress/isal: fix getting information about
>> CPU
>>
>> Hi Tomasz,
>>
>> 	This patch makes sense to check does the CPU have the capability of
>> certain instructions before Adding it to the dev_info flags. I think one more
>> addition should be made in isal_compress_pmd.c When checking what
>> compression level should be used , decided by the AVX instructions available,
>> it previously used the
>> Rte_cpu_get_flag_enabled() function, however, I don’t believe that is needed
>> any more since it will now be checked beforehand, it would be doing twice
>> the work.
>> When the driver now needs to decide the compression level it should now
>> just check the feature_flags set below. Perhaps a V2 could be sent with this
>> addition.
>> Regards,
>> Lee.
>>
>>>> This patch adds query about CPU features
>>>>
>>>> Fixes: 53a9baa98c36 ("compress/isal: add basic PMD ops")
>>>> Cc: stable@dpdk.org
>>>>
>>>> Signed-off-by: Tomasz Cel <tomaszx.cel@intel.com>
>>>> ---
> Acked-by: Lee Daly <lee.daly@intel.com>
Applied to dpdk-next-crypto

Thanks.

Patch

diff --git a/drivers/compress/isal/isal_compress_pmd_ops.c b/drivers/compress/isal/isal_compress_pmd_ops.c
index 7b91849..fe99959 100644
--- a/drivers/compress/isal/isal_compress_pmd_ops.c
+++ b/drivers/compress/isal/isal_compress_pmd_ops.c
@@ -135,10 +135,18 @@  isal_comp_pmd_info_get(struct rte_compressdev *dev __rte_unused,
 {
 	if (dev_info != NULL) {
 		dev_info->capabilities = isal_pmd_capabilities;
-		dev_info->feature_flags = RTE_COMPDEV_FF_CPU_AVX512 |
-				RTE_COMPDEV_FF_CPU_AVX2 |
-				RTE_COMPDEV_FF_CPU_AVX |
-				RTE_COMPDEV_FF_CPU_SSE;
+
+		/* Check CPU for supported vector instruction and set
+		 * feature_flags
+		 */
+		if (rte_cpu_get_flag_enabled(RTE_CPUFLAG_AVX512F))
+			dev_info->feature_flags |= RTE_COMPDEV_FF_CPU_AVX512;
+		else if (rte_cpu_get_flag_enabled(RTE_CPUFLAG_AVX2))
+			dev_info->feature_flags |= RTE_COMPDEV_FF_CPU_AVX2;
+		else if (rte_cpu_get_flag_enabled(RTE_CPUFLAG_AVX))
+			dev_info->feature_flags |= RTE_COMPDEV_FF_CPU_AVX;
+		else
+			dev_info->feature_flags |= RTE_COMPDEV_FF_CPU_SSE;
 	}
 }