intel / QAT_Engine

Intel QuickAssist Technology( QAT) OpenSSL Engine (an OpenSSL Plug-In Engine) which provides cryptographic acceleration for both hardware and optimized software using Intel QuickAssist Technology enabled Intel platforms. https://developer.intel.com/quickassist
BSD 3-Clause "New" or "Revised" License
410 stars 128 forks source link

QAT Openssl Engine compilation issue: ld cannot find -licp_qa_al_s #90

Open peak-load opened 6 years ago

peak-load commented 6 years ago

When running make install I see sh script error /bin/sh: line 103: [: ==: unary operator expected.

Not sure what is failing after that, but when I try to build QAT openssl engine after that I'm getting error:

/usr/bin/ld: cannot find -licp_qa_al_s

Gist with make output for QAT OpenSSL engine: https://gist.github.com/peak-load/30537b7ef8f22c647a62f60a30e3714c#file-gistfile1-txt-L179

I checked Troubleshooting section:

3) Is the Intel® QAT Driver up and running? Check by running lsmod, icp_qa_al should be in the list. Also check the Intel® QAT Driver software has been started.

According to troubleshooting section above I can say - no I don't have icp_qa_al in the list, but I don't see why.

qat_dh895xcc           18009  0 
intel_qat             212108  2 usdm_drv,qat_dh895xcc
authenc                17776  1 intel_qat
uio                    19338  1 intel_qat

Full output for QAT Driver ./configure && make && make install is there https://gist.github.com/peak-load/73d241796612e483afe1d7cda3eb73f4#file-gistfile1-txt-L3936

My system

CentOS Linux release 7.5.1804 (Core) 
# uname -r
3.10.0-862.14.4.el7.x86_64
# lsmod | grep qa
qat_dh895xcc           18009  0 
intel_qat             212108  2 usdm_drv,qat_dh895xcc
authenc                17776  1 intel_qat
uio                    19338  1 intel_qat
# /etc/init.d/qat_service status
Checking status of all devices.
There is 1 QAT acceleration device(s) in the system:
 qat_dev0 - type: dh895xcc,  inst_id: 0,  node_id: 0,  bsf: 09:00.0,  #accel: 6 #engines: 12 state: up

Please advice.

stevelinsell commented 6 years ago

Hi @peak-load,

