add iavf package
This commit is contained in:
parent
ac6611c3d9
commit
4d75a3685a
36
fix-build-error-with-Linux-5.10.patch
Normal file
36
fix-build-error-with-Linux-5.10.patch
Normal file
@ -0,0 +1,36 @@
|
||||
From f72271e2a0ae4277d53c4053f5eed8bb346ba38a Mon Sep 17 00:00:00 2001
|
||||
From: Brian King <brking@linux.vnet.ibm.com>
|
||||
Date: Fri, 17 Nov 2017 11:05:49 -0600
|
||||
Subject: i40evf: Use smp_rmb rather than read_barrier_depends
|
||||
|
||||
The original issue being fixed in this patch was seen with the ixgbe
|
||||
driver, but the same issue exists with i40evf as well, as the code is
|
||||
very similar. read_barrier_depends is not sufficient to ensure
|
||||
loads following it are not speculatively loaded out of order
|
||||
by the CPU, which can result in stale data being loaded, causing
|
||||
potential system crashes.
|
||||
|
||||
Cc: stable <stable@vger.kernel.org>
|
||||
Signed-off-by: Brian King <brking@linux.vnet.ibm.com>
|
||||
Acked-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
|
||||
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
|
||||
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
|
||||
---
|
||||
drivers/net/ethernet/intel/i40evf/i40e_txrx.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/iavf_txrx.c b/src/iavf_txrx.c
|
||||
index fe817e2b6fef4..50864f99446d3 100644
|
||||
--- a/src/iavf_txrx.c
|
||||
+++ b/src/iavf_txrx.c
|
||||
@@ -289,7 +289,7 @@
|
||||
break;
|
||||
|
||||
/* prevent any other reads prior to eop_desc */
|
||||
- read_barrier_depends();
|
||||
+ smp_rmb();
|
||||
|
||||
iavf_trace(clean_tx_irq, tx_ring, tx_desc, tx_buf);
|
||||
/* if the descriptor isn't done, no work yet to do */
|
||||
--
|
||||
cgit 1.2.3-1.el7
|
||||
BIN
iavf-4.0.1.tar.gz
Normal file
BIN
iavf-4.0.1.tar.gz
Normal file
Binary file not shown.
389
iavf.spec
Normal file
389
iavf.spec
Normal file
@ -0,0 +1,389 @@
|
||||
%global debug_package %{nil}
|
||||
# macros for finding system files to update at install time (pci.ids, pcitable)
|
||||
%define find() %(for f in %*; do if [ -e $f ]; then echo $f; break; fi; done)
|
||||
%define _pciids /usr/share/pci.ids /usr/share/hwdata/pci.ids
|
||||
%define _pcitable /usr/share/kudzu/pcitable /usr/share/hwdata/pcitable /dev/null
|
||||
%define pciids %find %{_pciids}
|
||||
%define pcitable %find %{_pcitable}
|
||||
|
||||
Name: iavf
|
||||
Summary: Intel(R) Ethernet Adaptive Virtual Function Driver
|
||||
Version: 4.0.1
|
||||
Release: 1
|
||||
Vendor: Intel Corporation
|
||||
License: GPL-2.0
|
||||
URL: http://support.intel.com
|
||||
Source0: https://downloadcenter.intel.com/download/24693/Intel-Network-Adapter-Virtual-Function-Driver-for-Intel-40-Gigabit-Ethernet-Network-Connections/%{name}-%{version}.tar.gz
|
||||
|
||||
Requires: kernel, findutils, gawk, bash
|
||||
|
||||
BuildRequires: kernel-devel
|
||||
|
||||
Patch0: fix-build-error-with-Linux-5.10.patch
|
||||
|
||||
%description
|
||||
This package contains the Intel(R) Ethernet Adaptive Virtual Function Driver.
|
||||
|
||||
%prep
|
||||
%setup
|
||||
%patch0 -p1
|
||||
|
||||
%build
|
||||
make -C src clean
|
||||
make -C src
|
||||
|
||||
%install
|
||||
make -C src INSTALL_MOD_PATH=%{buildroot} MANDIR=%{_mandir} modules_install mandocs_install
|
||||
# Remove modules files that we do not want to include
|
||||
find %{buildroot}/lib/modules/ -name 'modules.*' -exec rm -f {} \;
|
||||
cd %{buildroot}
|
||||
find lib -name "iavf.ko" \
|
||||
-fprintf %{_builddir}/%{name}-%{version}/file.list "/%p\n"
|
||||
|
||||
|
||||
%clean
|
||||
rm -rf %{buildroot}
|
||||
|
||||
%files -f file.list
|
||||
%defattr(-,root,root)
|
||||
%doc README file.list pci.updates
|
||||
%license COPYING
|
||||
%{_sysconfdir}/modprobe.d/iavf.conf
|
||||
%{_mandir}/man7/iavf.7.gz
|
||||
|
||||
%post
|
||||
if [ -d /usr/local/share/%{name} ]; then
|
||||
rm -rf /usr/local/share/%{name}
|
||||
fi
|
||||
mkdir /usr/local/share/%{name}
|
||||
cp --parents %{pciids} /usr/local/share/%{name}/
|
||||
echo "original pci.ids saved in /usr/local/share/%{name}";
|
||||
if [ "%{pcitable}" != "/dev/null" ]; then
|
||||
cp --parents %{pcitable} /usr/local/share/%{name}/
|
||||
echo "original pcitable saved in /usr/local/share/%{name}";
|
||||
fi
|
||||
|
||||
LD="%{_docdir}/%{name}";
|
||||
if [ -d %{_docdir}/%{name}-%{version} ]; then
|
||||
LD="%{_docdir}/%{name}-%{version}";
|
||||
fi
|
||||
|
||||
#Yes, this really needs bash
|
||||
bash -s %{pciids} \
|
||||
%{pcitable} \
|
||||
$LD/pci.updates \
|
||||
$LD/pci.ids.new \
|
||||
$LD/pcitable.new \
|
||||
%{name} \
|
||||
<<"END"
|
||||
#! /bin/bash
|
||||
# Copyright (C) 2017 Intel Corporation
|
||||
# For licensing information, see the file 'LICENSE' in the root folder
|
||||
# $1 = system pci.ids file to update
|
||||
# $2 = system pcitable file to update
|
||||
# $3 = file with new entries in pci.ids file format
|
||||
# $4 = pci.ids output file
|
||||
# $5 = pcitable output file
|
||||
# $6 = driver name for use in pcitable file
|
||||
|
||||
exec 3<$1
|
||||
exec 4<$2
|
||||
exec 5<$3
|
||||
exec 6>$4
|
||||
exec 7>$5
|
||||
driver=$6
|
||||
IFS=
|
||||
|
||||
# pattern matching strings
|
||||
ID="[[:xdigit:]][[:xdigit:]][[:xdigit:]][[:xdigit:]]"
|
||||
VEN="${ID}*"
|
||||
DEV=" ${ID}*"
|
||||
SUB=" ${ID}*"
|
||||
TABLE_DEV="0x${ID} 0x${ID} \"*"
|
||||
TABLE_SUB="0x${ID} 0x${ID} 0x${ID} 0x${ID} \"*"
|
||||
|
||||
line=
|
||||
table_line=
|
||||
ids_in=
|
||||
table_in=
|
||||
vendor=
|
||||
device=
|
||||
ids_device=
|
||||
table_device=
|
||||
subven=
|
||||
ids_subven=
|
||||
table_subven=
|
||||
subdev=
|
||||
ids_subdev=
|
||||
table_subdev=
|
||||
ven_str=
|
||||
dev_str=
|
||||
sub_str=
|
||||
|
||||
# force a sub-shell to fork with a new stdin
|
||||
# this is needed if the shell is reading these instructions from stdin
|
||||
while true
|
||||
do
|
||||
# get the first line of each data file to jump start things
|
||||
exec 0<&3
|
||||
read -r ids_in
|
||||
if [ "$2" != "/dev/null" ];then
|
||||
exec 0<&4
|
||||
read -r table_in
|
||||
fi
|
||||
|
||||
# outer loop reads lines from the updates file
|
||||
exec 0<&5
|
||||
while read -r line
|
||||
do
|
||||
# vendor entry
|
||||
if [[ $line == $VEN ]]
|
||||
then
|
||||
vendor=0x${line:0:4}
|
||||
ven_str=${line#${line:0:6}}
|
||||
# add entry to pci.ids
|
||||
exec 0<&3
|
||||
exec 1>&6
|
||||
while [[ $ids_in != $VEN ||
|
||||
0x${ids_in:0:4} < $vendor ]]
|
||||
do
|
||||
echo "$ids_in"
|
||||
read -r ids_in
|
||||
done
|
||||
echo "$line"
|
||||
if [[ 0x${ids_in:0:4} == $vendor ]]
|
||||
then
|
||||
read -r ids_in
|
||||
fi
|
||||
|
||||
# device entry
|
||||
elif [[ $line == $DEV ]]
|
||||
then
|
||||
device=`echo ${line:1:4} | tr "[:upper:]" "[:lower:]"`
|
||||
table_device=0x${line:1:4}
|
||||
dev_str=${line#${line:0:7}}
|
||||
ids_device=`echo ${ids_in:1:4} | tr "[:upper:]" "[:lower:]"`
|
||||
table_line="$vendor $table_device \"$driver\" \"$ven_str|$dev_str\""
|
||||
# add entry to pci.ids
|
||||
exec 0<&3
|
||||
exec 1>&6
|
||||
while [[ $ids_in != $DEV ||
|
||||
$ids_device < $device ]]
|
||||
do
|
||||
if [[ $ids_in == $VEN ]]
|
||||
then
|
||||
break
|
||||
fi
|
||||
if [[ $ids_device != ${ids_in:1:4} ]]
|
||||
then
|
||||
echo "${ids_in:0:1}$ids_device${ids_in#${ids_in:0:5}}"
|
||||
else
|
||||
echo "$ids_in"
|
||||
fi
|
||||
read -r ids_in
|
||||
ids_device=`echo ${ids_in:1:4} | tr "[:upper:]" "[:lower:]"`
|
||||
done
|
||||
if [[ $device != ${line:1:4} ]]
|
||||
then
|
||||
echo "${line:0:1}$device${line#${line:0:5}}"
|
||||
else
|
||||
echo "$line"
|
||||
fi
|
||||
if [[ $ids_device == $device ]]
|
||||
then
|
||||
read -r ids_in
|
||||
fi
|
||||
# add entry to pcitable
|
||||
if [ "$2" != "/dev/null" ];then
|
||||
exec 0<&4
|
||||
exec 1>&7
|
||||
while [[ $table_in != $TABLE_DEV ||
|
||||
${table_in:0:6} < $vendor ||
|
||||
( ${table_in:0:6} == $vendor &&
|
||||
${table_in:7:6} < $table_device ) ]]
|
||||
do
|
||||
echo "$table_in"
|
||||
read -r table_in
|
||||
done
|
||||
echo "$table_line"
|
||||
if [[ ${table_in:0:6} == $vendor &&
|
||||
${table_in:7:6} == $table_device ]]
|
||||
then
|
||||
read -r table_in
|
||||
fi
|
||||
fi
|
||||
# subsystem entry
|
||||
elif [[ $line == $SUB ]]
|
||||
then
|
||||
subven=`echo ${line:2:4} | tr "[:upper:]" "[:lower:]"`
|
||||
subdev=`echo ${line:7:4} | tr "[:upper:]" "[:lower:]"`
|
||||
table_subven=0x${line:2:4}
|
||||
table_subdev=0x${line:7:4}
|
||||
sub_str=${line#${line:0:13}}
|
||||
ids_subven=`echo ${ids_in:2:4} | tr "[:upper:]" "[:lower:]"`
|
||||
ids_subdev=`echo ${ids_in:7:4} | tr "[:upper:]" "[:lower:]"`
|
||||
table_line="$vendor $table_device $table_subven $table_subdev \"$driver\" \"$ven_str|$sub_str\""
|
||||
# add entry to pci.ids
|
||||
exec 0<&3
|
||||
exec 1>&6
|
||||
while [[ $ids_in != $SUB ||
|
||||
$ids_subven < $subven ||
|
||||
( $ids_subven == $subven &&
|
||||
$ids_subdev < $subdev ) ]]
|
||||
do
|
||||
if [[ $ids_in == $VEN ||
|
||||
$ids_in == $DEV ]]
|
||||
then
|
||||
break
|
||||
fi
|
||||
if [[ ! (${ids_in:2:4} == "1014" &&
|
||||
${ids_in:7:4} == "052C") ]]
|
||||
then
|
||||
if [[ $ids_subven != ${ids_in:2:4} || $ids_subdev != ${ids_in:7:4} ]]
|
||||
then
|
||||
echo "${ids_in:0:2}$ids_subven $ids_subdev${ids_in#${ids_in:0:11}}"
|
||||
else
|
||||
echo "$ids_in"
|
||||
fi
|
||||
fi
|
||||
read -r ids_in
|
||||
ids_subven=`echo ${ids_in:2:4} | tr "[:upper:]" "[:lower:]"`
|
||||
ids_subdev=`echo ${ids_in:7:4} | tr "[:upper:]" "[:lower:]"`
|
||||
done
|
||||
if [[ $subven != ${line:2:4} || $subdev != ${line:7:4} ]]
|
||||
then
|
||||
echo "${line:0:2}$subven $subdev${line#${line:0:11}}"
|
||||
else
|
||||
echo "$line"
|
||||
fi
|
||||
if [[ $ids_subven == $subven &&
|
||||
$ids_subdev == $subdev ]]
|
||||
then
|
||||
read -r ids_in
|
||||
fi
|
||||
# add entry to pcitable
|
||||
if [ "$2" != "/dev/null" ];then
|
||||
exec 0<&4
|
||||
exec 1>&7
|
||||
while [[ $table_in != $TABLE_SUB ||
|
||||
${table_in:14:6} < $table_subven ||
|
||||
( ${table_in:14:6} == $table_subven &&
|
||||
${table_in:21:6} < $table_subdev ) ]]
|
||||
do
|
||||
if [[ $table_in == $TABLE_DEV ]]
|
||||
then
|
||||
break
|
||||
fi
|
||||
if [[ ! (${table_in:14:6} == "0x1014" &&
|
||||
${table_in:21:6} == "0x052C") ]]
|
||||
then
|
||||
echo "$table_in"
|
||||
fi
|
||||
read -r table_in
|
||||
done
|
||||
echo "$table_line"
|
||||
if [[ ${table_in:14:6} == $table_subven &&
|
||||
${table_in:21:6} == $table_subdev ]]
|
||||
then
|
||||
read -r table_in
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
exec 0<&5
|
||||
done
|
||||
|
||||
# print the remainder of the original files
|
||||
exec 0<&3
|
||||
exec 1>&6
|
||||
echo "$ids_in"
|
||||
while read -r ids_in
|
||||
do
|
||||
echo "$ids_in"
|
||||
done
|
||||
|
||||
if [ "$2" != "/dev/null" ];then
|
||||
exec 0>&4
|
||||
exec 1>&7
|
||||
echo "$table_in"
|
||||
while read -r table_in
|
||||
do
|
||||
echo "$table_in"
|
||||
done
|
||||
fi
|
||||
|
||||
break
|
||||
done <&5
|
||||
|
||||
exec 3<&-
|
||||
exec 4<&-
|
||||
exec 5<&-
|
||||
exec 6>&-
|
||||
exec 7>&-
|
||||
|
||||
END
|
||||
|
||||
mv -f $LD/pci.ids.new %{pciids}
|
||||
if [ "%{pcitable}" != "/dev/null" ]; then
|
||||
mv -f $LD/pcitable.new %{pcitable}
|
||||
fi
|
||||
|
||||
uname -r | grep BOOT || /sbin/depmod -a > /dev/null 2>&1 || true
|
||||
|
||||
if which dracut >/dev/null 2>&1; then
|
||||
echo "Updating initramfs with dracut..."
|
||||
if dracut --force ; then
|
||||
echo "Successfully updated initramfs."
|
||||
else
|
||||
echo "Failed to update initramfs."
|
||||
echo "You must update your initramfs image for changes to take place."
|
||||
exit -1
|
||||
fi
|
||||
elif which mkinitrd >/dev/null 2>&1; then
|
||||
echo "Updating initrd with mkinitrd..."
|
||||
if mkinitrd; then
|
||||
echo "Successfully updated initrd."
|
||||
else
|
||||
echo "Failed to update initrd."
|
||||
echo "You must update your initrd image for changes to take place."
|
||||
exit -1
|
||||
fi
|
||||
else
|
||||
echo "Unable to determine utility to update initrd image."
|
||||
echo "You must update your initrd manually for changes to take place."
|
||||
exit -1
|
||||
fi
|
||||
|
||||
%preun
|
||||
rm -rf /usr/local/share/%{name}
|
||||
|
||||
%postun
|
||||
uname -r | grep BOOT || /sbin/depmod -a > /dev/null 2>&1 || true
|
||||
|
||||
if which dracut >/dev/null 2>&1; then
|
||||
echo "Updating initramfs with dracut..."
|
||||
if dracut --force ; then
|
||||
echo "Successfully updated initramfs."
|
||||
else
|
||||
echo "Failed to update initramfs."
|
||||
echo "You must update your initramfs image for changes to take place."
|
||||
exit -1
|
||||
fi
|
||||
elif which mkinitrd >/dev/null 2>&1; then
|
||||
echo "Updating initrd with mkinitrd..."
|
||||
if mkinitrd; then
|
||||
echo "Successfully updated initrd."
|
||||
else
|
||||
echo "Failed to update initrd."
|
||||
echo "You must update your initrd image for changes to take place."
|
||||
exit -1
|
||||
fi
|
||||
else
|
||||
echo "Unable to determine utility to update initrd image."
|
||||
echo "You must update your initrd manually for changes to take place."
|
||||
exit -1
|
||||
fi
|
||||
|
||||
%changelog
|
||||
* Tue Feb 2 2021 chxssg <chxssg@qq.com> - 4.0.1-1
|
||||
- Package init
|
||||
Loading…
x
Reference in New Issue
Block a user