From 2fa4739f2b038f2b3f751432e4ec2becfa261302 Mon Sep 17 00:00:00 2001 From: Coiby Xu Date: Wed, 27 Sep 2023 09:31:39 +0800 Subject: [PATCH] Install the driver of physical device for a SR-IOV virtual device Currently, network dumping failed over a NIC that is a Single Root I/O Virtualization (SR-IOV) virtual device. Usually the driver of the virtual device won't specify the dependency on the driver of the physical device. So to fix this issue, the driver of the physical device needs to be found and installed as well. Fixes: a65dde2d ("Reduce kdump memory consumption by only installing needed NIC drivers") Signed-off-by: Coiby Xu --- dracut-module-setup.sh | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/dracut-module-setup.sh b/dracut-module-setup.sh index 3c9bdbe..89d9959 100755 --- a/dracut-module-setup.sh +++ b/dracut-module-setup.sh @@ -381,6 +381,14 @@ _get_hpyerv_physical_driver() { _get_nic_driver "$_physical_nic" } +_get_physical_function_driver() { + local _physfn_dir=/sys/class/net/"$1"/device/physfn + + if [[ -e "$_physfn_dir" ]]; then + basename "$(readlink -f "$_physfn_dir"/driver)" + fi +} + kdump_install_nic_driver() { local _netif _driver _drivers @@ -408,6 +416,9 @@ kdump_install_nic_driver() { fi _drivers+=("$_driver") + # For a Single Root I/O Virtualization (SR-IOV) virtual device, + # the driver of physical device needs to be installed as well + _drivers+=("$(_get_physical_function_driver "$_netif")") done [[ -n ${_drivers[*]} ]] || return