2 Replies Latest reply on Sep 1, 2016 8:07 AM by Carlos_A

    QAT Libcrypto patch on VM with SR-IOV?

    skyung Community Member

      Hi, I have been trying to apply libcrypto (openssl) patch to a virtual function (VF) of QAT that is assigned to a qemu/kvm virtual machine.

      First, I successfully created 32 virtual functions of QAT through SR-IOV as instructed on Using Intel VT with Intel QuickAssist Technology. Then, I assigned one of the virtual function to qemu/kvm virtual machine I created. Here is the spec of both host and vm I created:



      OS: CentOS Linux release 7.2.1511

      kernel: 3.10.0-327.22.2.el7.x86_64

      CPU: Intel(R) Xeon(R) CPU E5-2699 v3

      QAT driver version: 2.6.0-60



      OS: CentOS Linux release 7.2.1511

      kernel: 3.10.0-327.28.2.el7.x86_64

      CPU: copied host cpu info

      QAT driver version: 2.6.0-60

      libcrypto patch version: 0.4.9-009


      After installing the QAT virtual function driver on the VM, I can see the driver running on the vm:

      Then, I followed Libcrypto Patch for Intel QuickAssist Technology to apply the patch.

      And then I tried to verify the installation with openssl speed test, but I got the following error:



      Seems like openssl cannot find QAT.


      I've tried doing the exact same thing with QAT using pci-passthrough (i.e., assigning physical function to the vm instead of virtual function) and did not have any problem.

      My guess is that it does not support virtual function but I'm not sure.

      Did anybody have the same or similar problem? I cannot pinpoint the root cause because there is no reason for it to fail. I really need your help. Thanks a lot!!




        • Re: QAT Libcrypto patch on VM with SR-IOV?
          AdolfoS Brown Belt

          Hello skyung


          The only known issues that I see that can be related to your category are the following




          The issue was observed using the openssl speed application patched with libcrypto* (OpenSSL*) Sample Patch for Intel(R) QuickAssist Technology. Libcrypto's openssl speed test uses multiple processes (instead of multiple threads) to measure performance. Each process has access to one crypto instance. When running a test with 16 or 32 processes, the test can fail from time to time reporting: [error] SalCtrl_AdfServicesStartedCheck() - : Sal Ctrl failed to start in given time [error] do_userStart() - : Failed to start services can't use that engine


          However it seems to be fixed with the latest QAT version: Intel QuickAssist Technology | 01.org


          Here: https://01.org/sites/default/files/page/330683_qat_relnotes-001_3.pdf


          And IXA00381337:



          In Pass-through of Intel® QuickAssist Technology Physical Function (PF) and the PCH device GbE ports to a virtual machine result in GbE ports being nonresponsive after Intel® QuickAssist Technology device initialization. Intel® QuickAssist Technology Virtual Function (VF) pass-through with GbE port passthrough is not affected.



          After Intel® QuickAssist Technology device initialization, removing the igb module and reinserting it allows both devices to work as normal.


          Here: https://01.org/sites/default/files/page/330683-010_qat_relnotes.pdf


          I will ask to the QAT contacts for additional advice.



          Best Regards,

          Adolfo Sanchez

          • Re: QAT Libcrypto patch on VM with SR-IOV?
            Carlos_A Brown Belt

            Hello skyung,


            By the way, normally when this error is observed it is because it is possible that incorrect QAT configuration file placed in the /etc folder.  Please ensure that this was copied to the /etc folder and qat_service was restarted.


            Also, the qat_mem.ko driver is not loaded. Please ensure that the qat_mem driver has been loaded properly.


            We hope that this information may help you.


            Best Regards,