Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package google-guest-configs for 
openSUSE:Factory checked in at 2026-04-01 19:52:49
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/google-guest-configs (Old)
 and      /work/SRC/openSUSE:Factory/.google-guest-configs.new.21863 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "google-guest-configs"

Wed Apr  1 19:52:49 2026 rev:41 rq:1344117 version:20260306.00

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/google-guest-configs/google-guest-configs.changes    
    2026-02-04 21:10:25.967493998 +0100
+++ 
/work/SRC/openSUSE:Factory/.google-guest-configs.new.21863/google-guest-configs.changes
     2026-04-01 19:54:39.411172035 +0200
@@ -1,0 +2,14 @@
+Wed Apr  1 12:29:13 UTC 2026 - John Paul Adrian Glaubitz 
<[email protected]>
+
+- Update to version 20260306.00
+  * gce-nic-naming: fix divide-by-zero error
+- from version 20260305.00
+  * set_multiqueue: detect IRDMA devices using their `infiniband/` directory
+- from version 20260303.00
+  * set_multiqueue: Special tunes for x4 machine family
+- from version 20260223.00
+  * gce-nic-naming: restore fallback to hardcoded `ip` paths
+- from version 20260121.00
+  * set_multiqueue: set a4x-max ring len before irq affinity
+
+-------------------------------------------------------------------

Old:
----
  google-guest-configs-20260116.00.tar.gz

New:
----
  google-guest-configs-20260306.00.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ google-guest-configs.spec ++++++
--- /var/tmp/diff_new_pack.ZUjGIH/_old  2026-04-01 19:54:40.099200694 +0200
+++ /var/tmp/diff_new_pack.ZUjGIH/_new  2026-04-01 19:54:40.103200860 +0200
@@ -23,7 +23,7 @@
 %define _udevdir %(pkg-config --variable udev_dir udev)
 %endif
 Name:           google-guest-configs
-Version:        20260116.00
+Version:        20260306.00
 Release:        0
 Summary:        Google Cloud Guest Configs
 License:        Apache-2.0

++++++ google-guest-configs-20260116.00.tar.gz -> 
google-guest-configs-20260306.00.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/guest-configs-20260116.00/src/usr/bin/gce-nic-naming 
new/guest-configs-20260306.00/src/usr/bin/gce-nic-naming
--- old/guest-configs-20260116.00/src/usr/bin/gce-nic-naming    2026-01-16 
22:47:35.000000000 +0100
+++ new/guest-configs-20260306.00/src/usr/bin/gce-nic-naming    2026-03-06 
03:42:57.000000000 +0100
@@ -458,10 +458,24 @@
 }
 
 function run_ip_cmd() {
-  debug "Running command: ip $@"
-  if [[ "$TEST" != "test" ]]; then
-    ip "$@"
+  local ip_cmd=""
+  if [[ $TEST == 'test' ]]; then
+    ip_cmd="debug ip"
+  elif command -v ip >/dev/null 2>&1; then
+    ip_cmd=$(command -v ip)
+  elif [[ -x /usr/sbin/ip ]]; then
+    ip_cmd='/usr/sbin/ip'
+  elif [[ -x /sbin/ip ]]; then
+    ip_cmd='/sbin/ip'
+  elif [[ -x /bin/ip ]]; then
+    ip_cmd='/bin/ip'
   fi
+
+  if [[ -z "${ip_cmd}" ]]; then
+    error_and_exit "ip command not found"
+  fi
+  debug "Running command: ${ip_cmd} $@"
+  ${ip_cmd} "$@"
 }
 
 #################################
@@ -669,7 +683,7 @@
     error_and_exit "No network devices found"
   fi
 
-  if [[ "${accelerator_devices[*]}" != "" ]]; then
+  if [[ "${accelerator_devices[*]}" != "" && "${gpu_nic_devices[*]}" != "" ]]; 
then
       determine_index_ratios
   fi
 
@@ -687,4 +701,4 @@
       run_ip_cmd link set dev ${current_net_iface} name ${generated_name}
     fi
   fi
-fi
\ No newline at end of file
+fi
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/guest-configs-20260116.00/src/usr/bin/google_set_multiqueue 
new/guest-configs-20260306.00/src/usr/bin/google_set_multiqueue
--- old/guest-configs-20260116.00/src/usr/bin/google_set_multiqueue     
2026-01-16 22:47:35.000000000 +0100
+++ new/guest-configs-20260306.00/src/usr/bin/google_set_multiqueue     
2026-03-06 03:42:57.000000000 +0100
@@ -194,13 +194,17 @@
   return 0
 }
 
