Re: [RFC PATCH 2/2] Removes the x86 dependency on the QAT drivers

From: Andre Przywara
Date: Wed May 18 2022 - 11:55:32 EST


On Tue, 17 May 2022 10:11:09 +0200
Ard Biesheuvel <ardb@xxxxxxxxxx> wrote:

Hi,

> On Mon, 16 May 2022 at 12:16, <yoan.picchi@xxxxxxx> wrote:
> >
> > From: Yoan Picchi <yoan.picchi@xxxxxxx>
> >
> > 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.
> >
> > Signed-off-by: Yoan Picchi <yoan.picchi@xxxxxxx>
>
> Are you sure the driver is safe for non-coherent DMA as well?

That depends on your definition of "sure".
We indeed tested this only on a server with coherent PCIe.

I skimmed through the driver, and it looks like to use the DMA API
correctly:
- I see dma_alloc_coherent() calls for DMA ring buffers.
- There are dma_map_single()/dma_unmap_single() pairs in other parts.
- Accesses to the BARs are capsuled via macros, using readl/writel.
- Access the the SRAM BAR is also only done via those macros.

I didn't go through the driver systematically, and of course the
interesting parts are the ones you don't see easily, so I am eager to hear
any other opinions on this topic.

Ard, do you have anything special in mind? Is there something to look out
for, specifically?

The few cards we have access to are in some server in the data centre, so
I can't easily walk in with, say a RockPro64, and test this there.

Cheers,
Andre

>
> > ---
> > drivers/crypto/qat/Kconfig | 14 +++++++-------
> > 1 file changed, 7 insertions(+), 7 deletions(-)
> >
> > diff --git a/drivers/crypto/qat/Kconfig b/drivers/crypto/qat/Kconfig
> > index 4b90c0f22b03..88df2cf4cac9 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
> > 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
> > 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
> > 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
> > 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
> > 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
> > 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
> > select PCI_IOV
> > select CRYPTO_DEV_QAT
> > help
> > --
> > 2.25.1
> >