Hi
We have a chassis with a peripheral PCI device installed. We have a hypervisor 
running on the chassis where we have deployed a VM which can use the PCI device 
once it is attached.
When the PCI device is powered on or off we need to do a hotplug in/out using 
virsh commands. Even though the virsh commands for hotplug is executed 
successfully, the VM sees the PCI inside the VM for one or 2 secs. What do you 
think is the issue?
[root ~]# uname -a
Linux 4.18.0-372.9.1.el8.x86_64 #1 SMP Fri Mar 15 05:32:38 UTC 2024 x86_64 
x86_64 x86_64 GNU/Linux
[root ~]# virsh --version
8.0.0
[root ~]# rpm -qa | grep libvirt
libvirt-daemon-driver-nwfilter-8.0.0-5.el8.x86_64
python3-libvirt-7.8.0-1.el8.x86_64
libvirt-daemon-driver-storage-logical-8.0.0-5.el8.x86_64
libvirt-libs-8.0.0-5.el8.x86_64
libvirt-daemon-config-nwfilter-8.0.0-5.el8.x86_64
libvirt-daemon-driver-storage-gluster-8.0.0-5.el8.x86_64
libvirt-8.0.0-5.el8.x86_64
libvirt-daemon-8.0.0-5.el8.x86_64
libvirt-daemon-driver-nodedev-8.0.0-5.el8.x86_64
libvirt-daemon-config-network-8.0.0-5.el8.x86_64
libvirt-daemon-driver-storage-iscsi-8.0.0-5.el8.x86_64
libvirt-daemon-driver-storage-rbd-8.0.0-5.el8.x86_64
libvirt-daemon-driver-network-8.0.0-5.el8.x86_64
libvirt-daemon-driver-secret-8.0.0-5.el8.x86_64
python2-libvirt-python-5.10.0-1.el8.x86_64
libvirt-daemon-driver-qemu-8.0.0-5.el8.x86_64
libvirt-daemon-driver-storage-core-8.0.0-5.el8.x86_64
libvirt-daemon-driver-storage-iscsi-direct-8.0.0-5.el8.x86_64
libvirt-daemon-driver-storage-scsi-8.0.0-5.el8.x86_64
libvirt-client-8.0.0-5.el8.x86_64
libvirt-daemon-driver-storage-disk-8.0.0-5.el8.x86_64
libvirt-daemon-driver-storage-8.0.0-5.el8.x86_64
libvirt-daemon-driver-interface-8.0.0-5.el8.x86_64
libvirt-daemon-driver-storage-mpath-8.0.0-5.el8.x86_64
libvirt-daemon-kvm-8.0.0-5.el8.x86_64
[root ~]# rpm -qa | grep qemu
qemu-kvm-ui-opengl-6.2.0-11.el8.x86_64
qemu-kvm-6.2.0-11.el8.x86_64
qemu-img-6.2.0-11.el8.x86_64
qemu-kvm-block-iscsi-6.2.0-11.el8.x86_64
ipxe-roms-qemu-20200823-7.git4bd064de.el8.noarch
qemu-kvm-block-gluster-6.2.0-11.el8.x86_64
qemu-kvm-block-rbd-6.2.0-11.el8.x86_64
qemu-kvm-block-curl-6.2.0-11.el8.x86_64
qemu-kvm-core-6.2.0-11.el8.x86_64
qemu-kvm-hw-usbredir-6.2.0-11.el8.x86_64
libvirt-daemon-driver-qemu-8.0.0-5.el8.x86_64
qemu-kvm-ui-spice-6.2.0-11.el8.x86_64
qemu-kvm-docs-6.2.0-11.el8.x86_64
qemu-kvm-block-ssh-6.2.0-11.el8.x86_64
qemu-kvm-common-6.2.0-11.el8.x86_64

[root ~]# virsh nodedev-dettach  pci_0000_04_00_0
[12013.987821] pci_probe_reset_slot: call pci_slot_reset with probe=1
[12014.063669] pci_slot_reset (printk info): reset hotplug slot.
[12014.134164] pci_reset_hotplug_slot(printk INFO): calling reset_slot (probe = 
1)
[Mar19 21:09] pci_probe_reset_slot: call pci_slot_reset with probe=1
[  +0.075848] pci_slot_reset (printk info): reset hotplug slot.
[  +0.070495] pci_reset_hotplug_slot(printk INFO): calling reset_slot (probe = 
1)
Device pci_0000_04_00_0 detached

