From a07e07d1e0ff9f166f4fee1f8c96a669b4ae663a Mon Sep 17 00:00:00 2001 From: XiaosuLi Date: Mon, 10 Oct 2022 12:05:42 +0800 Subject: [PATCH] release qla2xxx driver (cherry picked from commit 348439a5cdaad7d0b4513f6fa9e72a7d8c72d741) --- 99-qla2xxx.rules | 6 + README.en.md | 45 ++-- README.md | 41 ++-- dracut.qla2xxx.conf | 1 + kmodtool-nvme.8.x.sh | 327 +++++++++++++++++++++++++++ qla2xxx-src-v10.02.08.00.a7-k.tar.gz | Bin 0 -> 613366 bytes qla2xxx.spec | 125 ++++++++++ qla2xxx.yaml | 4 + qla2xxx_udev.sh | 57 +++++ 9 files changed, 556 insertions(+), 50 deletions(-) create mode 100644 99-qla2xxx.rules create mode 100644 dracut.qla2xxx.conf create mode 100644 kmodtool-nvme.8.x.sh create mode 100644 qla2xxx-src-v10.02.08.00.a7-k.tar.gz create mode 100644 qla2xxx.spec create mode 100644 qla2xxx.yaml create mode 100644 qla2xxx_udev.sh diff --git a/99-qla2xxx.rules b/99-qla2xxx.rules new file mode 100644 index 0000000..ffc1748 --- /dev/null +++ b/99-qla2xxx.rules @@ -0,0 +1,6 @@ +# +# RULES FILE: located in /etc/udev/rules.d/ +# + +# qla2xxx driver +SUBSYSTEM=="pci", ENV{DRIVER}=="qla2xxx", ACTION=="change", RUN+="/lib/udev/qla2xxx_udev.sh" diff --git a/README.en.md b/README.en.md index 7f3a12b..6e1362e 100644 --- a/README.en.md +++ b/README.en.md @@ -1,36 +1,31 @@ -# qla2xxx +# marvelldriver -#### Description -provide Marvell QLogic FC HBA adapter qla2xxx driver for openEuler LTS version. +## Introduction +provide Marvell QLogic FC HBA adapter driver for openEuler LTS version. -#### Software Architecture -Software architecture description +## Driver info +QLogic driver package for openEuler system. -#### Installation +FC HBA driver is from [Marvell/QLogic webisite](https://www.marvell.com/support/downloads.html) -1. xxxx -2. xxxx -3. xxxx -#### Instructions -1. xxxx -2. xxxx -3. xxxx -#### Contribution +### FC HBA driver +> qla2xxx-x.y.z. -1. Fork the repository -2. Create Feat_xxx branch -3. Commit your code -4. Create Pull Request -#### Gitee Feature -1. You can use Readme\_XXX.md to support different languages, such as Readme\_en.md, Readme\_zh.md -2. Gitee blog [blog.gitee.com](https://blog.gitee.com) -3. Explore open source project [https://gitee.com/explore](https://gitee.com/explore) -4. The most valuable open source project [GVP](https://gitee.com/gvp) -5. The manual of Gitee [https://gitee.com/help](https://gitee.com/help) -6. The most popular members [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) + + + +## Installation + +### QLogic FC HBA driver + +1. This repository is for building qla2xxx KMOD RPM package. +2. this qla2xxx driver supports openEuler 20.03 LTS SP3 and openEuler 22.03 LTS version. +3. this qla2xxx driver supports ARM64 and X64 platform. +4. this qla2xxx driver supports Kunpeng and Phytium CPU platform. + diff --git a/README.md b/README.md index b632311..38def86 100644 --- a/README.md +++ b/README.md @@ -1,37 +1,28 @@ -# qla2xxx +# marvelldriver -#### 介绍 -provide Marvell QLogic FC HBA adapter qla2xxx driver for openEuler LTS version. +## 介绍 +provide Marvell QLogic FC HBA adapter driver for openEuler LTS version. -#### 软件架构 -软件架构说明 +Ethernet NIC driver and SAS/SATA driver will provide in other repository. +## 软件架构 +QLogic driver package for openEuler system. -#### 安装教程 +FC HBA driver is from [Marvell/QLogic webisite](https://www.marvell.com/support/downloads.html) -1. xxxx -2. xxxx -3. xxxx -#### 使用说明 -1. xxxx -2. xxxx -3. xxxx +### FC HBA driver +> qla2xxx-x.y.z -#### 参与贡献 -1. Fork 本仓库 -2. 新建 Feat_xxx 分支 -3. 提交代码 -4. 新建 Pull Request -#### 特技 +## 安装教程 -1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md -2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) -3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 -4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 -5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) -6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) +### QLogic FC HBA driver + +1. 本仓库用于生成openEuler 版本的KMOD 驱动RPM 安装包。 +2. 支持 openEuler 20.03 LTS SP3 及 openEuler 22.03 LTS 版本。 +3. 支持 ARM64 及 X64 平台。 +4. 支持国产CPU。 \ No newline at end of file diff --git a/dracut.qla2xxx.conf b/dracut.qla2xxx.conf new file mode 100644 index 0000000..1597942 --- /dev/null +++ b/dracut.qla2xxx.conf @@ -0,0 +1 @@ +add_drivers+=" tcm_qla2xxx qla2xxx " diff --git a/kmodtool-nvme.8.x.sh b/kmodtool-nvme.8.x.sh new file mode 100644 index 0000000..82da8c0 --- /dev/null +++ b/kmodtool-nvme.8.x.sh @@ -0,0 +1,327 @@ +#!/bin/bash + +# kmodtool - Helper script for building kernel module RPMs +# An original version appeared in Fedora. This version is +# generally called only by the %kernel_module_package RPM macro +# during the process of building Driver Update Packages (which +# are also known as "kmods" in the Fedora community). +# +# Copyright (c) 2003-2010 Ville Skyttä , +# Thorsten Leemhuis +# Jon Masters +# Copyright (c) 2012-2013 Jiri Benc +# +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to +# permit persons to whom the Software is furnished to do so, subject to +# the following conditions: +# +# The above copyright notice and this permission notice shall be +# included in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +# Changelog: +# +# 2010/07/28 - Add fixes for filelists in line with LF standard +# - Remove now defunct "framepointer" kernel variant +# - Change version to "rhel6-rh2" as a consequence. +# +# 2010/01/10 - Simplified for RHEL6. We are working on upstream +# moving to a newer format and in any case do not +# need to retain support for really old systems. + +shopt -s extglob + +myprog="kmodtool" +myver="0.10.10_kmp2" +knownvariants=@(debug|kdump) +kmod_name= +kver= +verrel= +variant= + +get_kernel_release () +{ + if [[ -z $1 ]]; then + uname -r + return + fi + local arch=$(arch) + local verrel=${1%.$arch} + local verprefix=${verrel%.*} + local versuffix=${verrel#$verprefix} + verrel=$(ls -Ud /usr/src/kernels/$verprefix*$versuffix.$arch | sort -V | tail -n 1) + verrel=${verrel##*/} + [[ -z $verrel ]] && verrel=$1.$arch + echo "$verrel" +} + +get_verrel () +{ + verrel=$(get_kernel_release "$1") + verrel=${verrel/%.$knownvariants/} +} + +print_verrel () +{ + get_verrel $@ + echo "${verrel}" +} + +get_verrel_for_deps () +{ + verrel_dep=${1:-$(uname -r)} + verrel_dep=${verrel_dep/%.$knownvariants/} +} + +get_variant () +{ + get_verrel $@ + variant=$(get_kernel_release "$1") + variant=${variant/#$verrel?(.)/} + variant=${variant:-'""'} +} + +print_variant () +{ + get_variant $@ + echo "${variant}" +} + +get_filelist() { + local IFS=$'\n' + filelist=($(cat)) + + if [ ${#filelist[@]} -gt 0 ]; + then + for ((n = 0; n < ${#filelist[@]}; n++)); + do + line="${filelist[n]}" + line=$(echo "$line" \ + | sed -e "s/%verrel/$verrel/g" \ + | sed -e "s/%variant/$variant/g" \ + | sed -e "s/%dashvariant/$dashvariant/g" \ + | sed -e "s/%dotvariant/$dotvariant/g" \ + | sed -e "s/\.%1/$dotvariant/g" \ + | sed -e "s/\-%1/$dotvariant/g" \ + | sed -e "s/%2/$verrel/g") + echo "$line" + done + else + echo "%defattr(644,root,root,755)" + echo "/lib/modules/${verrel}${dotvariant}" + fi +} + + +get_rpmtemplate () +{ + local variant="${1}" + local dashvariant="${variant:+-${variant}}" + local dotvariant="${variant:+.${variant}}" + + echo "%package -n kmod-${kmod_name}${dashvariant}" + + if [ -z "$kmod_provides_summary" ]; then + echo "Summary: ${kmod_name} kernel module(s)" + fi + + if [ -z "$kmod_provides_group" ]; then + echo "Group: System Environment/Kernel" + fi + + if [ ! -z "$kmod_version" ]; then + echo "Version: %{kmod_version}" + fi + + if [ ! -z "$kmod_release" ]; then + echo "Release: %{kmod_release}" + fi + + # Turn of the internal dep generator so we will use the kmod scripts. + echo "%global _use_internal_dependency_generator 0" + + cat <= ${verrel_dep}${dotvariant} +Provides: ${kmod_name}-kmod = %{?epoch:%{epoch}:}%{version}-%{release} +Requires(post): /usr/sbin/depmod +Requires(postun): /usr/sbin/depmod +Obsoletes: kmod-hpqlgc-%{driver_name} +Obsoletes: kmod-%{driver_name} +Conflicts: kmod-hpqlgc-%{driver_name} +EOF + + if [ "yes" != "$nobuildreqs" ] + then + echo "BuildRequires: kernel${dashvariant}-devel" + fi + + if [ "" != "$override_preamble" ] + then + cat "$override_preamble" + fi + +cat < /dev/null || : +fi + +modules=( \$(find /lib/modules/${verrel}${dotvariant}/extra/${kmod_name} | grep '\.ko$') ) +if [ -x "/sbin/weak-modules" ]; then + printf '%s\n' "\${modules[@]}" \ + | /sbin/weak-modules --add-modules +fi + +if [ ! -e /boot/initramfs-`uname -r`.img.ql.bkup ]; then + cp -p /boot/initramfs-`uname -r`.img /boot/initramfs-`uname -r`.img.ql.bkup +fi + +dracut -f + +EOF + +cat < /var/run/rpm-kmod-${kmod_name}${dashvariant}-modules +EOF + +cat < /dev/null || : +fi + +modules=( \$(cat /var/run/rpm-kmod-${kmod_name}${dashvariant}-modules) ) +rm /var/run/rpm-kmod-${kmod_name}${dashvariant}-modules +if [ -x "/sbin/weak-modules" ]; then + printf '%s\n' "\${modules[@]}" \ + | /sbin/weak-modules --remove-modules +fi +EOF + +echo "%files -n kmod-${kmod_name}${dashvariant}" + +if [ "" == "$override_filelist" ]; +then + echo "%defattr(644,root,root,755)" + echo "/lib/modules/${verrel}${dotvariant}" + echo "%config /etc/depmod.d/${kmod_module}.conf" + echo "/etc/dracut.conf.d/qla2xxx.conf" + echo "/etc/depmod.d/qla2xxx.conf" +else + cat "$override_filelist" | get_filelist +fi +} + +print_rpmtemplate () +{ + kmod_name="${1}" + kmod_module=`echo $kmod_name | cut -d"-" -f2` + shift + kver="${1}" + get_verrel "${1}" + get_verrel_for_deps "${1}" + [[ -z $kver ]] && kver=$verrel + shift + if [ -z "${kmod_name}" ] ; then + echo "Please provide the kmodule-name as first parameter." >&2 + exit 2 + elif [ -z "${kver}" ] ; then + echo "Please provide the kver as second parameter." >&2 + exit 2 + elif [ -z "${verrel}" ] ; then + echo "Couldn't find out the verrel." >&2 + exit 2 + fi + + for variant in "$@" ; do + if [ "default" == "$variant" ]; + then + get_rpmtemplate "" + else + get_rpmtemplate "${variant}" + fi + done +} + +usage () +{ + cat <