-
Task
-
Resolution: Not a Bug
-
Undefined
-
None
-
None
-
False
-
False
-
-
rhel-9
-
None
-
-
This task is tracking the test case writing activities to cover the bug described below.
Problem Description: Clearly explain the issue.
Impact Assessment: Describe the severity and impact (e.g., network down,availability of a workaround, etc.).
Software Versions: Specify the exact versions in use (e.g.,openvswitch3.1-3.1.0-147.el8fdp).
[root@dell-per740-57 ~]# rpm -qa|grep openvs
openvswitch-selinux-extra-policy-1.0-39.el9fdp.noarch
openvswitch3.7-3.7.0-0.1.el9fdp.x86_64
The issue also exist on ovs3.5.
Issue Type: Indicate whether this is a new issue or a regression (if a regression, state the last known working version).
Reproducibility: Confirm if the issue can be reproduced consistently. If not, describe how often it occurs.
The vhostuser corresponding guest interface shows NO-CARRIER when change userspace-tso-enable from true to false
Reproduction Steps: Provide detailed steps or scripts to replicate the issue.
ovs-vsctl --no-wait set Open_vSwitch . other_config:dpdk-init="true"
ovs-vsctl --no-wait set Open_vSwitch . other_config:userspace-tso-enable="true"
ovs-vsctl --no-wait set Open_vSwitch . other_config:pmd-cpu-mask=0x8000008000000000800000800000
ovs-vsctl add-br ovsbr1 – set bridge ovsbr1 datapath_type=netdev
ovs-vsctl add-port ovsbr1 vhost0 – set Interface vhost0 type=dpdkvhostuserclient options:vhost-server-path=/tmp/dpdkvhostuserclient0
#start guest with following xml
[root@dell-per760-22 ~]# virsh dumpxml g1 <domain type='kvm' id='2'> <name>g1</name> <uuid>ae256d67-d4cc-4e9d-8d25-66ac92e17f53</uuid> <memory unit='KiB'>4194304</memory> <currentMemory unit='KiB'>4194304</currentMemory> <memoryBacking> <hugepages> <page size='1048576' unit='KiB'/> </hugepages> <locked/> <access mode='shared'/> </memoryBacking> <vcpu placement='static'>3</vcpu> <cputune> <vcpupin vcpu='0' cpuset='1'/> <vcpupin vcpu='1' cpuset='15'/> <vcpupin vcpu='2' cpuset='31'/> <emulatorpin cpuset='3'/> </cputune> <numatune> <memory mode='strict' nodeset='1'/> </numatune> <resource> <partition>/machine</partition> </resource> <os> <type arch='x86_64' machine='pc-q35-rhel9.6.0'>hvm</type> <boot dev='hd'/> </os> <features> <acpi/> <apic/> <pmu state='off'/> <vmport state='off'/> <ioapic driver='qemu'/> </features> <cpu mode='host-passthrough' check='none' migratable='on'> <feature policy='require' name='tsc-deadline'/> <numa> <cell id='0' cpus='0-2' memory='4194304' unit='KiB' memAccess='shared'/> </numa> </cpu> <clock offset='utc'> <timer name='rtc' tickpolicy='catchup'/> <timer name='pit' tickpolicy='delay'/> <timer name='hpet' present='no'/> </clock> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>restart</on_crash> <pm> <suspend-to-mem enabled='no'/> <suspend-to-disk enabled='no'/> </pm> <devices> <emulator>/usr/libexec/qemu-kvm</emulator> <disk type='file' device='disk'> <driver name='qemu' type='qcow2'/> <source file='/var/lib/libvirt/images/g1.qcow2' index='1'/> <backingStore/> <target dev='vda' bus='virtio'/> <alias name='virtio-disk0'/> <address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/> </disk> <controller type='usb' index='0' model='none'/> <controller type='pci' index='0' model='pcie-root'> <alias name='pcie.0'/> </controller> <controller type='pci' index='1' model='pcie-root-port'> <model name='pcie-root-port'/> <target chassis='1' port='0x10'/> <alias name='pci.1'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> </controller> <controller type='pci' index='2' model='pcie-root-port'> <model name='pcie-root-port'/> <target chassis='2' port='0x11'/> <alias name='pci.2'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </controller> <controller type='pci' index='3' model='pcie-root-port'> <model name='pcie-root-port'/> <target chassis='3' port='0x8'/> <alias name='pci.3'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/> </controller> <controller type='pci' index='4' model='pcie-root-port'> <model name='pcie-root-port'/> <target chassis='4' port='0x9'/> <alias name='pci.4'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/> </controller> <controller type='pci' index='5' model='pcie-root-port'> <model name='pcie-root-port'/> <target chassis='5' port='0xa'/> <alias name='pci.5'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/> </controller> <controller type='pci' index='6' model='pcie-root-port'> <model name='pcie-root-port'/> <target chassis='6' port='0xb'/> <alias name='pci.6'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/> </controller> <controller type='sata' index='0'> <alias name='ide'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x1f' function='0x2'/> </controller> <controller type='virtio-serial' index='0'> <alias name='virtio-serial0'/> <address type='pci' domain='0x0000' bus='0x04' slot='0x00' function='0x0'/> </controller> <interface type='bridge'> <mac address='52:54:00:00:00:11'/> <source bridge='virbr0'/> <target dev='vnet0'/> <model type='virtio'/> <alias name='net0'/> <address type='pci' domain='0x0000' bus='0x02' slot='0x00' function='0x0'/> </interface> <interface type='vhostuser'> <mac address='52:54:00:d3:0f:66'/> <source type='unix' path='/tmp/dpdkvhostuserclient0' mode='server'/> <target dev='vhost0'/> <model type='virtio'/> <driver name='vhost'/> <alias name='net1'/> <address type='pci' domain='0x0000' bus='0x03' slot='0x00' function='0x0'/> </interface> <serial type='pty'> <source path='/dev/pts/0'/> <target type='isa-serial' port='0'> <model name='isa-serial'/> </target> <alias name='serial0'/> </serial> <console type='pty' tty='/dev/pts/0'> <source path='/dev/pts/0'/> <target type='serial' port='0'/> <alias name='serial0'/> </console> <channel type='unix'> <source mode='bind' path='/run/libvirt/qemu/channel/2-g1/org.qemu.guest_agent.0'/> <target type='virtio' name='org.qemu.guest_agent.0' state='connected'/> <alias name='channel0'/> <address type='virtio-serial' controller='0' bus='0' port='1'/> </channel> <input type='mouse' bus='ps2'> <alias name='input0'/> </input> <input type='keyboard' bus='ps2'> <alias name='input1'/> </input> <graphics type='vnc' port='5900' autoport='yes' listen='0.0.0.0'> <listen type='address' address='0.0.0.0'/> </graphics> <audio id='1' type='none'/> <video> <model type='virtio' vram='16384' heads='1' primary='yes'/> <alias name='video0'/> <address type='pci' domain='0x0000' bus='0x05' slot='0x00' function='0x0'/> </video> <watchdog model='itco' action='reset'> <alias name='watchdog0'/> </watchdog> <memballoon model='virtio'> <alias name='balloon0'/> <address type='pci' domain='0x0000' bus='0x06' slot='0x00' function='0x0'/> </memballoon> <iommu model='intel'> <driver intremap='on' caching_mode='on' iotlb='on'/> <alias name='iommu0'/> </iommu> </devices> <seclabel type='none' model='selinux'/> <seclabel type='dynamic' model='dac' relabel='yes'> <label>+107:+987</label> <imagelabel>+107:+987</imagelabel> </seclabel> </domain>
virsh console g1 and check the enp3s0 is up.
[root@localhost ~]# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 52:54:00:00:00:11 brd ff:ff:ff:ff:ff:ff inet 192.168.122.43/24 brd 192.168.122.255 scope global dynamic noprefixroute enp2s0 valid_lft 3236sec preferred_lft 3236sec inet6 fe80::d11b:d16d:9c56:3bb5/64 scope link noprefixroute valid_lft forever preferred_lft forever 3: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc fq_codel state UP group default qlen 1000 link/ether 52:54:00:d3:0f:66 brd ff:ff:ff:ff:ff:ff inet 192.168.101.1/24 scope global enp3s0 valid_lft forever preferred_lft forever inet6 2001:db8:4::1/64 scope global valid_lft forever preferred_lft forever
#change the tso from true to false
ovs-vsctl --no-wait set Open_vSwitch . other_config:userspace-tso-enable=false
#restart ovs service
systemctl restart openvswitch
#check the enp3s0 port in guest. it change to the NO-CARRIER.
[root@localhost ~]# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 52:54:00:00:00:11 brd ff:ff:ff:ff:ff:ff inet 192.168.122.43/24 brd 192.168.122.255 scope global dynamic noprefixroute enp2s0 valid_lft 3190sec preferred_lft 3190sec inet6 fe80::dd32:1f27:9fb5:edb0/64 scope link noprefixroute valid_lft forever preferred_lft forever 3: enp3s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000 link/ether 52:54:00:d3:0f:46 brd ff:ff:ff:ff:ff:ff
Expected Behavior: Describe what should happen under normal circumstances.
Observed Behavior: Explain what actually happens.
The port inside guest change to NO-CARRIER when change the tso setting from true to false. If run reboot command in the guest, the port still is NO-CARRIER.
The guest’s port will only come up after running virsh destroy g1 and then virsh start g1.
The port inside guest still up when change the tso setting from false to true.
Troubleshooting Actions: Outline the steps taken to diagnose or resolve the issue so far.
Logs: If you collected logs please provide them (e.g. sos report, /var/log/openvswitch/* , testpmd console)
The ovs reconnect log:
[root@dell-per740-57 ~]# cat ovs.log |grep dpdkvhostuserclient0 2026-02-11T04:28:05.764Z|3035114|netdev_dpdk|INFO|vHost User device 'vhost0' created in 'client' mode, using client socket '/tmp/dpdkvhostuserclient0' 2026-02-11T04:28:05.764Z|609967|netdev_dpdk|INFO|vHost Device '/tmp/dpdkvhostuserclient0' connection has been destroyed 2026-02-11T04:28:05.764Z|3035119|netdev_dpdk|INFO|vHost User device 'vhost0' created in 'client' mode, using client socket '/tmp/dpdkvhostuserclient0' 2026-02-11T04:28:05.764Z|609968|netdev_dpdk|INFO|vHost Device '/tmp/dpdkvhostuserclient0' connection has been destroyed 2026-02-11T04:28:05.764Z|3035124|netdev_dpdk|INFO|vHost User device 'vhost0' created in 'client' mode, using client socket '/tmp/dpdkvhostuserclient0' 2026-02-11T04:28:05.764Z|609969|netdev_dpdk|INFO|vHost Device '/tmp/dpdkvhostuserclient0' connection has been destroyed 2026-02-11T04:28:05.764Z|3035129|netdev_dpdk|INFO|vHost User device 'vhost0' created in 'client' mode, using client socket '/tmp/dpdkvhostuserclient0' 2026-02-11T04:28:05.764Z|609970|netdev_dpdk|INFO|vHost Device '/tmp/dpdkvhostuserclient0' connection has been destroyed 2026-02-11T04:28:05.764Z|3035134|netdev_dpdk|INFO|vHost User device 'vhost0' created in 'client' mode, using client socket '/tmp/dpdkvhostuserclient0' 2026-02-11T04:28:05.765Z|609971|netdev_dpdk|INFO|vHost Device '/tmp/dpdkvhostuserclient0' connection has been destroyed