diff mbox series

[2/2] Removes the x86 dependency on the QAT drivers

Message ID 20220607165840.66931-3-yoan.picchi@arm.com
State Superseded
Headers show
Series Crypto: Remove x86 dependency on QAT drivers | expand

Commit Message

Yoan Picchi June 7, 2022, 4:58 p.m. UTC
This dependency looks outdated. After the previous patch, we have been able
to use this driver to encrypt some data and to create working VF on arm64.
We have not tested it yet on any big endian machine, hence the new dependency

Signed-off-by: Yoan Picchi <yoan.picchi@arm.com>
---
 drivers/crypto/qat/Kconfig | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

Comments

Rob Herring (Arm) June 9, 2022, 9:36 p.m. UTC | #1
On Tue, Jun 07, 2022 at 04:58:40PM +0000, Yoan Picchi wrote:
> This dependency looks outdated. After the previous patch, we have been able
> to use this driver to encrypt some data and to create working VF on arm64.
> We have not tested it yet on any big endian machine, hence the new dependency

For the subject, use prefixes matching the subsystem (like you did on 
patch 1).

The only testing obligation you have is compiling for BE. If kconfig was
supposed to capture what endianness drivers have been tested or not
tested with, then lots of drivers are missing the dependency. Kconfig
depends/select entries should generally be either to prevent compile
failures (you checked PPC, RiscV, etc.?) or to hide drivers *really*
specific to a platform. IMO, we should only have !CPU_BIG_ENDIAN if it 
is known not to work and not easily fixed.

Also, with the dependency, no one can test the driver without modifying 
the kernel and if it does work as-is, then one has to upstream a change 
and then wait for it to show up in distro kernels. You could mitigate 
the first part with COMPILE_TEST.

Rob
Andre Przywara June 10, 2022, 10:48 a.m. UTC | #2
On Thu, 9 Jun 2022 15:36:52 -0600
Rob Herring <robh@kernel.org> wrote:

Hi,

> On Tue, Jun 07, 2022 at 04:58:40PM +0000, Yoan Picchi wrote:
> > This dependency looks outdated. After the previous patch, we have been able
> > to use this driver to encrypt some data and to create working VF on arm64.
> > We have not tested it yet on any big endian machine, hence the new dependency  
> 
> For the subject, use prefixes matching the subsystem (like you did on 
> patch 1).
> 
> The only testing obligation you have is compiling for BE.

So I just compiled for arm64 BE, powerpc BE & LE, and riscv again:
$ file qat_c62xvf.ko
qat_c62xvf.ko: ELF 64-bit MSB relocatable, ARM aarch64, version 1 (SYSV),
BuildID[sha1]=630cc0ee5586c7aeb6e0ab5567ce2f2f7cc46adf, with debug_info,
not stripped
qat_c62xvf.ko: ELF 64-bit MSB relocatable, 64-bit PowerPC or cisco 7500,
version 1 (SYSV), BuildID[sha1]=4090ba181cf95f27108bf3ecde0776f12ef2b636,
not stripped
qat_c62xvf.ko: ELF 64-bit LSB relocatable, 64-bit PowerPC or cisco 7500,
version 1 (SYSV), BuildID[sha1]=2cb0fd09d5bc36c8918fcd061c9f3dac1546cf0d,
not stripped
qat_c62xvf.ko: ELF 64-bit LSB relocatable, UCB RISC-V, version 1 (SYSV),
BuildID[sha1]=bfaa53df7e9aad79d3ab4c05e75ca9169227f6b8, not stripped

All built without errors or warnings, for every of the enabled drivers.

> If kconfig was
> supposed to capture what endianness drivers have been tested or not
> tested with, then lots of drivers are missing the dependency. Kconfig
> depends/select entries should generally be either to prevent compile
> failures (you checked PPC, RiscV, etc.?) or to hide drivers *really*
> specific to a platform. IMO, we should only have !CPU_BIG_ENDIAN if it 
> is known not to work and not easily fixed.

Fair enough, I leave that decision to Giovanni. I have plans to test this
with BE, but getting a BE setup on a server is not trivial, both for
userland and actual booting, so this will take some time. We just didn't
want to block this on some BE concerns.

> Also, with the dependency, no one can test the driver without modifying 
> the kernel and if it does work as-is, then one has to upstream a change 
> and then wait for it to show up in distro kernels. You could mitigate 
> the first part with COMPILE_TEST.

Yeah, that's a good point, we were already bitten by this, the initial
testing was done on a stable distro kernel (v5.4), and it worked fine
already there.