[root ~]# virsh attach-device ROUTER8 /opt/us/bin/mrvl.xml
[12024.217540] pci_probe_reset_slot: call pci_slot_reset with probe=1
[ +10.083376] pci_probe_reset_slot: call pci_slot_reset with 
probe=1[12024.293548] pci_slot_reset (printk info): reset hotplug slot.

[12024.434828] pci_reset_hotplug_slot(printk INFO): calling reset_slot (probe = 
1)
[  +0.076008] pci_slot_reset (printk info): reset hotplug slot.
[  +0.141280] pci_reset_hotplug_slot(printk INFO): calling reset_slot (probe = 
1)4.526807] pci_probe_reset_slot: call pci_slot_reset with probe=1

[12024.749367] pci_slot_reset (printk info): reset hotplug slot.
[12024.821327] pci_reset_hotplug_slot(printk INFO): calling reset_slot (probe = 
1)
[  +0.091979] pci_probe_reset_slot: call pci_slot_reset with 
probe=1[12024.911065] pci_probe_reset_slot: call pci_slot_reset with probe=1

[  +0.222560] pci_slot_reset (printk info): reset hotplug slot.
[  +0.071960] pci_reset_hotplug_slot(printk INFO): calling reset_slot (probe = 
1)
5.057584] pci_slot_reset (printk info): reset hotplug slot.
[  +0.089738] pci_probe_reset_slot: call pci_slot_reset with probe=1
[12025.278585] pci_reset_hotplug_slot(printk INFO): calling reset_slot (probe = 
1)
[  +0.146519] pci_slot_reset (printk info): reset hotplug slot.
[  +0.221001] pci_reset_hotplug_slot(printk INFO): calling reset_slot (probe = 
1)
5.441574] pci_probe_reset_slot: call pci_slot_reset with probe=1
[  +0.162989] pci_probe_reset_slot: call pci_slot_reset with 
probe=1[12025.665968] pci_slot_reset (printk info): reset hotplug slot.

[12025.806751] pci_reset_hotplug_slot(printk INFO): calling reset_slot (probe = 
1)
[12025.898060] __pci_reset_slot (printk info): Reset slot (not hotplug), probe 
= 1.
[  +0.224394] pci_slot_reset (printk info): reset hotplug slot.
[  +0.140783] pci_reset_hotplug_slot(printk INFO): calling reset_slot (probe = 
1)5.988477] pci_slot_reset (printk info): reset hotplug slot.

[  +0.091309] __pci_reset_slot (printk info): Reset slot (not hotplug), probe = 
1.
12026.205654] pci_reset_hotplug_slot(printk INFO): calling reset_slot (probe = 
1)
[12026.383424] __pci_reset_slot (printk info): pci_slot_trylock is non-zero, so 
reset hotplug slot.
[  +0.090417] pci_slot_reset (printk info): reset hotplug slot.
[  +0.217177] pci_reset_hotplug_slot(printk INFO): calling reset_slot (probe = 
1)6.490406] pci_reset_hotplug_slot(printk INFO): calling reset_slot (probe = 0)

[  +0.177770] __pci_reset_slot (printk info): pci_slot_trylock is non-zero, so 
reset hotplug slot.
2026.726579] pciehp_reset_slot: SLOTCTRL 58 write cmd 0
[  +0.106982] pci_reset_hotplug_slot(printk INFO): calling reset_slot (probe = 
0)
[  +0.236167] pcieport 0000:00:0e.0: pciehp: pciehp_reset_slot: SLOTCTRL 58 
write cmd 0
[  +0.000006] pciehp_reset_slot: SLOTCTRL 58 write cmd 0
[12027.744480] pending interrupts 0x0108 from Slot Status
[  +1.017890] pcieport 0000:00:0e.0: pciehp: pending interrupts 0x0108 from 
Slot Status
[  +0.000011] pending interrupts 0x0108 from Slot Status
[12027.936469] pciehp_reset_slot: SLOTCTRL 58 write cmd 1008
[  +0.191983] pcieport 0000:00:0e.0: pciehp: pciehp_reset_slot: SLOTCTRL 58 
write cmd 100812028.027182] pcieport 0000:00:0e.0: pciehp: Slot(4): Link Down

