mailweb.openeuler.org
Sign In
Sign In
Manage this list
×
Keyboard Shortcuts
Thread View
j
: Next unread message
k
: Previous unread message
j a
: Jump to all threads
j l
: Jump to MailingList overview
2023
October
September
August
July
June
May
April
March
February
January
2022
December
November
October
September
List overview
Download
WayCa
May 2023
----- 2023 -----
October 2023
September 2023
August 2023
July 2023
June 2023
May 2023
April 2023
March 2023
February 2023
January 2023
----- 2022 -----
December 2022
November 2022
October 2022
September 2022
wayca@openeuler.org
4 participants
6 discussions
Start a n
N
ew thread
[PATCH] Added the accelerator WayCa SIG document.
by Hao Fang
24 May '23
24 May '23
From: JiangShui Yang <yangjiangshui(a)h-partners.com> Added the accelerator WayCa SIG document. Signed-off-by: JiangShui Yang <yangjiangshui(a)h-partners.com> --- .../openEuler-WayCa-SIG-加速器介绍.md | 462 ++++++++++++++++++ 1 file changed, 462 insertions(+) create mode 100644 WayCa-Kunpeng-底软/Wayca-Kunpeng-加速器/openEuler-WayCa-SIG-加速器介绍.md diff --git a/WayCa-Kunpeng-底软/Wayca-Kunpeng-加速器/openEuler-WayCa-SIG-加速器介绍.md b/WayCa-Kunpeng-底软/Wayca-Kunpeng-加速器/openEuler-WayCa-SIG-加速器介绍.md new file mode 100644 index 0000000..9e2c0da --- /dev/null +++ b/WayCa-Kunpeng-底软/Wayca-Kunpeng-加速器/openEuler-WayCa-SIG-加速器介绍.md @@ -0,0 +1,462 @@ +# openEuler WayCa SIG 加速器介绍 + +* 加速器模块包含基于CRYPTO、HWRNG、UACCE、UADK框架实现的支持鲲鹏加速器设备的内核态与用户态驱动。加速器模块包括5个子模块,分别为队列管理模块QM、高性能RSA计算引擎HPRE、硬件安全加速引擎SEC、压缩算法加速引擎ZIP、真随机数产生器TRNG模块。QM是为了统一加速器设备和软件之间的接口,采用统一的队列管理模块QM来和软件进行交互。加速器HPRE、SEC、ZIP设备都集成QM模块。HPRE模块支持RSA/DH/ECDH/X25519/X448/ECDSA/SM2算法,ZIP模块支持gzip/zlib/deflate/lz77_zstd算法,SEC模块支持AEAD/SKCIPHER/DIGEST算法,TRNG模块支持获取随机数。加速器驱动代码已上传到linux和linaro社区。 + +## ACC 模块介绍 + +* ACC模块是加速器内核态硬件驱动,内核态驱动主要实现加速器设备虚拟化(SRIOV)、限流、DFX信息查询、crypto内核态硬件算法、虚拟化热迁移、RAS硬件错误处理、FLR复位、低功耗等这几大特性。 + +### 一、内核态驱动使能 + +#### 源码获取路径 + +* linux kernel 仓库:<
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
> +* openeuler 仓库:<
https://gitee.com/openeuler/kernel.git
> +* 源码目录:drivers/crypto/hisilicon/ + +#### 内核配置 + +* 加速器模块,内核态驱动涉及的config选项有: + + * CONFIG_CRYPTO_DEV_HISI_QM=m hisi_qm.ko编译配置选项 + CONFIG_CRYPTO_DEV_HISI_ZIP=m hisi_zip.ko编译配置选项 + CONFIG_CRYPTO_DEV_HISI_HPRE=m hisi_hpre.ko编译配置选项 + CONFIG_CRYPTO_DEV_HISI_SEC2=m hisi_sec2.ko编译配置选项 + CONFIG_CRYPTO_DEV_HISI_TRNG=m hisi-trng-v2.ko编译配置选项 + CONFIG_CRYPTO_DEV_HISI_MIGRATION=m hisi_migration.ko编译配置选项 + CONFIG_UACCE=m uacce.ko编译配置选项,该模块用于支持用户态驱动,如果不使能加速器仅支持内核态驱动 + +* 虚拟化热迁移依赖的内核config选项有: + + * CONFIG_VFIO=m vfio.ko编译配置选项 + CONFIG_VFIO_PCI=m vfio_pci.ko编译配置选项 + + 此外加速器内核态算法的实现依赖于内核crypto子系统。 + +#### 模块依赖及参数配置指导 + +* 当用户态驱动依赖的config项CONFIG_UACCE未配置时,ZIP、HPRE、SEC驱动支持内核态。hisi_qm模块为zip、sec、hpre三个加速器设备驱动提供内核态中间层接口,故这几个ko的依赖关系为: + * hisi_zip.ko《== hisi_qm.ko + * hisi_sec2.ko《== hisi_qm.ko + * hisi_hpre.ko《== hisi_qm.ko + * hisi-trng-v2.ko《== rng-core.ko +* 加速器模块(SEC、ZIP、HPRE)参数如下表所示,模块参数的支持范围和配置策略会在配置说明中列出。加载驱动时模块参数没有先后顺序。加载驱动后,可以通过cat /sys/bus/pci/drivers/<driver>/module/parameters/ 来查询模块参数。模块参数在加载驱动后不支持更新。如zip驱动的加载(示例为不支持用户态的情况下): + * insmod hisi_zip.ko pf_q_num =16 vfs_num=1 sgl_sge_nr=16 +* 模块参数说明 + +| 参数 | 参数范围 | 加载配置示例 | 配置说明 | +| ---------- | :-------------------------------------- | ------------------------------------------------------------ | ------------------------ | +| pf_q_num | 2~1024 SEC 默认为256 HPRE/ZIP 默认为64 | insmod hisi_zip.ko pf_q_num=16<br />insmod hisi_hpre.ko pf_q_num=16<br />insmod hisi_sec2.ko pf_q_num=16 | PF可用队列数 | +| vfs_num | 0~63 默认值为0 | insmod hisi_zip.ko vfs_num=1<br />insmod hisi_hpre.ko vfs_num=1<br />insmod hisi_sec2.ko vfs_num=1 | 使能VF数 | +| sgl_sge_nr | 1~225 默认值为10 | insmod hisi_zip.ko sgl_sge_nr=16 | 单个sgl的sge数量 (仅ZIP模块参数) | +| ctx_q_num | 2~32,仅偶数默认值为2 | insmod hisi_sec2.ko ctx_q_num=16 | crypto tfm下的硬件队列数 | +| uacce_mode | 0、1 默认值为0 | insmod hisi_zip.ko uacce_mode=1<br />insmod hisi_hpre.ko uacce_mode=1<br />insmod hisi_sec.ko <u>uacce_mode=1</u> | 用户态驱动开关 | + +### 二、ZIP SEC HPRE内核态特性 + +#### 1、加速器支持SRIOV + +* 特性介绍 + + 加速器设备支持通过PCI驱动框架注册设备驱动,加速器设备支持PCI function的SRIOV功能实现设备虚拟化操作,并且支持通过驱动模块参数直接配置虚拟化设备VF的个数。 + + 用户通过vfs_num模块参数,可设置初始的vf数目,加载驱动模块后,每个加速器PF将产生对应数量的vf(不支持模块加载后再对该模块参数进行更新,且通过模块参数只能查询到初始配置的值)。同时,支持pci sysfs方式更新vf的个数,可用于更新对应PCI物理设备的vf数量,配置功能仅在PF,同时pf支持的算法业务、FLR、限流vf同样支持。 + +* 涉及代码与使能 + + | commitid | subject | openeuler enabled(Y/N) | + | ------------ | ------------------------------------------------------------ | ------------------------ | + | 5ec302a364bf | crypto: hisilicon - add SRIOV support for HPRE | Y | + | 35ee280fb1fb | crypto: hisilicon - add vfs_num module parameter for hpre/sec | Y | + | 73bcb049a77 | crypto: hisilicon - add SRIOV for HiSilicon SEC | Y | + | 79e09f30eeba | crypto: hisilicon - add SRIOV support for ZIP | Y | + | 39977f4b51c | crypto: hisilicon - add vfs_num module param for zip | Y | + + + +* 示例 + + 用户也可以在加载驱动时直接通过模块参数vfs_num配置vf: + + ~~~ + modprobe hisi_zip vfs_num=1 + ~~~ + + 模块加载之后支持pci sysfs方式跟新vf个数: + + ~~~ + echo 2 > /sys/devices/<pci_bus>/<pci_device>/<device>/sriov_numvfs + echo 2 > /sys/devices/pci0000:30/0000:30:00.0/0000:31:00.0/sriov_numvfs + ~~~ + +#### 2、加速器支持限流功能 + +* 特性介绍 + + HAC(HPRE/ZIP/SEC)加速器设备在支持虚拟化时,不同VF设备分配给不同的虚拟机VM,即不同的用户使用,考虑到加速器作为附加的硬件计算资源,需要以‘算力’为单位,每个VF的算力应该定量分配出去,让每个用户能够获得足够的计算资源,同时,让同一个加速器物理设备上的VF的‘算力’相互不受干扰,用户购买了多少算力,比如AES-CBC 20Gbps,那么就给可以用户配20Gbps算力。仅支持root权限用户可以配置算力,可对各个function(包括PF) 进行‘算力’大小查询与配置,VF用户只能查询,不能配置。 + + 用户可以在设备debugfs下面看到alg_qos文件节点,算力配置命令为echo bdf qos > alg_qos,以Hip09为例,用户知道aes-cbc满配是100Gbps,用户想要设置0000:39:00.1配置20Gbps,那么实际上输入为20%,则echo 0000:39:00.1 200 > alg_qos,如果想要配置0000:39:00.2,则echo 0000:76:00.2 200 > alg_qos ,zip支持压缩、解压缩,hpre支持ECC、RSA。sec支持加解密算法配置、qos表示流量比例。从1~1000, 表示0.1%~100.0%。 + +* 涉及代码与使能 + + | commitid | subject | openeuler enabled(Y/N) | + | ------------ | ------------------------------------------------------------ | ------------------------ | + | 72b010dc33b9 | crypto: hisilicon/qm - supports writing QoS int the host | Y | + | cc0c40c613d2 | crypto: hisilicon/qm - add the "alg_qos" file node | Y | + | 362c50bad3a7 | crypto: hisilicon/qm - merges the work initialization process into a single function | Y | + | 2966d9d3078c | crypto: hisilicon/qm - add pf ping single vf function | Y | + | 3bbf0783636b | crypto: hisilicon/qm - supports to inquiry each function's QoS | Y | + | 3d2a429271bb | crypto: hisilicon/sec - adds the max shaper type rate | Y | + + + +* 示例 + + sec vf流量配置: + + ~~~ + modprobe hisi_sec2 vfs_num=2 + echo 0000:39:00.1 200 > /sys/kernel/debug/hisi_sec2/0000:39:00.1/alg_qos + cat /sys/kernel/debug/hisi_sec2/0000:39:00.1/alg_qos + ~~~ + +#### 3、加速器提供配置信息查询功能 + +* 特性介绍 + + 支持通过DebugFS文件系统,查询当前设备的基本配置信息,错误信息和业务运行时的状态信息。 + + DebugFS能够查询到的信息: + + * 首先是基本的状态查询,包含软件和硬件:QM状态查询功能,SQC/CQC配置信息,配置寄存器等信息。 + * 其次,正常和异常下收发包数量统计。 + * 另外包括临终遗言功能,复位前将异常变化的寄存器dump,这些寄存器复位后会被还原。 + * 还包括提供寄存器一键比对check功能,快速发现前后变化的寄存器状态。 + +* 涉及代码与使能 + + | commitid | subject | openeuler enabled(Y/N) | + | ------------ | ---------------------------------------------------------- | ------------------------ | + | 72c7a68d2ea3 | crypto: hisilicon - add debugfs for ZIP and QM | Y | + | 8502652542c6 | crypto: hisilicon/qm - add debugfs for QM | Y | + | 0a3a3960210b | crypto: hisilicon/qm - add debugfs to the QM state machine | Y | + | c31dc9fe165d | crypto: hisilicon/qm - add DebugFS for xQC and xQE dump | Y | + | 848974151618 | crypto: hisilicon - Add debugfs for HPRE | Y | + | 1e9bc276f | crypto: hisilicon - add DebugFS for HiSilicon SEC | Y | + + + +* 示例 + + 查看zip设备qm dfx: + + ~~~ + cat /sys/kernel/debug/hisi_zip/0000:31:00.0/qm/regs 查看qm相关寄存器 + cat /sys/kernel/debug/hisi_zip/0000:31:00.0/comp_core0/regs 查看算法核相关寄存器 + ~~~ + + 更多更详细DFX功能可查看加速器DFX手册。 + +#### 4、加速器内核态基本算法加速功能 + +* 特性介绍 + + linux内核加/解密和压缩/算法有内核crypto子系统承载,crypto子系统支持内核态算法扩展及替换。加速器内核态驱动在模块初始化阶段将加速器硬算算法接口注册到crypto子系统中,通过crypto相关算法的接口可以调用加速器设备。 + + 查看加速器驱动支持的算法 + + ~~~ + cat /proc/crypto | grep -B 4 -A 8 hisi_sec2 //查看sec设备支持的算法 + cat /proc/crypto | grep -B 4 -A 8 hisi_hpre //查看hpre设备支持的算法 + cat /proc/crypto | grep -B 4 -A 8 hisi_zip //查看zip设备支持的算法 + ~~~ + +* 涉及代码与使能 + + | commitid | subject | openeuler enabled(Y/N) | + | ------------ | ------------------------------------------------------------ | ------------------------ | + | 62c455ca853e | crypto: hisilicon - add HiSilicon ZIP accelerator support | Y | + | 7b44c0eecd6a | crypto: hisilicon/sec - add new skcipher mode for SEC | Y | + | 2f072d75d1ab | crypto: hisilicon - Add aead support on SEC2 | Y | + | c16a70c1f253 | crypto: hisilicon/sec - add new algorithm mode for AEAD | Y | + | 6c46a3297bea | crypto: hisilicon/sec - add fallback tfm supporting for aeads | Y | + | c8b4b477079d | crypto: hisilicon - add HiSilicon HPRE accelerator | Y | + | fbc75d03fda0 | crypto: hisilicon/hpre - enable Elliptic curve cryptography | Y | + | 05e7b906aa7c | crypto: hisilicon/hpre - add 'ECDH' algorithm | Y | + | b981f7990e1a | crypto: hisilicon/hpre - register ecdh NIST P384 | Y | + | 90274769cf79 | crypto: hisilicon/hpre - add 'CURVE25519' algorithm | Y | + | 3e90efd12959 | hwrng: hisi - add HiSilicon TRNG driver support | Y | + | 6e57871c3b75 | crypto: hisilicon/trng - add version to adapt new algorithm | Y | + +* zlib、gzip算法调用 + + 加载hisi_zip.ko后,通过crypto子系统acomp接口实现压缩解压缩功能。 + + 接口路径:<linux/include/crypto/acompress.h> + +* DH算法调用 + + 加载hisi_hpre.ko后,通过crypto子系统KPP接口实现密钥协商功能。 + + 接口路径:<linux/include/crypto/kpp.h> + + 规格限制:HPRE硬件设备支持DH算法规格如下表。 + + DH group1/2/5/14/15/16模幂长度 + + | group | 模值(bits) | + | ------- | ---------- | + | group1 | 768 | + | group2 | 1024 | + | group5 | 1536 | + | group14 | 2048 | + | group15 | 3072 | + | group16 | 4096 | + +* RSA算法调用 + + 加载hisi_hpre.ko后,通过crypto子系统AKCIPHER接口实现加解密与签名功能。 + + 接口路径:<linux/include/crypto/akcipher.h> + + 规格限制:HPRE硬件设备支持RSA算法规格如下表。 + + RSA密钥位宽 + + | 模式 | 密钥位宽(bits) | + | ---- | ---------------------- | + | 标准 | 1024、2048、3072、4096 | + | CRT | 1024、2048、3072、4096 | + +* ECDH算法调用 + + 加载hisi_hpre.ko后,通过crypto子系统KPP和ECDH接口实现基于椭圆曲线的密钥协商功能。 + + 接口路径:<linux/include/crypto/kpp.h> + + < linux/include/crypto/ecdh.h> + + 规格限制:HPRE硬件设备支持ECDH算法的椭圆曲线规格如下表所示。 + + ECDH椭圆曲线规格 + + | 曲线名称 | 密钥位宽(bits) | + | ------------------- | -------------- | + | ECC_CURVE_NIST_P192 | 192 | + | ECC_CURVE_NIST_P224 | 224 | + | ECC_CURVE_NIST_P256 | 256 | + | ECC_CURVE_NIST_P384 | 384 | + | ECC_CURVE_NIST_P521 | 521 | + +* X25519算法调用 + + 加载hisi_hpre.ko后,通过crypto子系统CURVE25519接口实现基于椭圆曲线curve25519的密钥协商功能。 + + 接口路径:<linux/include/crypto/curve25519.h> + + 规格限制:HPRE硬件设备支持X25519算法的椭圆曲线规格如下表所示。 + + X25519椭圆曲线规格 + + | 曲线名称 | 密钥位宽(bits) | + | ---------- | -------------- | + | Curve25519 | 256 | + +* SKCIPHER算法调用 + + 加载hisi_sec2.ko后,通过crypto子系统SKCIPHER接口实现加解密功能。 + + 接口路径:<linux/include/crypto/skcipher.h> + + 规格限制:SEC硬件设备支持SKCIPHER算法规格如下表。 + + SKCIPHER算法规格 + + | SKCIPHER算法名称 | 设置key长(bits) | + | ---------------- | --------------- | + | ecb(aes) | 128、192、256 | + | cbc(aes) | 128、192、256 | + | xts(aes) | 256、512 | + | ecb(des3_ede) | 192 | + | cbc(des3_ede) | 192 | + | cbc(sm4) | 128 | + | xts(sm4) | 256 | + +* AEAD算法调用 + + 加载hisi_sec2.ko后,通过crypto子系统AEAD接口实现加解密功能。 + + 接口路径:<linux/include/crypto/aead.h> + + 规格限制:SEC硬件设备支持AEAD算法规格如下表。 + + AEAD算法规格 + + | AEAD算法名称 | 设置key长(bits) | 设置author key长(bits) | Author长度(bits) | + | ------------------------------ | --------------- | ---------------------- | ---------------- | + | authenc(hmac(sha1),cbc(aes)) | 128、192、256 | 0~512 | 1~160 | + | authenc(hmac(sha256),cbc(aes)) | 128、192、256 | 0~512 | 1~256 | + | authenc(hmac(sha512),cbc(aes)) | 128、192、256 | 0~1024 | 1~512 | + +* drbg算法调用 + + 加载hisi-trng-v2.ko后,通过crypto子系统drbg接口实现获取随机数功能。 + + 接口路径:<linux/include/crypto/drbg.h> + + 规格限制:只支持seed大小为384bits,最大获取随机数长度为4095*128bits。 + +* 真随机数获取 + + 加载hisi-trng-v2.ko后,支持通过/dev/hwrng获取TRNG设备产生的真随机数。用户从/dev/random中获取的随机数有部分是TRNG设备产生的真随机数 + +#### 5、加速器支持热迁移功能 + +* 特性介绍 + + 加速器热迁移主要配合KVM-QEMU完成直通加速器VF设备的VM和VM之间的动态热迁移,在热迁移的过程中保证业务的不中断和用户不感知。因为openeuler是5.10的内核,没有合入linux主线最新的热迁移框架,当前openeuler使用的是V1版的热迁移(祥见下面patch)适配qemu 6.2.0到8.0之间的版本,qemu 8.x的版本已经不在支持V1版的热迁移。 + +* 涉及代码与使能 + + | commitid | subject | openeuler enabled(Y/N) | + | ------------ | ----------------------------------------------------------- | ------------------------ | + | a0464f0b70f9 | vfio/hisilicon: add acc live migration driver | Y | + | e073afaff8c1 | crypto: hisilicon/qm - support the userspace task resetting | Y | + +* 示例 + + zip热迁移: + + ~~~ + modprobe hisi_zip + 创建vf: + echo 0 > /sys/devices/pci0000:30/0000:30:00.0/0000:31:00.0/sriov_numvfs + echo 2 > /sys/devices/pci0000:30/0000:30:00.0/0000:31:00.0/sriov_numvfs + + 绑定vfio: + echo 0000:31:00.1 > /sys/bus/pci/drivers/hisi_zip/unbind + echo vfio-pci > /sys/devices/pci0000:30/0000:30:00.0/0000:31:00.1/driver_override + echo 0000:31:00.1 > /sys/bus/pci/drivers_probe + + echo 0000:31:00.2 > /sys/bus/pci/drivers/hisi_zip/unbind + echo vfio-pci > /sys/devices/pci0000:30/0000:30:00.0/0000:31:00.2/driver_override + echo 0000:31:00.2 > /sys/bus/pci/drivers_probe + + 启动迁出端: + qemu-system-aarch64 -machine virt,gic-version=3 -enable-kvm -cpu host -m 2G -smp 1 \ + -kernel /home/Image -initrd /home/shan/minifs.cpio.gz -nographic \ + -append "rdinit=init console=ttyAMA0 earlycon=pl011,0x9000000 kpti=off cma=2G" \ + -device vfio-pci,host=31:00.1,x-enable-migration=true,x-pre-copy-dirty-page-tracking=off \ + -monitor stdio -serial telnet:0.0.0.0:1111,server,nowait -net none + + 启动迁入端: + qemu-system-aarch64 -machine virt,gic-version=3 -enable-kvm -cpu host -m 2G -smp 1 \ + -kernel /home/Image -initrd /home/shan/minifs.cpio.gz -nographic \ + -append "rdinit=init console=ttyAMA0 earlycon=pl011,0x9000000 kpti=off cma=2G" \ + -device vfio-pci,host=31:00.2,x-enable-migration=true,x-pre-copy-dirty-page-tracking=off \ + -monitor stdio -serial telnet:0.0.0.0:2222,server,nowait -net none -incoming tcp:0:6666 + + 迁出端vm加载加速器驱动: + insmod hisi_zip.ko (可跑加速器业务,目前openEuler VM仅支持内核态业务) + + host迁出端控制台启动迁移: + migrate tcp:0.0.0.0:6666 + ~~~ + +#### 6、加速器支持RAS复位特性 + +* 特性介绍 + + Reliability—可靠性 、Availability—可用性、Serviceability—可服务性简称RAS,RAS是用于保障HAC设备的可靠性,即当HAC出现硬件错误时,尽最大可能不影响业务连续性与正确性。加速器RAS特性主要包括设备停流、缓存现场、复位、恢复业务。当加速器设备发生硬件错误时会触发RAS中断,在保证用户(UADK接口或者内核Crypto接口的调用者)业务连续性和正确性的前提下,中断处理程序完成对硬件错误的纠正。 + +* 使涉及代码与能 + + | commitid | subject | openeuler enabled(Y/N) | + | ------------ | ------------------------------------------------------------ | ------------------------ | + | b67202e8ed30 | crypto: hisilicon/qm - add state machine for QM | Y | + | dbdc1ec31fc0 | crypto: hisilicon - add device error report through abnormal irq | Y | + | 6c6dd5802c2d | crypto: hisilicon/qm - add controller reset interface | Y | + | 1f5c9f34f0cc | crypto: hisilicon/hpre - add controller reset support for HPRE | Y | + | c4aab24448a3 | crypto: hisilicon - enable new error types for QM | Y | + | ed278023708b | crypto: hisilicon/hpre - add two RAS correctable errors processing | Y | + | 141876c252a4 | crypto: hisilicon/sec2 - add controller reset support for SEC2 | Y | + | 1db0016e0d22 | crypto: hisilicon/qm - do not reset hardware when CE happens | Y | + + +#### 7、加速器支持FLR复位功能 + +* 特性介绍 + + 加速器设备支持通过PCI驱动框架注册设备驱动,提供基于PCI设备的FLR复位功能,完成Function级别的复位,同时实现软件和硬件恢复到初始化的状态,在复位场景下,保证业务流合理停止处理(合理停止:停流时用户会被通知,用户对未完成的任务进行相应处理,用户可以选择,在复位完成后,基于初始状态的function设备继续进行业务,或也可以直接退出业务处理,其中用户是指UADK接口或者内核Crypto接口的调用者) + +* 涉及代码与使能 + + | commitid | subject | openeuler enabled(Y/N) | + | ------------ | ------------------------------------------------------------ | ------------------------ | + | 7ce396fa12a9 | crypto: hisilicon - add FLR support | Y | + | 38cd3968bf28 | crypto: hisilicon/qm - adjust reset interface | Y | + | 7ed83901326f | crypto: hisilicon/qm - add stop queue by hardware | Y | + | e3ac4d20e936 | crypto: hisilicon/qm - enable PF and VFs communication | Y | + | 3cd53a27c2fc | crypto: hisilicon/qm - add callback to support communication | Y | + | 760fe22cf5e9 | crypto: hisilicon/qm - update reset flow | Y | + +* 示例 + + ~~~ + zip pf reset: + echo 1 > /sys/bus/pci/devices/0000:31:00.0/reset + + zip vf reset: + echo 1 > /sys/bus/pci/devices/0000:31:00.1/reset + ~~~ + +#### 8、加速器设备支持低功耗特性 + +* 对于加速器设备,硬件上支持对单个PF设备进行电源的打开与关闭。用户可以通过Device SysFS(/sys/devices/.../power/control)对单个PF设备进行低功耗控制配置,如果使能‘auto’策略,设备将在被使用时(内核与用户态应用在调用Crypto或Warpdrive接口获取硬件资源)自动进入运行状态,如果使能了‘on’策略,那么该设备就一直处于运作状态,不进行任何功耗控制。由于PCIE协议要求在D3cold电源状态下VF不应该使能起来,因此在使能VF时不进入下电状态,此时依赖芯片本身支持的clock-gating来降低功耗。 + +* 涉及代码与使能 + + | commitid | subject | openeuler enabled(Y/N) | + | ------------ | ------------------------------------------------------------ | ------------------------ | + | d7ea53395b72 | crypto: hisilicon - add runtime PM ops | Y | + | 607c191b371d | crypto: hisilicon - support runtime PM for accelerator device | Y | + | ed5fa39fa8a6 | crypto: hisilicon - enable zip device clock gating | Y | + | 3d845d497b23 | crypto: hisilicon - enable sec device clock gating | Y | + | ea5202dff79c | crypto: hisilicon - enable hpre device clock gating | Y | + +* 示例 + + zip设备配置低功耗策略 + + ~~~ + cat /sys/bus/pci/devices/0000:31:00.1/power/runtime_status + echo auto > /sys/bus/pci/devices/0000:31:00.1/power/control + cat /sys/bus/pci/devices/0000:31:00.1/power/runtime_status + ~~~ + +#### 9、支持获取硬件随机数特性 + +* 特性介绍 + + 芯片TRNG模块提供硬件随机数算法,内核TRNG驱动(drivers/crypto/hisilicon/trng)提供Crypto RNG算法,往Kernel Crypto子系统进行注册,同时注册TRNG真随机数设备驱动到HWRANDOM子系统。这样,通过内核CRYPTO RNG接口与/dev/random接口可分别使用芯片TRNG所提供的DRBG与TRNG真随机数。 + +* 涉及代码与使能 + + | commitid | subject | openeuler enabled(Y/N) | + | ------------ | ----------------------------------------------------------- | ------------------------ | + | 3e90efd12959 | hwrng: hisi - add HiSilicon TRNG driver support | Y | + | 6e57871c3b75 | crypto: hisilicon/trng - add version to adapt new algorithm | Y | + + + +* 示例 + + ~~~ + cat /dev/hwrng + cat /dev/random + ~~~ + + + +## UADK 模块介绍 +* 详情可以参考UADK用户手册
https://gitee.com/openeuler/uadk/wikis/%E4%BD%BF%E7%94%A8%E6%96%87%E6%A1%A3…
-- 2.30.0
1
0
0
0
[PATCH] Added the accelerator WayCa SIG document.
by Hao Fang
24 May '23
24 May '23
From: JiangShui Yang <yangjiangshui(a)h-partners.com> --- ...g-加速器-xxx技术用户使用指南.md | 39 -- ...Kunpeng-加速器-xxx模块特性介绍.md | 38 -- .../openEuler-WayCa-SIG-加速器介绍.md | 462 ++++++++++++++++++ 3 files changed, 462 insertions(+), 77 deletions(-) delete mode 100644 WayCa-Kunpeng-底软/Wayca-Kunpeng-加速器/Wayca-Kunpeng-加速器-xxx技术用户使用指南.md delete mode 100644 WayCa-Kunpeng-底软/Wayca-Kunpeng-加速器/Wayca-Kunpeng-加速器-xxx模块特性介绍.md create mode 100644 WayCa-Kunpeng-底软/Wayca-Kunpeng-加速器/openEuler-WayCa-SIG-加速器介绍.md diff --git a/WayCa-Kunpeng-底软/Wayca-Kunpeng-加速器/Wayca-Kunpeng-加速器-xxx技术用户使用指南.md b/WayCa-Kunpeng-底软/Wayca-Kunpeng-加速器/Wayca-Kunpeng-加速器-xxx技术用户使用指南.md deleted file mode 100644 index 1a3e151..0000000 --- a/WayCa-Kunpeng-底软/Wayca-Kunpeng-加速器/Wayca-Kunpeng-加速器-xxx技术用户使用指南.md +++ /dev/null @@ -1,39 +0,0 @@ - -# openEuler WayCa 鲲鹏xxx xxx用户使用指南 - -## 使用场景 - -- 存储、ceph、待探索 (NA或介绍各场景收益及使用特性) - -## 硬件环境 -- 鲲鹏920 -- 固件依赖需求可按照实际情况补齐 bmc cpld bios 最低版本要求。 - -## 软件版本 - -- openEuler 22.03 lts -- openEuler 22.03 lts SP1 - -## 安装使用 - -- 1)安装openEuler系统 --- 详见安装指导 -- 2)本地ISO 源配置 --- 挂载BMC iso --- mount xxx --- 修改 sourcelist --- rpm update -- 3)安装dpdk软件包 --- rpm install xxx --- xxx -v -- 4)基本功能测试 --- testpm xxx --- xxx效果 -备注:保证功能可用 - -## 交流答疑 - --
https://gitee.com/openeuler/wayca/issue
-提单title 标识: 【Way-Kunpeng-高速网络-dpdk】 - -备注:用于交流基本使用、特性、场景、需求和问题答疑等。 \ No newline at end of file diff --git a/WayCa-Kunpeng-底软/Wayca-Kunpeng-加速器/Wayca-Kunpeng-加速器-xxx模块特性介绍.md b/WayCa-Kunpeng-底软/Wayca-Kunpeng-加速器/Wayca-Kunpeng-加速器-xxx模块特性介绍.md deleted file mode 100644 index c4cf2a1..0000000 --- a/WayCa-Kunpeng-底软/Wayca-Kunpeng-加速器/Wayca-Kunpeng-加速器-xxx模块特性介绍.md +++ /dev/null @@ -1,38 +0,0 @@ - -# openEuler WayCa 鲲鹏xxx xxx模块介绍 - -## xxx功能描述 - -xxx 全称为 Data Plane Development Kit,是 Intel 提供的一套用户态库,为用户在多个平台提供一套高速处理数据报文的编程接口,为通信领域,云数据中心等网络或存储应用场景提供高性能加速。 -DPDK加强了对 ARM64 的支持,集成了 hns3 PMD 驱动,完整支持鲲鹏芯片网口特性。鲲鹏芯片板载网口配套 hns3 PMD 支持 10G、25G、100G 等速率,支持单播、多播、广播、混杂等网口基本特性,支持 VLAN、流表、TSO、GRO 等高级特性,并利用 NEON 指令实现数据面高速转 -原生 DPDK 以轮询代替中断,避免上下文切换开销,并利用多核实现并行 IO,通过旁路内核实现零拷贝,实现用户态 -高速转发能力。 -DPDK 在鲲鹏网卡支持关键特性如下: -• 支持 SRIOV:DPDK 可使用多个 VF 进行业务处理,充分挖掘设备在 VM 或容器场景下的扩展能力。 -• 支持单播、多播、广播、混杂等网络特性。 -• 支持 RSS:支持使用网卡多队列,实现多处理器系统下使接收报文在多个 CPU 之间高效分发,增加 cache 命中率, -提高收发速率。 -• 支持 VLAN:支持 VLAN 过滤,VLAN 添加删除,VLAN 剥离等功能。 -• 支持流表:支持流规则设置,根据报文元组等信息进行数据流路由到指定队列。 -• 支持 checksum 卸载:卸载 checksum 校验、计算到网卡,释放 CPU 能力,提高转发速率。 -• 支持 TSO、GRO 卸载:支持报文 TCP 分片、聚合卸载到网卡,降低 CPU 负载,加快报文处理速率。 -• 支持 SIMD 向量指令处理:利用 NEON 指令高效处理网卡收发报文,提高报文处理速率。 -• 支持 bonding: 支持网口聚合功能,提高带宽能力,增大冗余能力。 -• 支持 dfx 维护:提供设备各功能状态查询、报文统计查询,提供在线定位能力。 - -## 特性详解 - -### 特性1:支持 SRIOV:DPDK 可使用多个 VF 进行业务处理,充分挖掘设备在 VM 或容器场景下的扩展能力。 -- 特性详解 -描述特性1。 -- 支持版本: openEuler 22.03 lts - -### 特性2:支持 RSS:支持使用网卡多队列,实现多处理器系统下使接收报文在多个 CPU 之间高效分发,增加 cache 命中率,提高收发速率。 -- 特性详解 -描述特性2。 -- 支持版本: openEuler 22.03 lts openEuler 22.03 lts SP1 - -### 特性XX:支持 RSS:支持使用网卡多队列,实现多处理器系统下使接收报文在多个 CPU 之间高效分发,增加 cache 命中率,提高收发速率。 -- 特性详解 -描述特性X。 -- 支持版本: openEuler 22.03 lts openEuler 22.03 lts SP1 \ No newline at end of file diff --git a/WayCa-Kunpeng-底软/Wayca-Kunpeng-加速器/openEuler-WayCa-SIG-加速器介绍.md b/WayCa-Kunpeng-底软/Wayca-Kunpeng-加速器/openEuler-WayCa-SIG-加速器介绍.md new file mode 100644 index 0000000..62b4538 --- /dev/null +++ b/WayCa-Kunpeng-底软/Wayca-Kunpeng-加速器/openEuler-WayCa-SIG-加速器介绍.md @@ -0,0 +1,462 @@ +# openEuler WayCa SIG 加速器介绍 + +* 加速器模块包含基于CRYPTO、HWRNG、UACCE、UADK框架实现的支持鲲鹏加速器设备的内核态与用户态驱动。加速器模块包括5个子模块,分别为队列管理模块QM、高性能RSA计算引擎HPRE、硬件安全加速引擎SEC、压缩算法加速引擎ZIP、真随机数产生器TRNG模块。QM是为了统一加速器设备和软件之间的接口,采用统一的队列管理模块QM来和软件进行交互。加速器HPRE、SEC、ZIP设备都集成QM模块。HPRE模块支持RSA/DH/ECDH/X25519/X448/ECDSA/SM2算法,ZIP模块支持gzip/zlib/deflate/lz77_zstd算法,SEC模块支持AEAD/SKCIPHER/DIGEST算法,TRNG模块支持获取随机数。加速器驱动代码已上传到linux和linaro社区。 + +## ACC 模块介绍 + +* ACC模块是加速器内核态硬件驱动,内核态驱动主要实现加速器设备虚拟化(SRIOV)、限流、DFX信息查询、crypto内核态硬件算法、虚拟化热迁移、RAS硬件错误处理、FLR复位、低功耗等这几大特性。 + +### 一、内核态驱动使能 + +#### 源码获取路径 + +* linux kernel 仓库:<
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
> +* openeuler 仓库:<
https://gitee.com/openeuler/kernel.git
> +* 源码目录:drivers/crypto/hisilicon/ + +#### 内核配置 + +* 加速器模块,内核态驱动涉及的config选项有: + + * CONFIG_CRYPTO_DEV_HISI_QM=m hisi_qm.ko编译配置选项 + CONFIG_CRYPTO_DEV_HISI_ZIP=m hisi_zip.ko编译配置选项 + CONFIG_CRYPTO_DEV_HISI_HPRE=m hisi_hpre.ko编译配置选项 + CONFIG_CRYPTO_DEV_HISI_SEC2=m hisi_sec2.ko编译配置选项 + CONFIG_CRYPTO_DEV_HISI_TRNG=m hisi-trng-v2.ko编译配置选项 + CONFIG_CRYPTO_DEV_HISI_MIGRATION=m hisi_migration.ko编译配置选项 + CONFIG_UACCE=m uacce.ko编译配置选项,该模块用于支持用户态驱动,如果不使能加速器仅支持内核态驱动 + +* 虚拟化热迁移依赖的内核config选项有: + + * CONFIG_VFIO=m vfio.ko编译配置选项 + CONFIG_VFIO_PCI=m vfio_pci.ko编译配置选项 + + 此外加速器内核态算法的实现依赖于内核crypto子系统。 + +#### 模块依赖及参数配置指导 + +* 当用户态驱动依赖的config项CONFIG_UACCE未配置时,ZIP、HPRE、SEC驱动支持内核态。hisi_qm模块为zip、sec、hpre三个加速器设备驱动提供内核态中间层接口,故这几个ko的依赖关系为: + * hisi_zip.ko《== hisi_qm.ko + * hisi_sec2.ko《== hisi_qm.ko + * hisi_hpre.ko《== hisi_qm.ko + * hisi-trng-v2.ko《== rng-core.ko +* 加速器模块(SEC、ZIP、HPRE)参数如下表所示,模块参数的支持范围和配置策略会在配置说明中列出。加载驱动时模块参数没有先后顺序。加载驱动后,可以通过cat /sys/bus/pci/drivers/<driver>/module/parameters/ 来查询模块参数。模块参数在加载驱动后不支持更新。如zip驱动的加载(示例为不支持用户态的情况下): + * insmod hisi_zip.ko pf_q_num =16 vfs_num=1 sgl_sge_nr=16 +* 模块参数说明 + +| 参数 | 参数范围 | 加载配置示例 | 配置说明 | +| ---------- | :-------------------------------------- | ------------------------------------------------------------ | ------------------------ | +| pf_q_num | 2~1024 SEC 默认为256 HPRE/ZIP 默认为64 | insmod hisi_zip.ko pf_q_num=16<br />insmod hisi_hpre.ko pf_q_num=16<br />insmod hisi_sec2.ko pf_q_num=16 | PF可用队列数 | +| vfs_num | 0~63 默认值为0 | insmod hisi_zip.ko vfs_num=1<br />insmod hisi_hpre.ko vfs_num=1<br />insmod hisi_sec2.ko vfs_num=1 | 使能VF数 | +| sgl_sge_nr | 1~225 默认值为10 | insmod hisi_zip.ko sgl_sge_nr=16 | 单个sgl的sge数量 (仅ZIP模块参数) | +| ctx_q_num | 2~32,仅偶数默认值为2 | insmod hisi_sec2.ko ctx_q_num=16 | crypto tfm下的硬件队列数 | +| uacce_mode | 0、1 默认值为0 | insmod hisi_zip.ko uacce_mode=1<br />insmod hisi_hpre.ko uacce_mode=1<br />insmod hisi_sec.ko <u>uacce_mode=1</u> | 用户态驱动开关 | + +### 二、ZIP SEC HPRE内核态特性 + +#### 1、加速器支持SRIOV + +* 特性介绍 + + 加速器设备支持通过PCI驱动框架注册设备驱动,加速器设备支持PCI function的SRIOV功能实现设备虚拟化操作,并且支持通过驱动模块参数直接配置虚拟化设备VF的个数。 + + 用户通过vfs_num模块参数,可设置初始的vf数目,加载驱动模块后,每个加速器PF将产生对应数量的vf(不支持模块加载后再对该模块参数进行更新,且通过模块参数只能查询到初始配置的值)。同时,支持pci sysfs方式更新vf的个数,可用于更新对应PCI物理设备的vf数量,配置功能仅在PF,同时pf支持的算法业务、FLR、限流vf同样支持。 + +* 涉及代码与使能 + + | commitid | subject | openeuler enabled(Y/N) | + | ------------ | ------------------------------------------------------------ | ------------------------ | + | 5ec302a364bf | crypto: hisilicon - add SRIOV support for HPRE | Y | + | 35ee280fb1fb | crypto: hisilicon - add vfs_num module parameter for hpre/sec | Y | + | 73bcb049a77 | crypto: hisilicon - add SRIOV for HiSilicon SEC | Y | + | 79e09f30eeba | crypto: hisilicon - add SRIOV support for ZIP | Y | + | 39977f4b51c | crypto: hisilicon - add vfs_num module param for zip | Y | + + + +* 示例 + + 用户也可以在加载驱动时直接通过模块参数vfs_num配置vf: + + ~~~ + modprobe hisi_zip vfs_num=1 + ~~~ + + 模块加载之后支持pci sysfs方式跟新vf个数: + + ~~~ + echo 2 > /sys/devices/<pci_bus>/<pci_device>/<device>/sriov_numvfs + echo 2 > /sys/devices/pci0000:30/0000:30:00.0/0000:31:00.0/sriov_numvfs + ~~~ + +#### 2、加速器支持限流功能 + +* 特性介绍 + + HAC(HPRE/ZIP/SEC)加速器设备在支持虚拟化时,不同VF设备分配给不同的虚拟机VM,即不同的用户使用,考虑到加速器作为附加的硬件计算资源,需要以‘算力’为单位,每个VF的算力应该定量分配出去,让每个用户能够获得足够的计算资源,同时,让同一个加速器物理设备上的VF的‘算力’相互不受干扰,用户购买了多少算力,比如AES-CBC 20Gbps,那么就给可以用户配20Gbps算力。仅支持root权限用户可以配置算力,可对各个function(包括PF) 进行‘算力’大小查询与配置,VF用户只能查询,不能配置。 + + 用户可以在设备debugfs下面看到alg_qos文件节点,算力配置命令为echo bdf qos > alg_qos,以Hip09为例,用户知道aes-cbc满配是100Gbps,用户想要设置0000:39:00.1配置20Gbps,那么实际上输入为20%,则echo 0000:39:00.1 200 > alg_qos,如果想要配置0000:39:00.2,则echo 0000:76:00.2 200 > alg_qos ,zip支持压缩、解压缩,hpre支持ECC、RSA。sec支持加解密算法配置、qos表示流量比例。从1~1000, 表示0.1%~100.0%。 + +* 涉及代码与使能 + + | commitid | subject | openeuler enabled(Y/N) | + | ------------ | ------------------------------------------------------------ | ------------------------ | + | 72b010dc33b9 | crypto: hisilicon/qm - supports writing QoS int the host | Y | + | cc0c40c613d2 | crypto: hisilicon/qm - add the "alg_qos" file node | Y | + | 362c50bad3a7 | crypto: hisilicon/qm - merges the work initialization process into a single function | Y | + | 2966d9d3078c | crypto: hisilicon/qm - add pf ping single vf function | Y | + | 3bbf0783636b | crypto: hisilicon/qm - supports to inquiry each function's QoS | Y | + | 3d2a429271bb | crypto: hisilicon/sec - adds the max shaper type rate | Y | + + + +* 示例 + + sec vf流量配置: + + ~~~ + modprobe hisi_sec2 vfs_num=2 + echo 0000:39:00.1 200 > /sys/kernel/debug/hisi_sec2/0000:39:00.1/alg_qos + cat /sys/kernel/debug/hisi_sec2/0000:39:00.1/alg_qos + ~~~ + +#### 3、加速器提供配置信息查询功能 + +* 特性介绍 + + 支持通过DebugFS文件系统,查询当前设备的基本配置信息,错误信息和业务运行时的状态信息。 + + DebugFS能够查询到的信息: + + * 首先是基本的状态查询,包含软件和硬件:QM状态查询功能,SQC/CQC配置信息,配置寄存器等信息。 + * 其次,正常和异常下收发包数量统计。 + * 另外包括临终遗言功能,复位前将异常变化的寄存器dump,这些寄存器复位后会被还原。 + * 还包括提供寄存器一键比对check功能,快速发现前后变化的寄存器状态。 + +* 涉及代码与使能 + + | commitid | subject | openeuler enabled(Y/N) | + | ------------ | ---------------------------------------------------------- | ------------------------ | + | 72c7a68d2ea3 | crypto: hisilicon - add debugfs for ZIP and QM | Y | + | 8502652542c6 | crypto: hisilicon/qm - add debugfs for QM | Y | + | 0a3a3960210b | crypto: hisilicon/qm - add debugfs to the QM state machine | Y | + | c31dc9fe165d | crypto: hisilicon/qm - add DebugFS for xQC and xQE dump | Y | + | 848974151618 | crypto: hisilicon - Add debugfs for HPRE | Y | + | 1e9bc276f | crypto: hisilicon - add DebugFS for HiSilicon SEC | Y | + + + +* 示例 + + 查看zip设备qm dfx: + + ~~~ + cat /sys/kernel/debug/hisi_zip/0000:31:00.0/qm/regs 查看qm相关寄存器 + cat /sys/kernel/debug/hisi_zip/0000:31:00.0/comp_core0/regs 查看算法核相关寄存器 + ~~~ + + 更多更详细DFX功能可查看加速器DFX手册。 + +#### 4、加速器内核态基本算法加速功能 + +* 特性介绍 + + linux内核加/解密和压缩/算法有内核crypto子系统承载,crypto子系统支持内核态算法扩展及替换。加速器内核态驱动在模块初始化阶段将加速器硬算算法接口注册到crypto子系统中,通过crypto相关算法的接口可以调用加速器设备。 + + 查看加速器驱动支持的算法 + + ~~~ + cat /proc/crypto | grep -B 4 -A 8 hisi_sec2 //查看sec设备支持的算法 + cat /proc/crypto | grep -B 4 -A 8 hisi_hpre //查看hpre设备支持的算法 + cat /proc/crypto | grep -B 4 -A 8 hisi_zip //查看zip设备支持的算法 + ~~~ + +* 涉及代码与使能 + + | commitid | subject | openeuler enabled(Y/N) | + | ------------ | ------------------------------------------------------------ | ------------------------ | + | 62c455ca853e | crypto: hisilicon - add HiSilicon ZIP accelerator support | Y | + | 7b44c0eecd6a | crypto: hisilicon/sec - add new skcipher mode for SEC | Y | + | 2f072d75d1ab | crypto: hisilicon - Add aead support on SEC2 | Y | + | c16a70c1f253 | crypto: hisilicon/sec - add new algorithm mode for AEAD | Y | + | 6c46a3297bea | crypto: hisilicon/sec - add fallback tfm supporting for aeads | Y | + | c8b4b477079d | crypto: hisilicon - add HiSilicon HPRE accelerator | Y | + | fbc75d03fda0 | crypto: hisilicon/hpre - enable Elliptic curve cryptography | Y | + | 05e7b906aa7c | crypto: hisilicon/hpre - add 'ECDH' algorithm | Y | + | b981f7990e1a | crypto: hisilicon/hpre - register ecdh NIST P384 | Y | + | 90274769cf79 | crypto: hisilicon/hpre - add 'CURVE25519' algorithm | Y | + | 3e90efd12959 | hwrng: hisi - add HiSilicon TRNG driver support | Y | + | 6e57871c3b75 | crypto: hisilicon/trng - add version to adapt new algorithm | Y | + +* zlib、gzip算法调用 + + 加载hisi_zip.ko后,通过crypto子系统acomp接口实现压缩解压缩功能。 + + 接口路径:<linux/include/crypto/acompress.h> + +* DH算法调用 + + 加载hisi_hpre.ko后,通过crypto子系统KPP接口实现密钥协商功能。 + + 接口路径:<linux/include/crypto/kpp.h> + + 规格限制:HPRE硬件设备支持DH算法规格如下表。 + + DH group1/2/5/14/15/16模幂长度 + + | group | 模值(bits) | + | ------- | ---------- | + | group1 | 768 | + | group2 | 1024 | + | group5 | 1536 | + | group14 | 2048 | + | group15 | 3072 | + | group16 | 4096 | + +* RSA算法调用 + + 加载hisi_hpre.ko后,通过crypto子系统AKCIPHER接口实现加解密与签名功能。 + + 接口路径:<linux/include/crypto/akcipher.h> + + 规格限制:HPRE硬件设备支持RSA算法规格如下表。 + + RSA密钥位宽 + + | 模式 | 密钥位宽(bits) | + | ---- | ---------------------- | + | 标准 | 1024、2048、3072、4096 | + | CRT | 1024、2048、3072、4096 | + +* ECDH算法调用 + + 加载hisi_hpre.ko后,通过crypto子系统KPP和ECDH接口实现基于椭圆曲线的密钥协商功能。 + + 接口路径:<linux/include/crypto/kpp.h> + + < linux/include/crypto/ecdh.h> + + 规格限制:HPRE硬件设备支持ECDH算法的椭圆曲线规格如下表所示。 + + ECDH椭圆曲线规格 + + | 曲线名称 | 密钥位宽(bits) | + | ------------------- | -------------- | + | ECC_CURVE_NIST_P192 | 192 | + | ECC_CURVE_NIST_P224 | 224 | + | ECC_CURVE_NIST_P256 | 256 | + | ECC_CURVE_NIST_P384 | 384 | + | ECC_CURVE_NIST_P521 | 521 | + +* X25519算法调用 + + 加载hisi_hpre.ko后,通过crypto子系统CURVE25519接口实现基于椭圆曲线curve25519的密钥协商功能。 + + 接口路径:<linux/include/crypto/curve25519.h> + + 规格限制:HPRE硬件设备支持X25519算法的椭圆曲线规格如下表所示。 + + X25519椭圆曲线规格 + + | 曲线名称 | 密钥位宽(bits) | + | ---------- | -------------- | + | Curve25519 | 256 | + +* SKCIPHER算法调用 + + 加载hisi_sec2.ko后,通过crypto子系统SKCIPHER接口实现加解密功能。 + + 接口路径:<linux/include/crypto/skcipher.h> + + 规格限制:SEC硬件设备支持SKCIPHER算法规格如下表。 + + SKCIPHER算法规格 + + | SKCIPHER算法名称 | 设置key长(bits) | + | ---------------- | --------------- | + | ecb(aes) | 128、192、256 | + | cbc(aes) | 128、192、256 | + | xts(aes) | 256、512 | + | ecb(des3_ede) | 192 | + | cbc(des3_ede) | 192 | + | cbc(sm4) | 128 | + | xts(sm4) | 256 | + +* AEAD算法调用 + + 加载hisi_sec2.ko后,通过crypto子系统AEAD接口实现加解密功能。 + + 接口路径:<linux/include/crypto/aead.h> + + 规格限制:SEC硬件设备支持AEAD算法规格如下表。 + + AEAD算法规格 + + | AEAD算法名称 | 设置key长(bits) | 设置author key长(bits) | Author长度(bits) | + | ------------------------------ | --------------- | ---------------------- | ---------------- | + | authenc(hmac(sha1),cbc(aes)) | 128、192、256 | 0~512 | 1~160 | + | authenc(hmac(sha256),cbc(aes)) | 128、192、256 | 0~512 | 1~256 | + | authenc(hmac(sha512),cbc(aes)) | 128、192、256 | 0~1024 | 1~512 | + +* drbg算法调用 + + 加载hisi-trng-v2.ko后,通过crypto子系统drbg接口实现获取随机数功能。 + + 接口路径:<linux/include/crypto/drbg.h> + + 规格限制:只支持seed大小为384bits,最大获取随机数长度为4095*128bits。 + +* 真随机数获取 + + 加载hisi-trng-v2.ko后,支持通过/dev/hwrng获取TRNG设备产生的真随机数。用户从/dev/random中获取的随机数有部分是TRNG设备产生的真随机数 + +#### 5、加速器支持热迁移功能 + +* 特性介绍 + + 加速器热迁移主要配合KVM-QEMU完成直通加速器VF设备的VM和VM之间的动态热迁移,在热迁移的过程中保证业务的不中断和用户不感知。因为openeuler是5.10的内核,没有合入linux主线最新的热迁移框架,当前openeuler使用的是V1版的热迁移(祥见下面patch)适配qemu 6.2.0到8.0之间的版本,qemu 8.x的版本已经不在支持V1版的热迁移。 + +* 涉及代码与使能 + + | commitid | subject | openeuler enabled(Y/N) | + | ------------ | ----------------------------------------------------------- | ------------------------ | + | a0464f0b70f9 | vfio/hisilicon: add acc live migration driver | Y | + | e073afaff8c1 | crypto: hisilicon/qm - support the userspace task resetting | Y | + +* 示例 + + zip热迁移: + + ~~~ + modprobe hisi_zip + 创建vf: + echo 0 > /sys/devices/pci0000:30/0000:30:00.0/0000:31:00.0/sriov_numvfs + echo 2 > /sys/devices/pci0000:30/0000:30:00.0/0000:31:00.0/sriov_numvfs + + 绑定vfio: + echo 0000:31:00.1 > /sys/bus/pci/drivers/hisi_zip/unbind + echo vfio-pci > /sys/devices/pci0000:30/0000:30:00.0/0000:31:00.1/driver_override + echo 0000:31:00.1 > /sys/bus/pci/drivers_probe + + echo 0000:31:00.2 > /sys/bus/pci/drivers/hisi_zip/unbind + echo vfio-pci > /sys/devices/pci0000:30/0000:30:00.0/0000:31:00.2/driver_override + echo 0000:31:00.2 > /sys/bus/pci/drivers_probe + + 启动迁出端: + qemu-system-aarch64 -machine virt,gic-version=3 -enable-kvm -cpu host -m 2G -smp 1 \ + -kernel /home/Image -initrd /home/shan/minifs.cpio.gz -nographic \ + -append "rdinit=init console=ttyAMA0 earlycon=pl011,0x9000000 kpti=off cma=2G" \ + -device vfio-pci,host=31:00.1,x-enable-migration=true,x-pre-copy-dirty-page-tracking=off \ + -monitor stdio -serial telnet:0.0.0.0:1111,server,nowait -net none + + 启动迁入端: + qemu-system-aarch64 -machine virt,gic-version=3 -enable-kvm -cpu host -m 2G -smp 1 \ + -kernel /home/Image -initrd /home/shan/minifs.cpio.gz -nographic \ + -append "rdinit=init console=ttyAMA0 earlycon=pl011,0x9000000 kpti=off cma=2G" \ + -device vfio-pci,host=31:00.2,x-enable-migration=true,x-pre-copy-dirty-page-tracking=off \ + -monitor stdio -serial telnet:0.0.0.0:2222,server,nowait -net none -incoming tcp:0:6666 + + 迁出端vm加载加速器驱动: + insmod hisi_zip.ko (可跑加速器业务,目前openEuler VM仅支持内核态业务) + + host迁出端控制台启动迁移: + migrate tcp:0.0.0.0:6666 + ~~~ + +#### 6、加速器支持RAS复位特性 + +* 特性介绍 + + Reliability—可靠性 、Availability—可用性、Serviceability—可服务性简称RAS,RAS是用于保障HAC设备的可靠性,即当HAC出现硬件错误时,尽最大可能不影响业务连续性与正确性。加速器RAS特性主要包括设备停流、缓存现场、复位、恢复业务。当加速器设备发生硬件错误时会触发RAS中断,在保证用户(UADK接口或者内核Crypto接口的调用者)业务连续性和正确性的前提下,中断处理程序完成对硬件错误的纠正。 + +* 使涉及代码与能 + + | commitid | subject | openeuler enabled(Y/N) | + | ------------ | ------------------------------------------------------------ | ------------------------ | + | b67202e8ed30 | crypto: hisilicon/qm - add state machine for QM | Y | + | dbdc1ec31fc0 | crypto: hisilicon - add device error report through abnormal irq | Y | + | 6c6dd5802c2d | crypto: hisilicon/qm - add controller reset interface | Y | + | 1f5c9f34f0cc | crypto: hisilicon/hpre - add controller reset support for HPRE | Y | + | c4aab24448a3 | crypto: hisilicon - enable new error types for QM | Y | + | ed278023708b | crypto: hisilicon/hpre - add two RAS correctable errors processing | Y | + | 141876c252a4 | crypto: hisilicon/sec2 - add controller reset support for SEC2 | Y | + | 1db0016e0d22 | crypto: hisilicon/qm - do not reset hardware when CE happens | Y | + + +#### 7、加速器支持FLR复位功能 + +* 特性介绍 + + 加速器设备支持通过PCI驱动框架注册设备驱动,提供基于PCI设备的FLR复位功能,完成Function级别的复位,同时实现软件和硬件恢复到初始化的状态,在复位场景下,保证业务流合理停止处理(合理停止:停流时用户会被通知,用户对未完成的任务进行相应处理,用户可以选择,在复位完成后,基于初始状态的function设备继续进行业务,或也可以直接退出业务处理,其中用户是指UADK接口或者内核Crypto接口的调用者) + +* 涉及代码与使能 + + | commitid | subject | openeuler enabled(Y/N) | + | ------------ | ------------------------------------------------------------ | ------------------------ | + | 7ce396fa12a9 | crypto: hisilicon - add FLR support | Y | + | 38cd3968bf28 | crypto: hisilicon/qm - adjust reset interface | Y | + | 7ed83901326f | crypto: hisilicon/qm - add stop queue by hardware | Y | + | e3ac4d20e936 | crypto: hisilicon/qm - enable PF and VFs communication | Y | + | 3cd53a27c2fc | crypto: hisilicon/qm - add callback to support communication | Y | + | 760fe22cf5e9 | crypto: hisilicon/qm - update reset flow | Y | + +* 示例 + + ~~~ + zip pf reset: + echo 1 > /sys/bus/pci/devices/0000:31:00.0/reset + + zip vf reset: + echo 1 > /sys/bus/pci/devices/0000:31:00.1/reset + ~~~ + +#### 8、加速器设备支持低功耗特性 + +* 对于加速器设备,硬件上支持对单个PF设备进行电源的打开与关闭。用户可以通过Device SysFS(/sys/devices/.../power/control)对单个PF设备进行低功耗控制配置,如果使能‘auto’策略,设备将在被使用时(内核与用户态应用在调用Crypto或Warpdrive接口获取硬件资源)自动进入运行状态,如果使能了‘on’策略,那么该设备就一直处于运作状态,不进行任何功耗控制。由于PCIE协议要求在D3cold电源状态下VF不应该使能起来,因此在使能VF时不进入下电状态,此时依赖芯片本身支持的clock-gating来降低功耗。 + +* 涉及代码与使能 + + | commitid | subject | openeuler enabled(Y/N) | + | ------------ | ------------------------------------------------------------ | ------------------------ | + | d7ea53395b72 | crypto: hisilicon - add runtime PM ops | Y | + | 607c191b371d | crypto: hisilicon - support runtime PM for accelerator device | Y | + | ed5fa39fa8a6 | crypto: hisilicon - enable zip device clock gating | Y | + | 3d845d497b23 | crypto: hisilicon - enable sec device clock gating | Y | + | ea5202dff79c | crypto: hisilicon - enable hpre device clock gating | Y | + +* 示例 + + zip设备配置低功耗策略 + + ~~~ + cat /sys/bus/pci/devices/0000:31:00.1/power/runtime_status + echo auto > /sys/bus/pci/devices/0000:31:00.1/power/control + cat /sys/bus/pci/devices/0000:31:00.1/power/runtime_status + ~~~ + +#### 9、支持获取硬件随机数特性 + +* 特性介绍 + + 芯片TRNG模块提供硬件随机数算法,内核TRNG驱动(drivers/crypto/hisilicon/trng)提供Crypto RNG算法,往Kernel Crypto子系统进行注册,同时注册TRNG真随机数设备驱动到HWRANDOM子系统。这样,通过内核CRYPTO RNG接口与/dev/random接口可分别使用芯片TRNG所提供的DRBG与TRNG真随机数。 + +* 涉及代码与使能 + + | commitid | subject | openeuler enabled(Y/N) | + | ------------ | ----------------------------------------------------------- | ------------------------ | + | 3e90efd12959 | hwrng: hisi - add HiSilicon TRNG driver support | Y | + | 6e57871c3b75 | crypto: hisilicon/trng - add version to adapt new algorithm | Y | + + + +* 示例 + + ~~~ + cat /dev/hwrng + cat /dev/random + ~~~ + + + +## UADK 模块介绍 +* 详情可以参考UADK用户手册
https://gitee.com/openeuler/uadk/wikis/%E4%BD%BF%E7%94%A8%E6%96%87%E6%A1%A3…
-- 2.30.0
1
0
0
0
1175135535
by 1175135535
24 May '23
24 May '23
1
0
0
0
加速器系列~acc
by openEuler conference
23 May '23
23 May '23
您好! sig-WayCa SIG 邀请您参加 2023-05-24 15:30 召开的Zoom会议 会议主题:加速器系列~acc 会议链接:https://us06web.zoom.us/j/85386310326?pwd=ZWZQZmlqUllsMi9ndFVBQWxrZVgwQT09
会议纪要:https://etherpad.openeuler.org/p/sig-WayCa-meetings
温馨提醒:建议接入会议后修改参会人的姓名,也可以使用您在gitee.com的ID
更多资讯尽在:https://openeuler.org/zh/
Hello! openEuler sig-WayCa SIG invites you to attend the Zoom conference will be held at 2023-05-24 15:30, The subject of the conference is 加速器系列~acc, You can join the meeting at
https://us06web.zoom.us/j/85386310326?pwd=ZWZQZmlqUllsMi9ndFVBQWxrZVgwQT09
. Add topics at
https://etherpad.openeuler.org/p/sig-WayCa-meetings
. Note: You are advised to change the participant name after joining the conference or use your ID at
gitee.com
. More information:
https://openeuler.org/en/
1
0
0
0
Add NIC doc
by shenjian (K)
09 May '23
09 May '23
From 19b8bc3d41ec8b248f8c9027aeae68954a010e18 Mon Sep 17 00:00:00 2001 From: Jian Shen <shenjian15(a)huawei.com> Date: Tue, 9 May 2023 14:39:51 +0800 Subject: [PATCH] Modified the format and description for hns3 driver Signed-off-by: Jian Shen <shenjian15(a)huawei.com> --- .../WayCa-Kunpeng-高速网络/README.md | 27 +- ...网络-板载网卡驱动特性介绍.md | 237 ++++++++++++------ 2 files changed, 176 insertions(+), 88 deletions(-) diff --git a/WayCa-Kunpeng-底软/WayCa-Kunpeng-高速网络/README.md b/WayCa-Kunpeng-底软/WayCa-Kunpeng-高速网络/README.md index b5931da..b064c6a 100644 --- a/WayCa-Kunpeng-底软/WayCa-Kunpeng-高速网络/README.md +++ b/WayCa-Kunpeng-底软/WayCa-Kunpeng-高速网络/README.md @@ -1,26 +1,29 @@ -# openEuler WayCa SIG 鲲鹏 高速网络 +# openEuler WayCa 鲲鹏 高速网络 -## 高速网络 +## 高速网络 -- 鲲鹏高速网络主要使用鲲鹏硬件板载网络模块,主要应用涉及DPDK技术和roce、rdma-core等高速网络技术, +- 鲲鹏高速网络主要使用鲲鹏硬件板载网络模块, 主要应用涉及DPDK技术和Roce、rdma-core 、nic 和roh等高速网络技术。 本文档提供了鲲鹏高速网络特性的基本使用和模块的特性介绍,具体内容详见如下: +## NIC 技术文档 -## DPDK技术文档 +- WayCa-Kunpeng-高速网络-板载网卡驱动模块特性介绍.md +-
https://gitee.com/openeuler/Wayca/wayca-Kunpeng-高速网络/WayCa-Kunpeng-高速网络-板载网…
+ +## DPDK 技术文档 - WayCa-Kunpeng-高速网络-dpdk技术用户使用指南.md --
https://gitee.com/openeuler/xxxx/wayca-kunpeng
+-
https://gitee.com/openeuler/Wayca/wayca-Kunpeng-高速网络/xx文档
- WayCa-Kunpeng-高速网络-dpdk模块特性介绍.md --
https://gitee.com/openeuler/xxxx/wayca-kunpeng
- -## Roce和RDMA-CORE技术文档 +-
https://gitee.com/openeuler/Wayca/wayca-Kunpeng-高速网络/xx文档
-- WayCa-Kunpeng-高速网络-xx技术用户使用指南.md --
https://gitee.com/openeuler/xxxx/wayca-kunpeng
+## Roce rdma-core 技术文档 -- WayCa-Kunpeng-高速网络-xx模块特性介绍.md --
https://gitee.com/openeuler/xxxx/wayca-kunpeng
+- WayCa-Kunpeng-高速网络-xxx技术用户使用指南.md +-
https://gitee.com/openeuler/Wayca/wayca-Kunpeng-高速网络/xx文档
+- WayCa-Kunpeng-高速网络-xxx模块特性介绍.md +-
https://gitee.com/openeuler/Wayca/wayca-Kunpeng-高速网络/xx文档
diff --git a/WayCa-Kunpeng-底软/WayCa-Kunpeng-高速网络/WayCa-Kunpeng-高速网络-板载网卡驱动特性介绍.md b/WayCa-Kunpeng-底软/WayCa-Kunpeng-高速网络/WayCa-Kunpeng-高速网络-板载网卡驱动特性介绍.md index 327f162..4ef75b8 100644 --- a/WayCa-Kunpeng-底软/WayCa-Kunpeng-高速网络/WayCa-Kunpeng-高速网络-板载网卡驱动特性介绍.md +++ b/WayCa-Kunpeng-底软/WayCa-Kunpeng-高速网络/WayCa-Kunpeng-高速网络-板载网卡驱动特性介绍.md @@ -1,14 +1,18 @@ # openEuler WayCa SIG 板载网卡驱动(内核态)模块介绍 ## HNS3内核网卡驱动简介 + - HNS3 driver是适配鲲鹏920系列处理器网络控制器的驱动模块,提供了完备的ethernet网卡功能。 - 基础特性已在linux kernel 5.5 完成支持。 + 基础特性已在linux kernel 5.5完成支持。新增重要特性为linux kernel 5.5及以上支持的特性, 涵盖特性简介和社区信息。 + - **源码获取路径** linux kernel
仓库:[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git](htt…
openeuler
仓库:[https://gitee.com/openeuler/kernel.git](https://gitee.com/openeuler/ker…
源码目录:**drivers/net/ethernet/hisilicon/hns3** + - **内核相关配置** - HNS3模块涉及以下5个Config选项: + | 配置项 | 功能 | | :---- | :---- | | CONFIG_HNS3 | 必选,基础配置 | @@ -18,11 +22,13 @@ | CONFIG_HNS3_DCB | 可选,DCB功能 | - 部分特性依赖的内核Config选项 + | 配置项 | 功能 | | :---- | :---- | | CONFIG_RFS_ACCEL | 可选,aRFS功能 | | CONFIG_PCI_IOV | 可选,SRIOV功能 | | CONFIG_VLAN_8021Q | 可选,802.1Q VLAN卸载功能 | + - **基础版本特性列表** - **支持多种接口形态** - 支持光口、电口、背板多种形态 @@ -64,7 +70,6 @@ - 支持RAS - 支持异常中断处理 - 支持环回自检 - - **新增重要特性包括** - 支持查询光模块 eeprom 信息 - 支持UDP GSO卸载 @@ -73,73 +78,107 @@ - 支持各层级复位 - 支持 rx pagepool - 支持DSCP - - 支持FEC统计 - 支持PMU -### SR1: 支持查询光模块eeprom信息 -- 特性介绍 +### 特性1: 支持查询光模块eeprom信息 +- 特性介绍 光口上可能会插入不同类型的光模块介质,PF可以向IMP查询介质模块的eeprom信息,供上层应用读取和解析。可以用于识别检查设备介质是否被更换或故障定位。 - 内核相关配置 - 无 - 软件接口 - 可通过ethtool -m <pf name> [raw on|off] [hex on|off] [offset N] [length N]命令,来查询当前介质模块的eeprom信息。显示形式由参数决定,可以为二进制、十六进制、或解析后的文本形式。可自定义查询的偏移和长度。 - 驱动对外接口 - <code></codeint>int hns3_get_module_eeprom(struct net_device *netdev, + <code>int hns3_get_module_eeprom(struct net_device *netdev, struct ethtool_eeprom *ee, u8 *data)</code> - 涉及代码与使能 -| COMMITID | SUBJECT | openeuler OLK-5.10 ENABLED(Y/N) | -| :----: | :----: | :----: | -| cb10228d234c | net: hns3: adds support for reading module eeprom info | Y | -### SR2: 支持UDP GSO卸载 +linux 主线合入信息 + +| COMMITID | SUBJECT | TAG | +| :----: | :----: | :----: | +| cb10228d234c | [net: hns3: adds support for reading module eeprom
info](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/co…
| kernel v5.7-rc2 | + +openEuler OLK-5.10使能信息 + +| COMMITID | SUBJECT | openeuler OLK-5.10 ENABLED(Y/N) | +| :----: | :----: | :----: | +| cb10228d234c | net: hns3: adds support for reading module eeprom info | Y | + +### 特性2: 支持UDP GSO卸载 + - 特性介绍 -UDP segment offload(UDP GSO),类似TSO(TCP GSO),使得应用层可能生成比实际MTU更多的网络报文, 实际大小受底层网络和链路层协议限制。网络协议栈能够将大块buffer推送至网卡,由网卡执行分片工作,这样减轻了CPU的负荷。鲲鹏920B/C板载网卡硬件提供了对UDP报文的分片功能。此功能PF/VF可以单独使能,支持UDPv4/UDPv6 以及隧道报文。 + UDP segment offload(UDP GSO),类似TSO(TCP GSO),使得应用层可能生成比实际MTU更多的网络报文, 实际大小受底层网络和链路层协议限制。网络协议栈能够将大块buffer推送至网卡,由网卡执行分片工作,这样减轻了CPU的负荷。鲲鹏920系列处理器上板载网卡硬件提供了对UDP报文的分片功能。此功能PF/VF可以单独使能,支持UDPv4/UDPv6 以及隧道报文。 - 内核相关配置 无 - 软件接口 - 驱动要声明支持NETIF_F_GSO_UDP_L4 feature, 方可使能此功能。可通过ethtool -K <devname> tx-udp-segmentation on/off 命令控制该功能的开启和关闭。 UDP协议并不是面向字节流的,如果要支持UDP GSO,它需要通过发送缓冲区的大小隐式地表示了数据报的边界。应用程序必须在send调用时**使用额外参数明确标示这个数据报的gso大小**(socket option SOL_UDP/UDP_SEGMENT 或control message,使用udpgso_bench_tx/rx工具测试时,如果不指定MSS,将由协议栈分段,指定时由硬件分段)。内核构造较大的数据报,并连同相应元数据传递给UDP和IP层。网络设备或GSO层接收大数据报,将有效负载分成gso大小的段,然后复制头部。 - 涉及代码与使能 -| COMMITID | SUBJECT | openeuler OLK-5.10 ENABLED(Y/N) | + +linux 主线合入信息 + +| COMMITID | SUBJECT | TAG | | :----: | :----: | :----: | -| cb10228d234c | net: hns3: adds support for reading module eeprom info | Y | +| 507e46ae26ea | [net: hns3: add getting capabilities of gro offload and fd from
firmware](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.gi…
| v5.18-rc7 | + +openEuler OLK-5.10使能信息 -### SR3: 支持PTP +| COMMITID | SUBJECT | openeuler OLK-5.10 ENABLED(Y/N) | +| :----: | :----: | :----: | +| 72b042b4288c | net: hns3: add getting capabilities of gro offload and fd from firmware | Y | + +### 特性3: 支持PTP - 特性介绍 -PTP(precision time protocol),精确时钟协议,又称IEEE 1588(v2)协议,用于对分布式系统提供亚微秒级别的时钟同步功能。PTP作为一种主从同步系统,在系统过程中,主时钟周期性发布PTP时间同步协议及时间信息,从时钟端口接收主时钟端口发来的时间戳信息,系统据此计算出主从线路时间延迟及主从时间差,并利用时间差调整本地时间,使从设备时间保持与主设备时间一致的频率和相位。 + PTP(precision time protocol),精确时钟协议,又称IEEE 1588(v2)协议,用于对分布式系统提供亚微秒级别的时钟同步功能。PTP作为一种主从同步系统,在系统过程中,主时钟周期性发布PTP时间同步协议及时间信息,从时钟端口接收主时钟端口发来的时间戳信息,系统据此计算出主从线路时间延迟及主从时间差,并利用时间差调整本地时间,使从设备时间保持与主设备时间一致的频率和相位。 + - 内核相关配置 - 内核选项为CONFIG_PTP_1588_CLOCK + +| 配置项 | 功能 | +| :---- | :---- | +| CONFIG_PTP_1588_CLOCK | 可选,ptp功能 | + - 软件接口 可通过ethtool -T <pf_name> 查询当前物理设备支持的时钟能力。 驱动侧实现ndo_do_ioctl接口和ethtool_ops. get_ts_info接口,对应SIOCGHWTSTAMP,返回硬件时间戳信息配置,包括hwtstamp_tx_types和hwtstamp_rx_filters。
Linux提供了标准的ptp配置工具,需要安装linuxptp,详见ptp4l/ptp2sys,使用方法可以参考[redhat的帮助文档](https…
+ - 涉及代码与使能 -| COMMITID | SUBJECT | openeuler OLK-5.10 ENABLED(Y/N) | -| :----: | :----: | :----: | -| 0bf5eb788512 | net: hns3: add support for PTP | Y | -| b34c157f0cdd | net: hns3: add debugfs support for ptp info | Y | -| 8373cd38a888 | net: hns3: change the method of obtaining default ptp cycle | Y | -| 974557020a59 | ptp: hclge: convert .adjfreq to .adjfine | N | -### SR4: 支持硬件tc 卸载 + +linux 主线合入信息 + +| COMMITID | SUBJECT | TAG | +| :----: | :----: | :----: | +| 0bf5eb788512 | [net: hns3: add support for
PTP](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/com…
| v5.13-rc3 | +| b34c157f0cdd | [net: hns3: add debugfs support for ptp
info](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/co…
| v5.13-rc3 | +| 8373cd38a888 | [net: hns3: change the method of obtaining default ptp
cycle](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/c…
| v5.13-rc3 | + +openEuler OLK-5.10使能信息 + +| COMMITID | SUBJECT | openeuler OLK-5.10 ENABLED(Y/N) | +| :----: | :----: | :----: | +| 56acfb181aba | net: hns3: add support for PTP | Y | +| 0e093eb72d95 | net: hns3: add debugfs support for ptp info | Y | +| f61992ad87f2 | net: hns3: change the method of obtaining default ptp cycle | Y | + +### 特性4: 支持硬件tc 卸载 - 特性介绍 基线版本的驱动中,只支持了TC_MQPRIO_MODE_DCB模式,卸载了用户优先级和TC之间的映射关系,新驱动对此进行了增强,通过指定channel模式和hw配置全卸载,即TC_MQPRIO_MODE_CHANNEL模式,可以进一步为每个TC指定队列(各个TC可以不同,但受硬件限制,要求都是2的指数幂)。 + - 内核相关配置 + | 配置项 | 功能 | | :---- | :---- | | CONFIG_NET_SCH_MQPRIO | 可选,硬件tc卸载功能 | + - 软件接口 可通过tc qdisc命令进行配置,参数如下: <code>tc qdisc add dev <pf name> root mqprio num_tc <tc num> map <P0 P1 P2... > queues count1@offset1 count2@offset2 ... hw 1 mode channel</code> @@ -149,39 +188,65 @@ PTP(precision time protocol),精确时钟协议,又称IEEE 1588(v2)协议, 查询配置命令 <code>tc filter show dev eth1 parent ffff:</code> - 涉及代码与使能 -| COMMITID | SUBJECT | openeuler OLK-5.10 ENABLED(Y/N) | -| :----: | :----: | :----: | -| 35244430d624 | net: hns3: refine the struct hane3_tc_info | Y | -| 5a5c90917467 | net: hns3: add support for tc mqprio offload | Y | -| d82650be60ee | net: hns3: don't rollback when destroy mqprio fail | Y | -| a8e76fefe3de | net: hns3: remove tc enable checking | Y | -| 161ad669e6c2 | net: hns3: reconstruct function hclge_ets_validate() | Y | -| ae9e492a3664 | net: hns3: remove redundant client_setup_tc handle | Y | -| 0472e95ffeac | net: hns3: fix mixed flag HCLGE_FLAG_MQPRIO_ENABLE and HCLGE_FLAG_DCB_ENABLE | Y | - -### SR5: 支持各层级复位 +linux 主线合入信息 + +| COMMITID | SUBJECT | TAG | +| :----: | :----: | :----: | +| 35244430d624 | [net: hns3: refine the struct
hane3_tc_info](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/lin…
| v5.10-rc6 | +| 5a5c90917467 | [net: hns3: add support for tc mqprio
offload](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git…
| v5.10-rc6 | +| ae9e492a3664 | [net: hns3: remove redundant client_setup_tc
handle](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/…
| v5.11-rc6 | +| 0472e95ffeac | [net: hns3: fix mixed flag HCLGE_FLAG_MQPRIO_ENABLE and
HCLGE_FLAG_DCB_ENABLE](https://git.kernel.org/pub/scm/linux/kernel/git/torv…
| v5.15-rc2 | +| 161ad669e6c2 | [net: hns3: reconstruct function
hclge_ets_validate()](https://git.kernel.org/pub/scm/linux/kernel/git/torva…
| v5.14-rc7 | +| d82650be60ee | [net: hns3: don't rollback when destroy mqprio
fail](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/co…
| v5.15-rc2 | +| a8e76fefe3de | [net: hns3: remove tc enable
checking](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.gi…
| v5.15-rc2 | + +openEuler OLK-5.10使能信息 + +| COMMITID | SUBJECT | openeuler OLK-5.10 ENABLED(Y/N) | +| :----: | :----: | :----: | +| e887fccc775f | net: hns3: refine the struct hane3_tc_info | Y | +| 46961be39152 | net: hns3: add support for tc mqprio offload | Y | +| bdb36e4c1180 | net: hns3: remove redundant client_setup_tc handle | Y | +| 9bb0177d462e | net: hns3: fix mixed flag HCLGE_FLAG_MQPRIO_ENABLE and HCLGE_FLAG_DCB_ENABLE | Y | +| 688795be38d6 | net: hns3: reconstruct function hclge_ets_validate | Y | +| ba250d23d0c6 | net: hns3: don't rollback when destroy mqprio fail | Y | +| dad19338e6a5 | net: hns3: remove tc enable checking | Y | + +### 特性5: 支持各层级复位 - 特性介绍 - 支持function复位 - function复位包含PF复位和VF复位,PF产生了FLR复位,其管理的所有VF也要一起复位。当VF复位时,仅需复位VF自身。复位前后,网卡的配置需要保持一致。允许高优先级复位打断低优先级复位。 - - 支持FLR复位 - FLR复位是由PCIE框架下发的复位请求,与function复位类似,区别是触发调用的接口不同。 + function复位包含PF复位和VF复位,PF产生了复位,其管理的所有VF也要一起复位。当VF复位时,仅需复位VF自身。复位前后,网卡的配置保持一致。 - PF支持global复位 global复位是整个DIE上所有PF、VF复位。通常是在硬件发生严重故障时发生,需要通过global复位重置更多硬件模块才可能恢复。 - PF支持IMP复位 - IMP复位不仅复位整个DIE上所有PF、VF,同时还复位IMP。在硬件处理上,IMP复位重置的硬件模块和global复位一样。 + IMP复位不仅复位整个DIE上所有PF、VF,同时还复位IMP固件。在硬件处理上,IMP复位重置的硬件模块和global复位一样。 - 优先级上 IMP复位 > Global复位 > FLR复位 > Function复位 + 优先级上 IMP复位 > Global复位 > Function复位,同时产生多个复位源时,优先执行高优先级复位 + - 支持FLR复位 + FLR复位是由PCIE框架下发的复位请求,与function复位类似,区别是触发调用的接口不同。 - 内核相关配置 -无 + FLR依赖PCIe的capbility中置位FLR能力,为可选项 + +- 复位触发源 + - 异常中断 + 当芯片检测到NIC硬件异常时,会上报异常中断,NIC驱动会从IMP查询异常中断源及建议恢复方式,包括仅记录日志、VF复位、PF复位、Global复位和IMP复位。 + - tx timeout + tx timeout是协议栈的发包超时检测机制,默认单个报文5秒钟未发送完成,则会调用NIC驱动的发包超时处理接口。默认处理为function复位。 + - pci框架触发 + 解绑或绑定pci设备时,会触发FLR复位 + AER故障恢复时触发复位 + - 用户接口触发 + 通过ethtool工具可以触发PF复位、VF复位、global复位和imp复位 + echo命令触发flr复位 - 软件接口 - 支持function复位 用户可以通过ethtool --reset ethX dedicated对网口发起function复位。 - 支持FLR复位 - 用户可通过“echo 1 > /sys/class/net/ethx/device/reset”命令直接发起FLR。FLR依赖PCIe的capbility中置位FLR能力,为可选项。 + 用户可通过“echo 1 > /sys/class/net/ethx/device/reset”命令直接发起FLR。FLR依赖PCIe的capbility中置位FLR能力,为可选项。需避免FLR复位与其他复位并发。 - PF支持global复位 用户可以通过ethtool --reset ethx all发起global复位。 @@ -190,60 +255,80 @@ PTP(precision time protocol),精确时钟协议,又称IEEE 1588(v2)协议, 用户可以通过ethtool --reset ethx mgmt发起IMP复位 - 涉及代码与使能 -| COMMITID | SUBJECT | openeuler OLK-5.10 ENABLED(Y/N) | + +linux 主线合入信息 + +| COMMITID | SUBJECT | TAG | | :----: | :----: | :----: | -| ddccc5e368a3 | net: hns3: add support for triggering reset by ethtool | Y | -| 6b9a97ee43b2 | net: hns3: add PCIe FLR support for PF | Y | +| ddccc5e368a3 | [net: hns3: add support for triggering reset by
ethtool](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git…
| v5.14-rc4 | +| 82229c4dbb8a | [net: hns3: fix incorrect components info of ethtool --reset
command](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git…
| v5.16-rc3 | + +openEuler OLK-5.10使能信息 + +| COMMITID | SUBJECT | openeuler OLK-5.10 ENABLED(Y/N) | +| :----: | :----: | :----: | +| 3d489ec0f3a4 | net: hns3: add support for triggering reset by ethtool | Y | +| 238a3d250c35 | net: hns3: fix incorrect components info of ethtool --reset command | Y | + +### 特性6: 支持DSCP -### SR6: 支持DSCP - 特性介绍 -DSCP由RFC2474定义,它重新命名了IPv4报头中TOS字节和IPv6报头中数据类(TrafficClass)字节,新的名字称为DS字段(Differentiated ServicesField)。该字段的作用没有变,仍然被QoS工具用来标记数据。DSCP使用高6bit,最低2bit特不用,DSCP范围为0~63。驱动新增配置DSCP和TC的映射。 + DSCP由RFC2474定义,它重新命名了IPv4报头中TOS字节和IPv6报头中数据类(TrafficClass)字节,新的名字称为DS字段(Differentiated ServicesField)。该字段的作用没有变,仍然被QoS工具用来标记数据。DSCP使用高6bit,最低2bit特不用,DSCP范围为0~63。驱动新增配置DSCP和TC的映射。 - 内核相关配置 无 - 软件接口 -驱动下发优先级和TC映射命令给IMP时,IMP会将芯片切到priority映射TC模式。驱动下发DSCP和TC映射命令给IMP时,IMP会将芯片切到DSCP映射TC模式。当前dcb标准工具和协议栈支持配置DSCP和priority的映射,驱动新增实现配置DSCP和priority映射的接口,并在驱动中转换成DSCP和TC的映射。 -在debugfs的tm目录增加qos_dscp_map文件,用户cat此文件时将DSCP与priority、TC的映射关系打印出来(仅打印用户已配置的DSCP),以及当前TC映射的模式。 + 驱动下发优先级和TC映射命令给IMP时,IMP会将芯片切到priority映射TC模式。驱动下发DSCP和TC映射命令给IMP时,IMP会将芯片切到DSCP映射TC模式。当前dcb标准工具和协议栈支持配置DSCP和priority的映射,驱动新增实现配置DSCP和priority映射的接口,并在驱动中转换成DSCP和TC的映射。 + 在debugfs的tm目录增加qos_dscp_map文件,用户cat此文件时将DSCP与priority、TC的映射关系打印出来(仅打印用户已配置的DSCP),以及当前TC映射的模式。 - 涉及代码与使能 -| COMMITID | SUBJECT | openeuler OLK-5.10 ENABLED(Y/N) | -| :----: | :----: | :----: | -| dfea275e06c2 | net: hns3: optimize converting dscp to priority process of hns3_nic_select_queue() | Y | -| fddc02eb583a | net: hns3: debugfs add dump dscp map info | Y | -| f6e32724ca13 | net: hns3: support ndo_select_queue() | Y | -| 0ba22bcb222d | net: hns3: add support config dscp map to tc | Y | -| cfdcb075048c | net: hns3: fix get wrong value of function hclge_get_dscp_prio() | Y | -### SR7: 支持FEC统计 -- 特性介绍 -当前标准工具已有接口查询FEC统计。驱动支持查询FEC的可纠码和不可纠码的统计,支持ethtool的FEC查询接口,支持从IMP查询并更新FEC统计。 +linux 主线合入信息 -- 内核相关配置 -无 +| COMMITID | SUBJECT | TAG | +| :----: | :----: | :----: | +| dfea275e06c2 | [net: hns3: optimize converting dscp to priority process of
hns3_nic_select_queue()](https://git.kernel.org/pub/scm/linux/kernel/git/to…
| v5.18-rc7 | +| fddc02eb583a | [net: hns3: debugfs add dump dscp map
info](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/co…
| v5.18-rc7 | +| f6e32724ca13 | [net: hns3: support
ndo_select_queue()](https://git.kernel.org/pub/scm/linux/kernel/git/torvald…
| v5.18-rc7 | +| 0ba22bcb222d | [net: hns3: add support config dscp map to
tc](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/comm…
| v5.18-rc7 | +| cfdcb075048c | [net: hns3: fix get wrong value of function
hclge_get_dscp_prio()](https://git.kernel.org/pub/scm/linux/kernel/git/torv…
| v5.18-rc7 | -- 软件接口 -可通过ethtool -I --show-fec ethx查询FEC统计。FEC统计根据采用的FEC算法不同,分为Base-R和RS两种。Base-R和RS区别z在于可纠块和不可纠块的统计方式,BaseR统计为total + per lane; RS只统计total。其中total统计所有lane的和,per lan是支持的每条lane的统计 +openEuler OLK-5.10使能信息 -- 涉及代码与使能 | COMMITID | SUBJECT | openeuler OLK-5.10 ENABLED(Y/N) | | :----: | :----: | :----: | -| 2cb343b9d3e5 | net: hns3: add querying fec statistics | N | +| 3f0019a0e172 | net: hns3: optimize converting dscp to priority process of hns3_nic_select_queue() | Y | +| da7620f6b113 | net: hns3: debugfs add dump dscp map info | Y | +| 757d2e9b7454 | net: hns3: support ndo_select_queue() | Y | +| 7a1313b356de | net: hns3: add support config dscp map to tc | Y | +| fb96fb425027 | net: hns3: fix get wrong value of function hclge_get_dscp_prio() | Y | -### SR8: 支持PMU +### 特性7: 支持PMU - 特性介绍 -在分析端到端的性能瓶颈时,需要分析软件和硬件每个处理阶段的耗时。硬件在鲲鹏920B/C上为板载网卡提供了IO PMU硬件模块,NIC驱动以实现一个perf驱动的方式将该模块适配到内核的perf框架中,并提供合理的用户接口给perf用户。用户可以用IO PMU模块来收集在实际业务场景下的硬件关键点的耗时点。 +在分析端到端的性能瓶颈时,需要分析软件和硬件每个处理阶段的耗时。硬件在鲲鹏920系列处理器上为板载网卡提供了IO PMU硬件模块,NIC驱动以实现一个perf驱动的方式将该模块适配到内核的perf框架中,并提供合理的用户接口给perf用户。用户可以用IO PMU模块来收集在实际业务场景下的硬件关键点的耗时点。 - 内核相关配置 - - PMU模块涉及以下1个Config选项: - CONFIG_HNS3_PMU + +| 配置项 | 功能 | +| :---- | :---- | +| CONFIG_HNS3_PMU | 可选,IO PMU功能 | - 软件接口 功能使能需要加载模块hns3_pmu.ko。设备路径名/sys/devices/hns3_pmu_sicl_\<sicl_id> 。可通过命令进行事件查询perf stat -g -e hns3_pmu_sicl_0/config=0x00002,global=1/ -e hns3_pmu_sicl_0/config=0x10002,global=1/ -I 1000, 其中config=0xXXXXX代表查询事件。查询显示结果为两列查询事件统计信息, 一列是counter数据,主要事件有: 字节数,包个数,时钟数,中断个数; 另一列是ext_counter数据, 主要事件有: 包个数,时钟数。对数据进行统计计算可以计算出事件的检测值, 计算公式为result = counter ÷ ext_counter - 涉及代码与使能 -| COMMITID | SUBJECT | openeuler OLK-5.10 ENABLED(Y/N) | + +| COMMITID | SUBJECT | TAG | | :----: | :----: | :----: | -| aaaee7b55c9e | docs: perf: Include hns3-pmu.rst in toctree to fix 'htmldocs' WARNING | Y | -| 66637ab137b4 | drivers/perf: hisi: add driver for HNS3 PMU | Y | -| 39915b6b5fc2 | drivers/perf: hisi: Add description for HNS3 PMU driver | Y | \ No newline at end of file +| aaaee7b55c9e | [docs: perf: Include hns3-pmu.rst in toctree to fix 'htmldocs'
WARNING](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git…
| v5.18-rc7 | +| 66637ab137b4 | [drivers/perf: hisi: add driver for HNS3
PMU](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/com…
| v5.18-rc7 | +| 39915b6b5fc2 | [drivers/perf: hisi: Add description for HNS3 PMU
driver](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/…
| v5.18-rc7 | + +openEuler OLK-5.10使能信息 + +| COMMITID | SUBJECT | openeuler OLK-5.10 ENABLED(Y/N) | +| :----: | :----: | :----: | +| 494f4da5dbc1 | docs: perf: Include hns3-pmu.rst in toctree to fix 'htmldocs' WARNING | Y | +| 5766c797a02a | drivers/perf: hisi: add driver for HNS3 PMU | Y | +| 36b83702e3cc | drivers/perf: hisi: Add description for HNS3 PMU driver | Y | -- 2.30.0
1
0
0
0
高速网络系列-NIC
by openEuler conference
09 May '23
09 May '23
您好! sig-WayCa SIG 邀请您参加 2023-05-10 15:30 召开的Zoom会议 会议主题:高速网络系列-NIC 会议链接:https://us06web.zoom.us/j/81828264482?pwd=bGFLbmxrRmlaSmp3ak1OL3RLVjc4dz09
会议纪要:https://etherpad.openeuler.org/p/sig-WayCa-meetings
温馨提醒:建议接入会议后修改参会人的姓名,也可以使用您在gitee.com的ID
更多资讯尽在:https://openeuler.org/zh/
Hello! openEuler sig-WayCa SIG invites you to attend the Zoom conference will be held at 2023-05-10 15:30, The subject of the conference is 高速网络系列-NIC, You can join the meeting at
https://us06web.zoom.us/j/81828264482?pwd=bGFLbmxrRmlaSmp3ak1OL3RLVjc4dz09
. Add topics at
https://etherpad.openeuler.org/p/sig-WayCa-meetings
. Note: You are advised to change the participant name after joining the conference or use your ID at
gitee.com
. More information:
https://openeuler.org/en/
1
0
0
0
Results per page:
10
25
50
100
200