Cheers,
Andre
Cabiddu, Giovanni June 13, 2022, 10:41 a.m. UTC | #3
On Fri, Jun 10, 2022 at 11:48:40AM +0100, Andre Przywara wrote:
> On Thu, 9 Jun 2022 15:36:52 -0600
> Rob Herring <robh@kernel.org> wrote:
> 
> Hi,
> 
> > On Tue, Jun 07, 2022 at 04:58:40PM +0000, Yoan Picchi wrote:
> > > This dependency looks outdated. After the previous patch, we have been able
> > > to use this driver to encrypt some data and to create working VF on arm64.
> > > We have not tested it yet on any big endian machine, hence the new dependency  
> > 
> > For the subject, use prefixes matching the subsystem (like you did on 
> > patch 1).
Just to add on this, patches to the qat driver should have the following
headline:
    crypto: qat -
not
    crypto: qat:

> > 
> > The only testing obligation you have is compiling for BE.
> 
> So I just compiled for arm64 BE, powerpc BE & LE, and riscv again:
> $ file qat_c62xvf.ko
> qat_c62xvf.ko: ELF 64-bit MSB relocatable, ARM aarch64, version 1 (SYSV),
> BuildID[sha1]=630cc0ee5586c7aeb6e0ab5567ce2f2f7cc46adf, with debug_info,
> not stripped
> qat_c62xvf.ko: ELF 64-bit MSB relocatable, 64-bit PowerPC or cisco 7500,
> version 1 (SYSV), BuildID[sha1]=4090ba181cf95f27108bf3ecde0776f12ef2b636,
> not stripped
> qat_c62xvf.ko: ELF 64-bit LSB relocatable, 64-bit PowerPC or cisco 7500,
> version 1 (SYSV), BuildID[sha1]=2cb0fd09d5bc36c8918fcd061c9f3dac1546cf0d,
> not stripped
> qat_c62xvf.ko: ELF 64-bit LSB relocatable, UCB RISC-V, version 1 (SYSV),
> BuildID[sha1]=bfaa53df7e9aad79d3ab4c05e75ca9169227f6b8, not stripped
> 
> All built without errors or warnings, for every of the enabled drivers.
> 
> > If kconfig was
> > supposed to capture what endianness drivers have been tested or not
> > tested with, then lots of drivers are missing the dependency. Kconfig
> > depends/select entries should generally be either to prevent compile
> > failures (you checked PPC, RiscV, etc.?) or to hide drivers *really*
> > specific to a platform. IMO, we should only have !CPU_BIG_ENDIAN if it 
> > is known not to work and not easily fixed.
> 
> Fair enough, I leave that decision to Giovanni. I have plans to test this
> with BE, but getting a BE setup on a server is not trivial, both for
> userland and actual booting, so this will take some time. We just didn't
> want to block this on some BE concerns.
Just inspecting the code I can see we are not handling BE in the logic
that builds FW descriptors.
My preference would be to keep !CPU_BIG_ENDIAN until the driver is fixed
and tested.

> > Also, with the dependency, no one can test the driver without modifying 
> > the kernel and if it does work as-is, then one has to upstream a change 
> > and then wait for it to show up in distro kernels. You could mitigate 
> > the first part with COMPILE_TEST.
> 
> Yeah, that's a good point, we were already bitten by this, the initial
> testing was done on a stable distro kernel (v5.4), and it worked fine
> already there.
> 
> Cheers,
> Andre
Rob Herring (Arm) June 13, 2022, 1:44 p.m. UTC | #4
On Mon, Jun 13, 2022 at 4:41 AM Giovanni Cabiddu
<giovanni.cabiddu@intel.com> wrote:
>
> On Fri, Jun 10, 2022 at 11:48:40AM +0100, Andre Przywara wrote:
> > On Thu, 9 Jun 2022 15:36:52 -0600
> > Rob Herring <robh@kernel.org> wrote:
> >
> > Hi,
> >
> > > On Tue, Jun 07, 2022 at 04:58:40PM +0000, Yoan Picchi wrote:
> > > > This dependency looks outdated. After the previous patch, we have been able
> > > > to use this driver to encrypt some data and to create working VF on arm64.
> > > > We have not tested it yet on any big endian machine, hence the new dependency
> > >
> > > For the subject, use prefixes matching the subsystem (like you did on
> > > patch 1).
> Just to add on this, patches to the qat driver should have the following
> headline:
>     crypto: qat -
> not
>     crypto: qat:
>
> > >
> > > The only testing obligation you have is compiling for BE.
> >
> > So I just compiled for arm64 BE, powerpc BE & LE, and riscv again:
> > $ file qat_c62xvf.ko
> > qat_c62xvf.ko: ELF 64-bit MSB relocatable, ARM aarch64, version 1 (SYSV),
> > BuildID[sha1]=630cc0ee5586c7aeb6e0ab5567ce2f2f7cc46adf, with debug_info,
> > not stripped
> > qat_c62xvf.ko: ELF 64-bit MSB relocatable, 64-bit PowerPC or cisco 7500,
> > version 1 (SYSV), BuildID[sha1]=4090ba181cf95f27108bf3ecde0776f12ef2b636,
> > not stripped
> > qat_c62xvf.ko: ELF 64-bit LSB relocatable, 64-bit PowerPC or cisco 7500,
> > version 1 (SYSV), BuildID[sha1]=2cb0fd09d5bc36c8918fcd061c9f3dac1546cf0d,
> > not stripped
> > qat_c62xvf.ko: ELF 64-bit LSB relocatable, UCB RISC-V, version 1 (SYSV),
> > BuildID[sha1]=bfaa53df7e9aad79d3ab4c05e75ca9169227f6b8, not stripped
> >
> > All built without errors or warnings, for every of the enabled drivers.
> >
> > > If kconfig was
> > > supposed to capture what endianness drivers have been tested or not
> > > tested with, then lots of drivers are missing the dependency. Kconfig
> > > depends/select entries should generally be either to prevent compile
> > > failures (you checked PPC, RiscV, etc.?) or to hide drivers *really*
> > > specific to a platform. IMO, we should only have !CPU_BIG_ENDIAN if it
> > > is known not to work and not easily fixed.
> >
> > Fair enough, I leave that decision to Giovanni. I have plans to test this
> > with BE, but getting a BE setup on a server is not trivial, both for
> > userland and actual booting, so this will take some time. We just didn't
> > want to block this on some BE concerns.
> Just inspecting the code I can see we are not handling BE in the logic
> that builds FW descriptors.
> My preference would be to keep !CPU_BIG_ENDIAN until the driver is fixed
> and tested.

