mailweb.openeuler.org
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
2024
December
November
October
September
August
July
June
May
April
March
February
January
2023
December
November
October
September
August
July
June
May
April
March
February
January
2022
December
November
October
September
List overview
Download
WayCa
May 2023
----- 2024 -----
December 2024
November 2024
October 2024
September 2024
August 2024
July 2024
June 2024
May 2024
April 2024
March 2024
February 2024
January 2024
----- 2023 -----
December 2023
November 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