Looking at your attached traces it appears that you are using the QAT 1.7 Upstream Driver. It is installing successfully, I think you can safely ignore the error: /bin/sh: line 103: [: ==: unary operator expected This is a bug in the QAT Driver install script, but I believe does not affect the installation. Certainly I also see that error flagged on my machine but do not have any problems using the install.

The issue that you are encountering is due to the QAT Engine default configuration being to build against the QAT Legacy Driver with qat_contig_mem memory driver. You need to add some extra options to your configure to correctly configure to build against the QAT Upstream Driver. The options you need to add are:

--enable-upstream_driver
--enable-usdm

It is the second example within the following section: Build the Intel® Quickassist Technology OpenSSL* Engine of the README.md.

After everything is built do not forget to change the QAT Driver config files before trying to run the OpenSSL speed tests to verify the QAT Engine is functioning correctly.

Hopefully the above will help resolve your issue,

Steve.

peak-load commented 6 years ago

Thank Steve, I will try when will get access to server.

I found that documentation is missing list of tested to be working kernels compatible and as result on mainline stable kernels on Centos 7 and Ubuntu 18.10 I was not able to compile QAT_Engine.

Is anybody working on this? I can volunteer to make some tests, but after that - fixing incompatibility in code is not my speciality and strong side.

BTW, what’s best place to ask questions about QAT hardware and software? Our main goal is to test it for IPSEC (site to site and endpoint VPV clients) acceleration using available and compatible Linux implementations.

Can I get any support from Intel too?

On Mon 15. Oct 2018 at 13:11, stevelinsell notifications@github.com wrote:

Hi @peak-load https://github.com/peak-load,

Looking at your attached traces it appears that you are using the QAT 1.7 Upstream Driver. It is installing successfully, I think you can safely ignore the error: /bin/sh: line 103: [: ==: unary operator expected This is a bug in the QAT Driver install script, but I believe does not affect the installation. Certainly I also see that error flagged on my machine but do not have any problems using the install.

The issue that you are encountering is due to the QAT Engine default configuration being to build against the QAT Legacy Driver with qat_contig_mem memory driver. You need to add some extra options to your configure to correctly configure to build against the QAT Upstream Driver. The options you need to add are:

--enable-upstream_driver --enable-usdm

It is the second example within the following section: Build the Intel® Quickassist Technology OpenSSL* Engine https://github.com/intel/QAT_Engine#build-the-intel-quickassist-technology-openssl-engine of the README.md.

After everything is built do not forget to change the QAT Driver config files before trying to run the OpenSSL speed tests to verify the QAT Engine is functioning correctly.

Hopefully the above will help resolve your issue,

Steve.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/intel/QAT_Engine/issues/90#issuecomment-429808906, or mute the thread https://github.com/notifications/unsubscribe-auth/AgnydW1iM4NPPyTPsh57jiH_9jcTdcYxks5ulG1JgaJpZM4XahR_ .

--

With regards, Eugene Sudyr

stevelinsell commented 6 years ago

Hi Eugene,

When you said you were having trouble compiling on mainline kernels, was it specifically the QAT Engine that was giving the errors or was it the QAT Driver builds?

The QAT Engine whilst not tested on a wide range of Linux Distributions/kernels is generally run with: Fedora 16 (for the Legacy QAT Driver. We are gradually phasing out the Fed 16 machines). CentOs 7.4 (majority of our testing). Fedora 23 (some development systems). Ubuntu 16.04 (some development systems). We don't usually see a lot of build issues between Distributions on the QAT Engine side especially with QAT Upstream Driver that uses the USDM Memory Driver.

The biggest issue is with the QAT Driver. This is because some of the API's that the QAT Driver builds against in the kernel are changing a lot over time. New versions of the QAT Driver are fixing the incompatibilities as they come up, but very new Distributions like Ubuntu 18.10 that is still in Beta will not be supported yet. Your mileage will definitely vary between different Distributions with different kernel versions, probably CentOs 7.4 is a particular sweet spot as that is where a lot of testing has been concentrated, but that might not help if you need the latest and greatest!

With regard to QAT HW/SW support, are you talking to Intel already? Usually a Platform Application Engineer would get involved in helping you with your queries.

Kind Regards,

Steve.

peak-load commented 6 years ago

Hi Steve, thanks for answering my mail I will get access to my server with hardware on Sunday, and I will write more, but quick answers are below:

On Thu 18. Oct 2018 at 17:46, stevelinsell notifications@github.com wrote:

Hi Eugene,

When you said you were having trouble compiling on mainline kernels, was it specifically the QAT Engine that was giving the errors or was it the QAT Driver builds?

I had errors with QAT Engine. Driver I was able to build with no issues.

The QAT Engine whilst not tested on a wide range of Linux Distributions/kernels is generally run with: Fedora 16 (for the Legacy QAT Driver. We are gradually phasing out the Fed 16 machines). CentOs 7.4 (majority of our testing). Fedora 23 (some development systems). Ubuntu 16.04 (some development systems). We don't usually see a lot of build issues between Distributions on the QAT Engine side especially with QAT Upstream Driver that uses the USDM Memory Driver.

We stick to (popular nowadays) Ubuntu and Debian. All recent versions of both user land and kernels. Ubuntu 16.04 is too old.

Can you please specify kernel versions too for each tested Linux distribution?

The biggest issue is with the QAT Driver. This is because some of the API's

that the QAT Driver builds against in the kernel are changing a lot over time. New versions of the QAT Driver are fixing the incompatibilities as they come up, but very new Distributions like Ubuntu 18.10 that is still in Beta will not be supported yet. Your mileage will definitely vary between different Distributions with different kernel versions, probably CentOs 7.4 is a particular sweet spot as that is where a lot of testing has been concentrated, but that might not help if you need the latest and greatest!

With regard to QAT HW/SW support, are you talking to Intel already? Usually a Platform Application Engineer would get involved in helping you with your queries.

Not yet, I got hardware just couple of days before and since testing failed I’m out for businesses trip, which don’t allow me make testing until next week.

Can you suggest someone exactly who can provide support from Intel? Or where to find right contact.

It was big story on how our supplier (intel platinum partner) was working to get that card for testing... they have no sales people in EU who have experience, so they spent 3 weeks to get it for us.

— With regards, Peak Load

Kind Regards,

Steve.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/intel/QAT_Engine/issues/90#issuecomment-431060704, or mute the thread https://github.com/notifications/unsubscribe-auth/AgnydfDUbErQs_kbh1Pt7hsXVBvT7YURks5umKJygaJpZM4XahR_ .

--

With regards, Eugene Sudyr

peak-load commented 6 years ago

@stevelinsell thanks for helping me before - it works perfect with both CentOS 7 and Ubuntu 18.04 bionic with latest kernel, but not with mainline kernel versions. Any plans to fix breaking code changes to keep up with mainline kernel?