[12028.190357] Slot(4): Link Down
[  +0.000006] pciehp_reset_slot: SLOTCTRL 58 write cmd 1008[12028.230605] 
pcieport 0000:00:0e.0: pciehp: Slot(4): Card not present
[12028.369819] Slot(4): Card not present

Device attached successfully
[12028.415302] pciehp_unconfigure_device: domain:bus:dev = 0000:04:00
[  +0.090713] pcieport 0000:00:0e.0: pciehp: Slot(4): Link Down[12028.524356] 
vfio-pci 0000:04:00.0: Relaying device request to user (#0)


[  +0.163175] Slot(4): Link Down
[  +0.040248] pcieport 0000:00:0e.0: pciehp: Slot(4): Card not present
[  +0.139214] Slot(4): Card not present
[  +0.045479] pcieport 0000:00:0e.0: pciehp: pciehp_unconfigure_device: 
domain:bus:dev = 0000:04:00
[  +0.000004] pciehp_unconfigure_device: domain:bus:dev = 0000:04:00
[  +0.109054] vfio-pci 0000:04:00.0: Relaying device request to user (#0)
9119] pci_probe_reset_slot: call pci_slot_reset with probe=1
[root@nfvis ~]# [12029.151422] pci_slot_reset (printk info): reset hotplug slot.
[12029.237806] pci_reset_hotplug_slot(printk INFO): calling reset_slot (probe = 
1)
[  +0.334763] pci_probe_reset_slot: call pci_slot_reset with 
probe=1[12029.327572] pci_probe_reset_slot: call pci_slot_reset with probe=1

[  +0.292303] pci_slot_reset (printk info): reset hotplug slot.
[  +0.086384] pci_r12029.474447] pci_slot_reset (printk info): reset hotplug 
slot.
eset_hotplug_slot(printk INFO): calling reset_slot (probe = 1)
[12029.632533] pci_reset_hotplug_slot(printk INFO): calling reset_slot (probe = 
1)
[  +0.089766] pci_probe_reset_slot: call pci_slot_reset with 
probe=1[12029.788423] __pci_reset_slot (printk info): Reset slot (not hotplug), 
probe = 1.

[  +0.146875] pci_slot_reset (printk info): reset hotplug slot.
[12029.950782] pci_slot_reset (printk info): reset hotplug slot.
[  +0.158086] pci_reset_hotplug_slot(printk INFO): calling reset_slot (probe = 
1)
[  +0.155890] __pci_reset_slot (printk info): Reset slot (not hotplug), probe = 
1.
.089787] pci_reset_hotplug_slot(printk INFO): calling reset_slot (probe = 1)
[12030.346708] __pci_reset_slot (printk info): pci_slot_trylock = 0, so don't 
reset hotplug slot.
[  +0.162359] pci_slot_reset (printk info): reset hotplug slot.[12030.451555] 
vfio-pci 0000:04:00.0: can't change power state from D0 to D3hot (config space 
inaccessible)

[  +0.139005] pci_reset_hotplug_slot(printk INFO): calling reset_slot (probe = 
1)12030.632974] pci 0000:04:00.0: Removing from iommu group 58

[  +0.256921] __pci_reset_slot (printk info): pci_slot_trylock = 0, so don't 
reset hotplug slot.
[  +0.104847] vfio-pci 0000:04:00.0: can't change power state from D0 to D3hot 
(config space inaccessible)
5279] pciehp_check_link_active: lnk_status = 7011
[  +0.181419] pci 0000:04:00.0: Removing from iommu group 58
[12031.056747] pcieport 0000:00:0e.0: pciehp: Slot(4): Card present
[12031.194871] Slot(4): Card present
[  +0.152301] pcieport 0000:00:0e.0: pciehp: pciehp_check_link_active: 
lnk_status = 701112031.236173] pcieport 0000:00:0e.0: pciehp: Slot(4): Link Up
[12031.395181] Slot(4): Link Up

[  +0.000004] pciehp_check_link_active: lnk_status = 7011
[  +0.271468] pcieport 0000:00:0e.0: pciehp: Slot(4): Card present
[  +0.138124] Slot(4): Card present
[  +0.041302] pcieport 0000:00:0e.0: pciehp: Slot(4): Link Up
[  +0.159008] Slot(4): Link Up
31.560448] read_dev_vendor_id: read config_dword worked.  bus = 4, dev_vendor 
id = 0xE61E11AB
[12031.803909] read_dev_vendor_id: device found, return true.  bus = 4, 
dev_vendor id = 0xE61E11AB
[12031.909784] pciehp_check_link_status: lnk_status = 7011
[  +0.165267] read_dev_vendor_id: read config_dword worked.  bus = 4, 
dev_vendor id = 0xE61E11AB2031.974018] read_dev_vendor_id: read config_dword 
worked.  bus = 4, dev_vendor id = 0xE61E11AB
[12032.176762] read_dev_vendor_id: device found, return true.  bus = 4, 
dev_vendor id = 0xE61E11AB

