mbox series

[0/2] crypto: intel-fcs: Add crypto service driver for Intel SoCFPGA

Message ID 20220914144137.605279-1-wen.ping.teh@intel.com (mailing list archive)
Headers show
Series crypto: intel-fcs: Add crypto service driver for Intel SoCFPGA | expand

Message

wen.ping.teh@intel.com Sept. 14, 2022, 2:41 p.m. UTC
From: Teh Wen Ping <wen.ping.teh@intel.com>

This patch introduces a crypto service driver for Intel SoCFPGA
family. The FPGA Crypto Service (FCS) includes a large set of security
features that are provided by the Secure Device Manager(SDM) in FPGA.
The driver provide IOCTL interface for user to call the crypto services
and send them to SDM's mailbox.

Teh Wen Ping (2):
  crypto: intel-fcs: crypto service driver for Intel SoCFPGA family
  arm64: defconfig: add CRYPTO_DEV_INTEL_FCS

 arch/arm64/configs/defconfig         |   1 +
 drivers/crypto/Kconfig               |  11 +
 drivers/crypto/Makefile              |   1 +
 drivers/crypto/intel_fcs.c           | 726 +++++++++++++++++++++++++++
 include/uapi/linux/intel_fcs-ioctl.h | 211 ++++++++
 5 files changed, 950 insertions(+)
 create mode 100644 drivers/crypto/intel_fcs.c
 create mode 100644 include/uapi/linux/intel_fcs-ioctl.h

Comments

wen.ping.teh@intel.com Sept. 15, 2022, 3:25 a.m. UTC | #1
From: wen.ping.teh@intel.com

>This patch introduces a crypto service driver for Intel SoCFPGA
>family. The FPGA Crypto Service (FCS) includes a large set of security
>features that are provided by the Secure Device Manager(SDM) in FPGA.
>The driver provide IOCTL interface for user to call the crypto services
>and send them to SDM's mailbox.
>
>Teh Wen Ping (2):
>  crypto: intel-fcs: crypto service driver for Intel SoCFPGA family
>  arm64: defconfig: add CRYPTO_DEV_INTEL_FCS
Hi,

I just found out that there was a previous attempt to upstream this driver
2 years ago. It was NACK because it did not implement crypto API. Please
drop this review.
https://www.mail-archive.com/linux-crypto@vger.kernel.org/msg44701.html

I will move this driver to drivers/misc.

Thanks,
Wen Ping
Dmitry Baryshkov Sept. 15, 2022, 11:46 a.m. UTC | #2
On 15/09/2022 06:25, wen.ping.teh@intel.com wrote:
> From: wen.ping.teh@intel.com
> 
>> This patch introduces a crypto service driver for Intel SoCFPGA
>> family. The FPGA Crypto Service (FCS) includes a large set of security
>> features that are provided by the Secure Device Manager(SDM) in FPGA.
>> The driver provide IOCTL interface for user to call the crypto services
>> and send them to SDM's mailbox.
>>
>> Teh Wen Ping (2):
>>   crypto: intel-fcs: crypto service driver for Intel SoCFPGA family
>>   arm64: defconfig: add CRYPTO_DEV_INTEL_FCS
> Hi,
> 
> I just found out that there was a previous attempt to upstream this driver
> 2 years ago. It was NACK because it did not implement crypto API. Please
> drop this review.
> https://www.mail-archive.com/linux-crypto@vger.kernel.org/msg44701.html
> 
> I will move this driver to drivers/misc.

I think the proper solution would be to implement the existing API first 
rather than adding a set of custom proprietary IOCTLs that nobody else 
is going to use.
wen.ping.teh@intel.com Sept. 15, 2022, 1:52 p.m. UTC | #3
From: wen.ping.teh@intel.com

>From: Dmitry Baryshkov @ 2022-09-15 11:46 UTC (permalink / raw)
>> From: wen.ping.teh@intel.com
>> 
>>> This patch introduces a crypto service driver for Intel SoCFPGA
>>> family. The FPGA Crypto Service (FCS) includes a large set of security
>>> features that are provided by the Secure Device Manager(SDM) in FPGA.
>>> The driver provide IOCTL interface for user to call the crypto services
>>> and send them to SDM's mailbox.
>>>
>>> Teh Wen Ping (2):
>>>   crypto: intel-fcs: crypto service driver for Intel SoCFPGA family
>>>   arm64: defconfig: add CRYPTO_DEV_INTEL_FCS
>> Hi,
>> 
>> I just found out that there was a previous attempt to upstream this driver
>> 2 years ago. It was NACK because it did not implement crypto API. Please
>> drop this review.
>> https://www.mail-archive.com/linux-crypto@vger.kernel.org/msg44701.html
>> 
>> I will move this driver to drivers/misc.
>
>I think the proper solution would be to implement the existing API first 
>rather than adding a set of custom proprietary IOCTLs that nobody else 
>is going to use.

