硬件确认
首先你要有一台KunPeng920服务器,而且这台服务器上的压缩解压缩设备是可见的。你可以
lspci -s 75:00.0 -vv
1 | root@ubuntu:~# lspci -s 75:00.0 |
如上,说明你的系统上有这个压缩解压缩的设备。
系统的SMMU要在UEFI里打开。你可以看下系统启动日志,dmesg | grep iommu
1 | root@ubuntu:~# dmesg | grep iommu |
如上,可以认为SMMU的配置没有问题,当然group的编号可以是不同的。
内核配置和编译
目前内核的相关补丁还没有完全上主线,我们在Linaro的github上维护了一个完整的可以
跑的分支:https://github.com/Linaro/linux-kernel-warpdrive/tree/uacce-devel
make defconfig
make menuconfig
这里defconfig的配置是不够的,你需要确保如下的内核配置是打开的:
CONFIG_ARM_SMMU_V3=y
CONFIG_PCI_PASID=y
CONFIG_IOMMU_SVA=y
CONFIG_CRYPTO_DEV_HISI_QM=y
CONFIG_CRYPTO_DEV_HISI_ZIP=y
CONFIG_UACCE=y
然后编译内核即可。
用户态代码配置和编译
对应的用户态代码的仓库也在Linaro的github上:https://github.com/Linaro/warpdrive/tree/master
./autogen.sh
./conf.sh
make
在.lib目录下会生成编译出的用户态库:
1 | Sherlock@EstBuildSvr1:~/repos/linaro_wd/warpdrive/.libs$ ls *.so |
在test目录下有编译好的测试app:
1 | test_sva_bind test_sva_perf |
如上的两个测试app基于压缩解压缩设备,所以依赖的库是:
libhisi_qm.so libwd_comp.so libwd.so
运行测试用例
使用如上编译好的内核Image启动系统, 把libhisi_qm.so libwd_comp.so libwd.so
拷贝到系统上,然后尝试运行下 test_sva_perf。如果运行OK的话会有性能数据打印出来:
1 | root@ubuntu:/home/sherlock/warpdrive/test# ./test_sva_perf |
test_sva_bind test_sva_perf里各个命令参数的用法可以参考help说明。