-# returns 0 (success) if the supplied nic is an IDPF device.
+# returns 0 (success) if the supplied nic is an IDPF device,
+# but NOT an IRDMA device.
 function is_idpf() {
   local -r nic_name="$1"
   local -r driver_type=$(ethtool -i $nic_name | grep driver)
 
   [[ "$driver_type" == *"idpf"* ]] || return 1
 
+  local -r 
infiniband_path="${ROOT_DIR}sys/class/net/"$nic_name"/device/infiniband"
+  [[ -d "$infiniband_path" ]] && return 1
+
   return 0
 }
 
@@ -307,6 +311,10 @@
     echo "${network_interfaces[@]}"
 }
 
+function get_pci_network_interfaces() {
+  find ${ROOT_DIR}sys/class/net -type l | xargs -L 1 realpath | grep 
'/sys/devices/pci' | sort | xargs -L 1 basename
+}
+
 # For XPS affinity configuration, we'd do the following assignment:
 # 1. For each interface, divide the queues into two halves
 # 2. Evenly distribute the vCPUs on NUMA0 to the first half of the queues
@@ -381,10 +389,46 @@
   done
 }
 
+# Special features only for x4.
+function apply_x4_configs() {
+  echo "Configuring special features for x4."
+
+  # Globally enable RFS to reduce load on CPUs handling softirqs
+  # (still need per-queue enable).
+  sysctl net.core.rps_sock_flow_entries=262144
+
+  for nic_name in $(get_pci_network_interfaces); do
+    if ! is_idpf "$nic_name"; then
+      continue
+    fi
+
+    # Reconfigure the ring first, some driver versions fail to
+    # preserve interrupt affinity.
+    ethtool -G "$nic_name" rx 4096 tx 2048
+
+    # Make sure we have a well defined moderation setting.
+    ethtool -C "$nic_name" adaptive-tx off adaptive-rx off rx-usecs 20 
tx-usecs 50
+
+    # Per-queue flow count for RFS.
+    # Assumes 16 queues -> 262144 / 16 = 16384.
+    echo 16384 | tee 
${ROOT_DIR}sys/class/net/"$nic_name"/queues/rx-*/rps_flow_cnt > /dev/null
+  done
+
+  # Distribute IRQs across CPUs.
+  cpu=1; for i in $(echo ${ROOT_DIR}proc/irq/*/*TxRx*/../smp_affinity_list); do
+    echo $((cpu++)) > $i
+  done
+}
+
 echo "Running $(basename $0)."
 machine_type=$(get_metadata "instance/machine-type")
 echo "Machine type: $machine_type"
 
+if [[ "$machine_type" =~ "x4-" ]]; then
+  apply_x4_configs
+  exit 0
+fi
+
 VIRTIO_NET_DEVS=${ROOT_DIR}sys/bus/virtio/drivers/virtio_net/virtio*
 is_multinic_accelerator_platform
 IS_MULTINIC_ACCELERATOR_PLATFORM=$?
@@ -502,20 +546,23 @@
 
   echo -e "\nSetting IRQ affinity with vCPUs on NUMA${node} 
[${node_irq_ranges[@]}]"
   bind_cores_index=0
-  find ${ROOT_DIR}sys/class/net -type l | xargs -L 1 realpath | grep 
'/sys/devices/pci' | sort | xargs -L 1 basename | while read nic_name; do
+  for nic_name in $(get_pci_network_interfaces); do
     nic_numa_node=$(cat ${ROOT_DIR}sys/class/net/"$nic_name"/device/numa_node)
     if [[ $nic_numa_node -ne $node ]]; then
       continue
     fi
 
+    # For IDPF at least, we need to reconfigure ring size before setting IRQ 
affinity,
+    # since adjusting the ring size destroys the IRQ affinity settings.
+    if [[ $machine_type == *"a4x-maxgpu-"* ]]; then
+      ethtool -G "$nic_name" rx "$A4X_RX_RING_LENGTH" tx "$A4X_TX_RING_LENGTH"
+    fi
+
     # For non-gvnic/idpf devices (e.g. mlx5), the IRQ bindings will be handled 
by the device's driver.
     if is_gvnic "$nic_name"; then
       bind_cores_index=$(set_irq_range_gve "$nic_name" "$bind_cores_index" 
"${node_irq_ranges[@]}")
     elif is_idpf "$nic_name"; then
       bind_cores_index=$(set_irq_range_idpf "$nic_name" "$bind_cores_index" 
"${node_irq_ranges[@]}")
-      if [[ $machine_type == *"a4x-maxgpu-"* ]]; then
-        ethtool -G "$nic_name" rx "$A4X_RX_RING_LENGTH" tx 
"$A4X_TX_RING_LENGTH"
-      fi
     else
       echo "$nic_name is not a gvnic/idpf device, not setting irq affinity on 
this device"
     fi

Reply via email to