Could you explain what are the existing API that you are referring? 
The FCS driver doesn't have API. Instead it uses IOCTLs to interact with user-space application to perform Intel SoCFPGA crypto features. 

Thanks
Wen Ping
Dmitry Baryshkov Sept. 15, 2022, 2:42 p.m. UTC | #4
On 15/09/2022 16:52, wen.ping.teh@intel.com wrote:
> From: wen.ping.teh@intel.com
> 
>> From: Dmitry Baryshkov @ 2022-09-15 11:46 UTC (permalink / raw)
>>> From: wen.ping.teh@intel.com
>>>
>>>> This patch introduces a crypto service driver for Intel SoCFPGA
>>>> family. The FPGA Crypto Service (FCS) includes a large set of security
>>>> features that are provided by the Secure Device Manager(SDM) in FPGA.
>>>> The driver provide IOCTL interface for user to call the crypto services
>>>> and send them to SDM's mailbox.
>>>>
>>>> Teh Wen Ping (2):
>>>>    crypto: intel-fcs: crypto service driver for Intel SoCFPGA family
>>>>    arm64: defconfig: add CRYPTO_DEV_INTEL_FCS
>>> Hi,
>>>
>>> I just found out that there was a previous attempt to upstream this driver
>>> 2 years ago. It was NACK because it did not implement crypto API. Please
>>> drop this review.
>>> https://www.mail-archive.com/linux-crypto@vger.kernel.org/msg44701.html
>>>
>>> I will move this driver to drivers/misc.
>>
>> I think the proper solution would be to implement the existing API first
>> rather than adding a set of custom proprietary IOCTLs that nobody else
>> is going to use.
> 
> Could you explain what are the existing API that you are referring?
> The FCS driver doesn't have API. Instead it uses IOCTLs to interact with user-space application to perform Intel SoCFPGA crypto features.

The FCS driver doesn't. But Linux does.

For the hw random generators we have the struct hwrng/devm_hwrng_register().

For AES, EC, etc. there are corresponding Crypto API. Based on your 
patches I couldn't guess if your hardware is more of a TPM or a generic 
crypto "accelerator". However Linux has support for both kinds of 
hardware. Most likely the right interface is already there (or almost 
there). In 90% of cases 'a custom bunch of IOCTLs' is not a correct one.
wen.ping.teh@intel.com Sept. 29, 2022, 4:16 a.m. UTC | #5
From: wen.ping.teh@intel.com

> From: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
>> From: wen.ping.teh@intel.com
>> 
>>> From: Dmitry Baryshkov @ 2022-09-15 11:46 UTC (permalink / raw)
>>>> From: wen.ping.teh@intel.com
>>>>
>>>>> This patch introduces a crypto service driver for Intel SoCFPGA
>>>>> family. The FPGA Crypto Service (FCS) includes a large set of security
>>>>> features that are provided by the Secure Device Manager(SDM) in FPGA.
>>>>> The driver provide IOCTL interface for user to call the crypto services
>>>>> and send them to SDM's mailbox.
>>>>>
>>>>> Teh Wen Ping (2):
>>>>>    crypto: intel-fcs: crypto service driver for Intel SoCFPGA family
>>>>>    arm64: defconfig: add CRYPTO_DEV_INTEL_FCS
>>>> Hi,
>>>>
>>>> I just found out that there was a previous attempt to upstream this driver
>>>> 2 years ago. It was NACK because it did not implement crypto API. Please
>>>> drop this review.
>>>> https://www.mail-archive.com/linux-crypto@vger.kernel.org/msg44701.html
>>>>
>>>> I will move this driver to drivers/misc.
>>>
>>> I think the proper solution would be to implement the existing API first
>>> rather than adding a set of custom proprietary IOCTLs that nobody else
>>> is going to use.
>> 
>> Could you explain what are the existing API that you are referring?
>> The FCS driver doesn't have API. Instead it uses IOCTLs to interact with user-space application to perform Intel SoCFPGA crypto features.
>
> The FCS driver doesn't. But Linux does.
>
> For the hw random generators we have the struct hwrng/devm_hwrng_register().
>
> For AES, EC, etc. there are corresponding Crypto API. Based on your 
> patches I couldn't guess if your hardware is more of a TPM or a generic 
> crypto "accelerator". However Linux has support for both kinds of 
> hardware. Most likely the right interface is already there (or almost 
> there). In 90% of cases 'a custom bunch of IOCTLs' is not a correct one.

Thanks for the feedback Dmitry. We will look into the available Linux crypto API and how our driver can use them.
This is will take some time but we will try to check the proper solution.

Thanks
Wen Ping