[  +0.243461] read_dev_vendor_id: device found, return true.  bus = 4, 
dev_vendor id = 0xE61E11AB
[  +0.105871] pcieport 0000:00:0e.0: pciehp: pciehp_check_link_status: 
lnk_status = 7011282681] pci 0000:04:00.0: [11ab:e61e] type 00 class 0x020000

[  +0.000004] pciehp_check_link_status: lnk_status = 7011
[12032.545840] pci 0000:04:00.0: reg 0x10: [mem 0x7b44000000-0x7b440fffff 64bit 
pref]
[12032.701716] pci 0000:04:00.0: reg 0x18: [mem 0x7b40000000-0x7b43ffffff 64bit 
pref]
[  +0.064234] read_dev_vendor_id: read config_dword worked.  bus = 4, 
dev_vendor id = 0xE61E11AB2032.794062] pci 0000:04:00.0: reg 0x20: [mem 
0x7b30000000-0x7b3fffffff 64bit pref]

[12032.984416] pci 0000:04:00.0: supports D1 D2
[  +0.202744] read_dev_vendor_id: device found, return true.  bus = 4, 
dev_vendor id = 0xE61E11AB2033.039350] pci 0000:04:00.0: Adding to iommu group 
58
[12033.201376] pci 0000:04:00.0: BAR 4: assigned [mem 0x7b30000000-0x7b3fffffff 
64bit pref]

[12033.299989] pci 0000:04:00.0: BAR 2: assigned [mem 0x7b40000000-0x7b43ffffff 
64bit pref]
[  +0.105919] pci 0000:04:00.0: [11ab:e61e] type 00 class 
0x020000[12033.400664] pci 0000:04:00.0: BAR 0: assigned [mem 
0x7b44000000-0x7b440fffff 64bit pref]

[  +0.263159] pci 0000:04:00.0: reg 0x10: [mem 0x7b44000000-0x7b440fffff 64bit 
pref]12033.568019] pcieport 0000:00:0e.0: PCI bridge to [bus 04-06]
[12033.725967] pcieport 0000:00:0e.0:   bridge window [io  0xd000-0xdfff]

[  +0.155876] pci 0000:04:00.0: reg 0x18: [mem 0x7b40000000-0x7b43ffffff 64bit 
pref]12033.805813] pcieport 0000:00:0e.0:   bridge window [mem 
0xdc000000-0xdcffffff]
[12033.982533] pcieport 0000:00:0e.0:   bridge window [mem 
0x7b30000000-0x7b6fffffff 64bit pref]

[  +0.092346] pci 0000:04:00.0: reg 0x20: [mem 0x7b30000000-0x7b3fffffff 64bit 
pref]12034.086495] pci-stub 0000:04:00.0: claimed by stub

[  +0.190354] pci 0000:04:00.0: supports D1 D2
[  +0.054934] pci 0000:04:00.0: Adding to iommu group 58
[  +0.162026] pci 0000:04:00.0: BAR 4: assigned [mem 0x7b30000000-0x7b3fffffff 
64bit pref]
[  +0.098613] pci 0000:04:00.0: BAR 2: assigned [mem 0x7b40000000-0x7b43ffffff 
64bit pref]
[  +0.100675] pci 0000:04:00.0: BAR 0: assigned [mem 0x7b44000000-0x7b440fffff 
64bit pref]
[  +0.167355] pcieport 0000:00:0e.0: PCI bridge to [bus 04-06]
[  +0.157948] pcieport 0000:00:0e.0:   bridge window [io  0xd000-0xdfff]
[  +0.079846] pcieport 0000:00:0e.0:   bridge window [mem 0xdc000000-0xdcffffff]
[  +0.176720] pcieport 0000:00:0e.0:   bridge window [mem 
0x7b30000000-0x7b6fffffff 64bit pref]
[  +0.103962] pci-stub 0000:04:00.0: claimed by stub

Thank you for replying in advance,
-Chanda


Reply via email to