From 836d9a47749aaeafdfc4d5f71cc4df43ab0480c8 Mon Sep 17 00:00:00 2001 From: Hao Zhang Date: Mon, 24 Jul 2023 17:20:46 +0800 Subject: [PATCH 1/3] Microchip smartpqi driver for SmartRAID/SmartHBA controllers Init files commit Driver download link: https://download.adaptec.com/raid/aac/linux/smartpqi_linux_drivers_v2.1.22-040.tgz Signed-off-by: Hao Zhang --- Module.supported | 1 + smartpqi-2.1.22-040.tar.bz2 | Bin 0 -> 61765 bytes smartpqi-fromsrc.conf | 1 + smartpqi-src.spec | 214 ++++++++++++++++++++++++++++++++++++ 4 files changed, 216 insertions(+) create mode 100644 Module.supported create mode 100644 smartpqi-2.1.22-040.tar.bz2 create mode 100644 smartpqi-fromsrc.conf create mode 100644 smartpqi-src.spec diff --git a/Module.supported b/Module.supported new file mode 100644 index 0000000..2bf848c --- /dev/null +++ b/Module.supported @@ -0,0 +1 @@ +smartpqi.ko external diff --git a/smartpqi-2.1.22-040.tar.bz2 b/smartpqi-2.1.22-040.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..e1de81a0481a55f35750cfc03c159a0aea67fe0c GIT binary patch literal 61765 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 z‎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∨*TwGe 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 Oi@744C`f+mo6dkSxre?0 literal 0 HcmV?d00001 diff --git a/smartpqi-fromsrc.conf b/smartpqi-fromsrc.conf new file mode 100644 index 0000000..e786baf --- /dev/null +++ b/smartpqi-fromsrc.conf @@ -0,0 +1 @@ +add_drivers+=" smartpqi " diff --git a/smartpqi-src.spec b/smartpqi-src.spec new file mode 100644 index 0000000..7c07385 --- /dev/null +++ b/smartpqi-src.spec @@ -0,0 +1,214 @@ +%define name smartpqi +%define version 2.1.22 +%define release 040 +%define kernel `uname -r` +Summary: Microchip smartpqi driver for SmartRAID/SmartHBA controllers +Name: %{name} +Version: %{version} +Release: %{release} +Vendor: Microchip Technology Inc. +License: GPLv2 +Group: System Environment/Kernel +Source0: %{name}-%{version}-%{release}.tar.bz2 +Source1: Module.supported +Source2: %{name}-fromsrc.conf +URL: http://www.microchip.com +Distribution: Microchip Technology Inc. +BuildRoot: /var/tmp/%{name}-buildroot + +%define debug_package %{nil} + +%description +Driver for Microchip Technology SmartRAID and SmartHBA controllers + +# prep ######################################################################### +%prep +echo prep %{version}-%{release} +%setup -c -b 0 +cp %_sourcedir/Module.supported src/Module.supported + + +# build ######################################################################## +%build +echo build %{version}-%{release} +make build KERNEL=%{kernel}; + +# install ###################################################################### +%install +echo install %{version}-%{release} +echo "%defattr(-,root,root)" > $RPM_BUILD_DIR/file.list.%{name} + +SMARTPQI_IPATH=/lib/modules/%{kernel}/weak-updates/smartpqi + +if modinfo smartpqi -n |xargs file |grep -c "compressed" >> /dev/null; then + driver_bin="smartpqi.ko.xz" +elif [ $(find /lib/modules/%{kernel}/ -name smartpqi.ko.xz*) ]; then + driver_bin="smartpqi.ko.xz" +else + driver_bin="smartpqi.ko" +fi + +mkdir -p $RPM_BUILD_ROOT/lib/modules/%{kernel}/weak-updates/smartpqi + +# create the file list used in %files to indicate which files are in package +echo "$SMARTPQI_IPATH/${driver_bin}.new" >> $RPM_BUILD_DIR/file.list.%{name} +echo "/etc/dracut.conf.d/smartpqi-fromsrc.conf" >> $RPM_BUILD_DIR/file.list.%{name} + +make install PREFIX=$RPM_BUILD_ROOT KERNEL=%{kernel} +if [ ${driver_bin} == "smartpqi.ko.xz" ]; then + xz $RPM_BUILD_ROOT/$SMARTPQI_IPATH/smartpqi.ko +fi +mv -f $RPM_BUILD_ROOT/$SMARTPQI_IPATH/${driver_bin} \ + $RPM_BUILD_ROOT/$SMARTPQI_IPATH/${driver_bin}.new +install -m 644 -D %{SOURCE2} $RPM_BUILD_ROOT/etc/dracut.conf.d/smartpqi-fromsrc.conf + +# pre ######################################################################### +%pre +echo pre %{version}-%{release} +system_arch=`uname -m` +if [ %{_target_cpu} != ${system_arch} ]; then + echo "ERROR: Failed installing this rpm!!!!" + echo "This rpm is intended for %{_target_cpu} platform. It seems your system is ${system_arch}."; + exit 1; +fi; + +# post ######################################################################### +%post +echo post %{version}-%{release} + +if modinfo smartpqi -n |xargs file |grep -c "compressed" >> /dev/null; then + driver_bin="smartpqi.ko.xz" +elif [ $(find /lib/modules/%{kernel}/ -name smartpqi.ko.xz*) ]; then + driver_bin="smartpqi.ko.xz" +else + driver_bin="smartpqi.ko" +fi + +if [ ! -e /boot/vmlinuz-%{kernel} ] && [ ! -e /boot/vmlinux-%{kernel} ]; then + continue; +fi; + +SMARTPQI_IPATH=/lib/modules/%{kernel}/weak-updates/smartpqi +if [ ! -e $SMARTPQI_IPATH/${driver_bin}.new ]; then + continue; +fi; + +SMARTPQI_ORIG_IPATH=/lib/modules/%{kernel}/kernel/drivers/scsi/smartpqi +echo "The smartpqi driver for kernel %{kernel} is now version %{version}-%{release}"; +cp -f $SMARTPQI_IPATH/${driver_bin}.new $SMARTPQI_IPATH/${driver_bin} + +# Remake the initrd image +SMARTPQI_IPATH=/lib/modules/%{kernel}/kernel/drivers/scsi/smartpqi +if [ -e $SMARTPQI_IPATH/${driver_bin} ]; then + mv $SMARTPQI_IPATH/${driver_bin} \ + $SMARTPQI_IPATH/${driver_bin}.orig +fi; + +SMARTPQI_IPATH=/lib/modules/%{kernel}/updates +if [ -e $SMARTPQI_IPATH/${driver_bin} ]; then + mv $SMARTPQI_IPATH/${driver_bin} \ + $SMARTPQI_IPATH/${driver_bin}.orig +fi; + +SMARTPQI_IPATH=/lib/modules/%{kernel}/extra/smartpqi +if [ -e $SMARTPQI_IPATH/${driver_bin} ]; then + mv $SMARTPQI_IPATH/${driver_bin} \ + $SMARTPQI_IPATH/${driver_bin}.orig +fi; + +bootpart=/boot; +depmod -v %{kernel} > /dev/null 2>&1; + + + +if which mkinitrd |grep -c "mkinitrd" >> /dev/null; then + if which mkinitrd |grep -c "no mkinitrd" >> /dev/null ; then + module_init_tool="unknown" + else + module_init_tool="mkinitrd" + #SuSE + if [ -h /boot/initrd ] ; then + mkinitrd -f /boot/initrd-%{kernel} %{kernel} + else + mkinitrd -f /boot/initramfs-%{kernel}.img %{kernel} + fi + echo -e "${module_init_tool} post Install Done." + exit 0; + fi +fi + +echo -e "post Install Done." + +# postun ####################################################################### +%postun +echo postun %{version}-%{release} + +if modinfo smartpqi -n |xargs file |grep -c "compressed" >> /dev/null; then + driver_bin="smartpqi.ko.xz" +elif [ $(find /lib/modules/%{kernel}/ -name smartpqi.ko.xz*) ]; then + driver_bin="smartpqi.ko.xz" +else + driver_bin="smartpqi.ko" +fi + +SMARTPQI_IPATH=/lib/modules/%{kernel}/weak-updates/smartpqi +if [ ! -e $SMARTPQI_IPATH/${driver_bin}.new ] && \ + [ -e $SMARTPQI_IPATH/${driver_bin} ]; then + + rm -rf $SMARTPQI_IPATH; + + SMARTPQI_IPATH=/lib/modules/%{kernel}/kernel/drivers/scsi/smartpqi + if [ -e $SMARTPQI_IPATH/${driver_bin}.orig ]; then + mv $SMARTPQI_IPATH/${driver_bin}.orig \ + $SMARTPQI_IPATH/${driver_bin} + fi; + + SMARTPQI_IPATH=/lib/modules/%{kernel}/updates + if [ -e $SMARTPQI_IPATH/${driver_bin}.orig ]; then + mv $SMARTPQI_IPATH/${driver_bin}.orig \ + $SMARTPQI_IPATH/${driver_bin} + fi; + + SMARTPQI_IPATH=/lib/modules/%{kernel}/extra/smartpqi + if [ -e $SMARTPQI_IPATH/${driver_bin}.orig ]; then + mv $SMARTPQI_IPATH/${driver_bin}.orig \ + $SMARTPQI_IPATH/${driver_bin} + fi; +fi; + +bootpart=/boot; + +if [ ! -f /lib/modules/%{kernel}/kernel/drivers/scsi/smartpqi/${driver_bin} ] && \ + [ ! -f /lib/modules/%{kernel}/udpates/${driver_bin} ] && \ + [ ! -f /lib/modules/%{kernel}/weak-updates/smartpqi/${driver_bin} ] && \ + [ ! -f /lib/modules/%{kernel}/extra/smartpqi/${driver_bin} ]; then + sed -e '/smartpqi/d' /etc/modprobe.conf > modprobe.edit; + mv -f modprobe.edit /etc/modprobe.conf; +fi; + +depmod -v %{kernel} > /dev/null 2>&1; + + +if which mkinitrd |grep -c "mkinitrd" >> /dev/null; then + if which mkinitrd |grep -c "no mkinitrd" >> /dev/null ; then + module_init_tool="unknown" + else + module_init_tool="mkinitrd" + #SuSE + if [ -h /boot/initrd ] ; then + mkinitrd -f /boot/initrd-%{kernel} %{kernel} + else + mkinitrd -f /boot/initramfs-%{kernel}.img %{kernel} + fi + echo -e "${module_init_tool} Uninstall Done." + exit 0; + fi +fi + +echo -e "Uninstall Done." + +# files ######################################################################## +%files -f ../file.list.%{name} + +# changelog ################################################################### +%changelog -- Gitee From 6a33c024b5ef6a00f14b2a925bf246919f3da97e Mon Sep 17 00:00:00 2001 From: Hao Zhang Date: Thu, 27 Jul 2023 14:26:37 +0800 Subject: [PATCH 2/3] Microchip smartpqi driver 2.1.22-040 update patch This patch is used to support OpenEuler-2203 version. Signed-off-by: Hao Zhang --- ...driver-build-for-OpenEuler-2203-vers.patch | 30 +++++++++++++++++++ smartpqi-src.spec | 3 ++ 2 files changed, 33 insertions(+) create mode 100644 0001-Support-PMC8222-driver-build-for-OpenEuler-2203-vers.patch diff --git a/0001-Support-PMC8222-driver-build-for-OpenEuler-2203-vers.patch b/0001-Support-PMC8222-driver-build-for-OpenEuler-2203-vers.patch new file mode 100644 index 0000000..91b94d7 --- /dev/null +++ b/0001-Support-PMC8222-driver-build-for-OpenEuler-2203-vers.patch @@ -0,0 +1,30 @@ +From aecfa96b98be1bdc9562cf912c7497dd241cd9b8 Mon Sep 17 00:00:00 2001 +From: Hao Zhang +Date: Mon, 24 Jul 2023 15:58:03 +0800 +Subject: [PATCH] Support PMC8222 driver build for OpenEuler-2203 version. + +This patch is referred from src/Makefile.alt. + +Signed-off-by: Hao Zhang +--- + Makefile | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/Makefile b/Makefile +index 8e7196c..3c4cadb 100644 +--- a/Makefile ++++ b/Makefile +@@ -103,6 +103,10 @@ OSVENDOR := $(shell \ + $(KVER_SHORT) = "4.19" ]; \ + then \ + echo "OEULER2003"; \ ++ elif [ -n "`grep 'release 22.03' /etc/openEuler-release`" -a \ ++ $(KVER_SHORT) = "5.10" ]; \ ++ then \ ++ echo "OEULER2203"; \ + fi; \ + elif [ -f /etc/os-release ]; \ + then \ +-- +2.33.0 + diff --git a/smartpqi-src.spec b/smartpqi-src.spec index 7c07385..dc1bf86 100644 --- a/smartpqi-src.spec +++ b/smartpqi-src.spec @@ -18,6 +18,8 @@ BuildRoot: /var/tmp/%{name}-buildroot %define debug_package %{nil} +Patch0: 0001-Support-PMC8222-driver-build-for-OpenEuler-2203-vers.patch + %description Driver for Microchip Technology SmartRAID and SmartHBA controllers @@ -25,6 +27,7 @@ Driver for Microchip Technology SmartRAID and SmartHBA controllers %prep echo prep %{version}-%{release} %setup -c -b 0 +%patch0 -p1 -b 0001-Support-PMC8222-driver-build-for-OpenEuler-2203-vers.patch cp %_sourcedir/Module.supported src/Module.supported -- Gitee From d7f4494885d90b11a170f604ec01fd1901196865 Mon Sep 17 00:00:00 2001 From: Siyu Zhang Date: Thu, 27 Jul 2023 16:12:52 +0800 Subject: [PATCH 3/3] Modify the spec file Rename the spec file since the ci_check request it is same with the git repo. Add changelog. The mkdinitrd is not used in many new project. Add dracut to support updating the initramfs. Signed-off-by: Siyu Zhang --- ...i-src.spec => SmartHBA-2100-8i-driver.spec | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) rename smartpqi-src.spec => SmartHBA-2100-8i-driver.spec (91%) diff --git a/smartpqi-src.spec b/SmartHBA-2100-8i-driver.spec similarity index 91% rename from smartpqi-src.spec rename to SmartHBA-2100-8i-driver.spec index dc1bf86..19b53a6 100644 --- a/smartpqi-src.spec +++ b/SmartHBA-2100-8i-driver.spec @@ -9,12 +9,14 @@ Release: %{release} Vendor: Microchip Technology Inc. License: GPLv2 Group: System Environment/Kernel -Source0: %{name}-%{version}-%{release}.tar.bz2 +# Source0: %{name}-%{version}-%{release}.tar.bz2 +Source0: smartpqi-2.1.22-040.tar.bz2 Source1: Module.supported Source2: %{name}-fromsrc.conf URL: http://www.microchip.com Distribution: Microchip Technology Inc. BuildRoot: /var/tmp/%{name}-buildroot +BuildRequires: gcc make kernel-devel kernel-headers %define debug_package %{nil} @@ -63,6 +65,7 @@ if [ ${driver_bin} == "smartpqi.ko.xz" ]; then fi mv -f $RPM_BUILD_ROOT/$SMARTPQI_IPATH/${driver_bin} \ $RPM_BUILD_ROOT/$SMARTPQI_IPATH/${driver_bin}.new +chmod 644 $RPM_BUILD_ROOT/$SMARTPQI_IPATH/${driver_bin}.new install -m 644 -D %{SOURCE2} $RPM_BUILD_ROOT/etc/dracut.conf.d/smartpqi-fromsrc.conf # pre ######################################################################### @@ -139,7 +142,12 @@ if which mkinitrd |grep -c "mkinitrd" >> /dev/null; then exit 0; fi fi - + +if which dracut |grep -c "dracut" >> /dev/null; then + dracut -f /boot/initramfs-%{kernel}.img %{kernel}; + echo -e "Install Driver InitramFS Updated."; +fi; + echo -e "post Install Done." # postun ####################################################################### @@ -206,7 +214,12 @@ if which mkinitrd |grep -c "mkinitrd" >> /dev/null; then echo -e "${module_init_tool} Uninstall Done." exit 0; fi -fi +fi; + +if which dracut |grep -c "dracut" >> /dev/null; then + dracut -f /boot/initramfs-%{kernel}.img %{kernel}; + echo -e "Uninstall Driver InitramFS Updated."; +fi; echo -e "Uninstall Done." @@ -215,3 +228,5 @@ echo -e "Uninstall Done." # changelog ################################################################### %changelog +* Thu Jul 27 2023 Siyu Zhang - 2.1.22-040 +- Port the PMC RAID driver to openeuler. -- Gitee