Okay, then at least add '|| COMPILE_TEST' so that allyesconfig builds build it.

Rob
diff mbox series

Patch

diff --git a/drivers/crypto/qat/Kconfig b/drivers/crypto/qat/Kconfig
index 4b90c0f22b03..afc28059274e 100644
--- a/drivers/crypto/qat/Kconfig
+++ b/drivers/crypto/qat/Kconfig
@@ -17,7 +17,7 @@  config CRYPTO_DEV_QAT
 
 config CRYPTO_DEV_QAT_DH895xCC
 	tristate "Support for Intel(R) DH895xCC"
-	depends on X86 && PCI
+	depends on PCI && !CPU_BIG_ENDIAN
 	select CRYPTO_DEV_QAT
 	help
 	  Support for Intel(R) DH895xcc with Intel(R) QuickAssist Technology
@@ -28,7 +28,7 @@  config CRYPTO_DEV_QAT_DH895xCC
 
 config CRYPTO_DEV_QAT_C3XXX
 	tristate "Support for Intel(R) C3XXX"
-	depends on X86 && PCI
+	depends on PCI && !CPU_BIG_ENDIAN
 	select CRYPTO_DEV_QAT
 	help
 	  Support for Intel(R) C3xxx with Intel(R) QuickAssist Technology
@@ -39,7 +39,7 @@  config CRYPTO_DEV_QAT_C3XXX
 
 config CRYPTO_DEV_QAT_C62X
 	tristate "Support for Intel(R) C62X"
-	depends on X86 && PCI
+	depends on PCI && !CPU_BIG_ENDIAN
 	select CRYPTO_DEV_QAT
 	help
 	  Support for Intel(R) C62x with Intel(R) QuickAssist Technology
@@ -50,7 +50,7 @@  config CRYPTO_DEV_QAT_C62X
 
 config CRYPTO_DEV_QAT_4XXX
 	tristate "Support for Intel(R) QAT_4XXX"
-	depends on X86 && PCI
+	depends on PCI && !CPU_BIG_ENDIAN
 	select CRYPTO_DEV_QAT
 	help
 	  Support for Intel(R) QuickAssist Technology QAT_4xxx
@@ -61,7 +61,7 @@  config CRYPTO_DEV_QAT_4XXX
 
 config CRYPTO_DEV_QAT_DH895xCCVF
 	tristate "Support for Intel(R) DH895xCC Virtual Function"
-	depends on X86 && PCI
+	depends on PCI && !CPU_BIG_ENDIAN
 	select PCI_IOV
 	select CRYPTO_DEV_QAT
 
@@ -74,7 +74,7 @@  config CRYPTO_DEV_QAT_DH895xCCVF
 
 config CRYPTO_DEV_QAT_C3XXXVF
 	tristate "Support for Intel(R) C3XXX Virtual Function"
-	depends on X86 && PCI
+	depends on PCI && !CPU_BIG_ENDIAN
 	select PCI_IOV
 	select CRYPTO_DEV_QAT
 	help
@@ -86,7 +86,7 @@  config CRYPTO_DEV_QAT_C3XXXVF
 
 config CRYPTO_DEV_QAT_C62XVF
 	tristate "Support for Intel(R) C62X Virtual Function"
-	depends on X86 && PCI
+	depends on PCI && !CPU_BIG_ENDIAN
 	select PCI_IOV
 	select CRYPTO_DEV_QAT
 	help