Created attachment 1076 [details] 编译报错信息 在迈络思官网下载的24.01驱动,在5.10内核上编译时,mlnx-nvme驱动报错。 错误 如附件。
原因为我们回合的是老版本的 uring_cmd_iopoll(),社区后来有修改: https://lore.kernel.org/io-uring/20220903165234.210547-1-axboe@kernel.dk/
(In reply to josephqi from comment #1) > 原因为我们回合的是老版本的 uring_cmd_iopoll(),社区后来有修改: > https://lore.kernel.org/io-uring/20220903165234.210547-1-axboe@kernel.dk/ 该系列补丁还依赖 bio based polling: https://lore.kernel.org/linux-block/20211012111226.760968-1-hch@lst.de/
研究了一下mellanox驱动包里面的nvme驱动代码,他里面就是用宏隔离让他这一套代码可以在多个内核版本上构建,没有见到有其他的自己的修改。 有两个方法: 1、把mellanox-nvme里面的nvme_ns_chr_uring_cmd_iopoll定义和声明改成我们当前anck-5.10内核里面的。 2、去掉mellanox包里面的nvme驱动,使用内核intree的nvme驱动,这样一方面如果出问题的话,我们社区能够支撑,当前主要是我们这边在维护nvme驱动;另一方面是它在我们已经发布的5.10的版本上也能编译。
构建mlnx-ofa_kernel包的时候不会编译nvme里面的core文件,只会构建rdma.c文件,就没有报错,好像单独构建mlnx-nvme的时候就会构建整个nvme驱动就会构建core文件,导致构建不过了。 没有看到他那个config.h的头文件是咋个生成的,生成config.h里面确实会打开HAVE_FILE_OPERATIONS_URING_CMD_IOPOLL和HAVE_IO_URING_CMD_COOKIE,导致uring那里编译不过。
(In reply to josephqi from comment #2) > (In reply to josephqi from comment #1) > > 原因为我们回合的是老版本的 uring_cmd_iopoll(),社区后来有修改: > > https://lore.kernel.org/io-uring/20220903165234.210547-1-axboe@kernel.dk/ > > 该系列补丁还依赖 bio based polling: > https://lore.kernel.org/linux-block/20211012111226.760968-1-hch@lst.de/ 依赖 Batched completions 系列补丁: https://lore.kernel.org/all/20211017020623.77815-1-axboe@kernel.dk/
The PR Link: https://gitee.com/anolis/cloud-kernel/pulls/3176
daichx 反馈还依赖 blk_execute_rq_nowait() 的修改,初步梳理了下,这关系到 gendisk 的大量重构,至少涉及如下几个系列补丁: https://lore.kernel.org/linux-block/20210521055116.1053587-1-hch@lst.de/ https://lore.kernel.org/linux-block/20210602065345.355274-1-hch@lst.de/ https://lore.kernel.org/linux-block/20210816131910.615153-1-hch@lst.de/
6.8 将 uring_cmd 独立出头文件了: https://github.com/torvalds/linux/commit/b66509b8497f2b002a2654e386a440f1274ddcc7 mlnx-nvme-24.04 为了适配这个修改,新增了宏 HAVE_IO_URING_CMD_H,因此 mlnx-nvme-24.04 可以在 ANCK 5.10 构建通过。
(In reply to josephqi from comment #7) > daichx 反馈还依赖 blk_execute_rq_nowait() 的修改,初步梳理了下,这关系到 gendisk > 的大量重构,至少涉及如下几个系列补丁: > https://lore.kernel.org/linux-block/20210521055116.1053587-1-hch@lst.de/ > https://lore.kernel.org/linux-block/20210602065345.355274-1-hch@lst.de/ > https://lore.kernel.org/linux-block/20210816131910.615153-1-hch@lst.de/ gendisk 重构还依赖这个系列: https://lore.kernel.org/linux-block/20201128161510.347752-1-hch@lst.de/
根据与浪潮的例会结论,先按照使用 mlnx-nvme-24.04 新版本来推进。
https://gitee.com/anolis/kmod-mellanox 通过 disable HAVE_IO_URING_CMD 可以构建成功