From 5850ce130d6bff2e825dab062b65a9f97e7dc11e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BA=91=E5=A4=A9=E9=A3=9E=E9=95=9C?= <42763234+yuntianfeijing@users.noreply.github.com> Date: Wed, 12 Mar 2025 14:26:52 +0800 Subject: [PATCH] Update 0400_configmap.yaml fix issues 1328 fix https://github.com/NVIDIA/gpu-operator/issues/1328 --- assets/state-vfio-manager/0400_configmap.yaml | 39 ++++++++++++------- 1 file changed, 24 insertions(+), 15 deletions(-) diff --git a/assets/state-vfio-manager/0400_configmap.yaml b/assets/state-vfio-manager/0400_configmap.yaml index 85df8f8ca..4ff3bd4ab 100644 --- a/assets/state-vfio-manager/0400_configmap.yaml +++ b/assets/state-vfio-manager/0400_configmap.yaml @@ -95,11 +95,17 @@ data: echo "unbinding device $gpu" unbind_from_driver $gpu #for graphics mode, we need to unbind the auxiliary device as well - aux_dev=$(get_graphics_aux_dev "$gpu") - if [ "$aux_dev" != "NONE" ]; then - echo "gpu $gpu is in graphics mode aux_dev $aux_dev" - unbind_from_driver "$aux_dev" - fi + aux_devs=$(get_graphics_aux_dev "$gpu") + readarray -t aux_dev_array < <(printf "%s\n" "$aux_devs") + for aux_dev in "${aux_dev_array[@]}"; do + if [ "$aux_dev" == "NONE" ]; then + continue + fi + if ls "/sys/bus/pci/devices/$aux_dev/" >& /dev/null; then + echo "gpu $gpu is in graphics mode aux_dev $aux_dev" + unbind_from_driver "$aux_dev" + fi + done } unbind_all() { @@ -140,11 +146,8 @@ data: echo "NONE" return fi - - if ls "/sys/bus/pci/devices/$aux_dev/" >& /dev/null; then - echo "$aux_dev" - return - fi + echo "$aux_dev" + return fi echo "NONE" @@ -160,11 +163,17 @@ data: bind_pci_device "$gpu" #for graphics mode, we need to bind the auxiliary device as well - aux_dev=$(get_graphics_aux_dev "$gpu") - if [ "$aux_dev" != "NONE" ]; then - echo "gpu $gpu is in graphics mode aux_dev $aux_dev" - bind_pci_device "$aux_dev" - fi + aux_devs=$(get_graphics_aux_dev "$gpu") + readarray -t aux_dev_array < <(printf "%s\n" "$aux_devs") + for aux_dev in "${aux_dev_array[@]}"; do + if [ "$aux_dev" == "NONE" ]; then + continue + fi + if ls "/sys/bus/pci/devices/$aux_dev/" >& /dev/null; then + echo "gpu $gpu is in graphics mode aux_dev $aux_dev" + bind_pci_device "$aux_dev" + fi + done } bind_all() {