• Z
    pcie: set link state inactive/active after hot unplug/plug · 5363028d
    Zheng Xiang 提交于
    When VM boots from the latest version of linux kernel, after
    hot-unpluging virtio-blk disks which are hotplugged into
    pcie-root-port, the VM's dmesg log shows:
    
    [  151.046242] pciehp 0000:00:05.0:pcie004: pending interrupts 0x0001 from Slot Status
    [  151.046365] pciehp 0000:00:05.0:pcie004: Slot(0-3): Attention button pressed
    [  151.046369] pciehp 0000:00:05.0:pcie004: Slot(0-3): Powering off due to button press
    [  151.046420] pciehp 0000:00:05.0:pcie004: pending interrupts 0x0010 from Slot Status
    [  151.046425] pciehp 0000:00:05.0:pcie004: pciehp_green_led_blink: SLOTCTRL a8 write cmd 200
    [  151.046464] pciehp 0000:00:05.0:pcie004: pending interrupts 0x0010 from Slot Status
    [  151.046468] pciehp 0000:00:05.0:pcie004: pciehp_set_attention_status: SLOTCTRL a8 write cmd c0
    [  156.163421] pciehp 0000:00:05.0:pcie004: pciehp_get_power_status: SLOTCTRL a8 value read 2f1
    [  156.163427] pciehp 0000:00:05.0:pcie004: pciehp_unconfigure_device: domain:bus:dev = 0000:06:00
    [  156.198736] pciehp 0000:00:05.0:pcie004: pending interrupts 0x0010 from Slot Status
    [  156.198772] pciehp 0000:00:05.0:pcie004: pciehp_power_off_slot: SLOTCTRL a8 write cmd 400
    [  157.224124] pciehp 0000:00:05.0:pcie004: pending interrupts 0x0018 from Slot Status
    [  157.224194] pciehp 0000:00:05.0:pcie004: pciehp_green_led_off: SLOTCTRL a8 write cmd 300
    [  157.224220] pciehp 0000:00:05.0:pcie004: pciehp_check_link_active: lnk_status = 2011
    [  157.224223] pciehp 0000:00:05.0:pcie004: Slot(0-3): Link Up
    [  157.224233] pciehp 0000:00:05.0:pcie004: pciehp_get_power_status: SLOTCTRL a8 value read 7f1
    [  157.224281] pciehp 0000:00:05.0:pcie004: pending interrupts 0x0010 from Slot Status
    [  157.224285] pciehp 0000:00:05.0:pcie004: pciehp_power_on_slot: SLOTCTRL a8 write cmd 0
    [  157.224300] pciehp 0000:00:05.0:pcie004: __pciehp_link_set: lnk_ctrl = 0
    [  157.224336] pciehp 0000:00:05.0:pcie004: pending interrupts 0x0010 from Slot Status
    [  157.224339] pciehp 0000:00:05.0:pcie004: pciehp_green_led_blink: SLOTCTRL a8 write cmd 200
    [  159.739294] pci 0000:06:00.0 id reading try 50 times with interval 20 ms to get ffffffff
    [  159.739315] pciehp 0000:00:05.0:pcie004: pciehp_check_link_status: lnk_status = 2011
    [  159.739318] pciehp 0000:00:05.0:pcie004: Failed to check link status
    [  159.739371] pciehp 0000:00:05.0:pcie004: pending interrupts 0x0010 from Slot Status
    [  159.739394] pciehp 0000:00:05.0:pcie004: pciehp_power_off_slot: SLOTCTRL a8 write cmd 400
    [  160.771426] pciehp 0000:00:05.0:pcie004: pending interrupts 0x0010 from Slot Status
    [  160.771452] pciehp 0000:00:05.0:pcie004: pciehp_green_led_off: SLOTCTRL a8 write cmd 300
    [  160.771495] pciehp 0000:00:05.0:pcie004: pending interrupts 0x0010 from Slot Status
    [  160.771499] pciehp 0000:00:05.0:pcie004: pciehp_set_attention_status: SLOTCTRL a8 write cmd 40
    [  160.771535] pciehp 0000:00:05.0:pcie004: pending interrupts 0x0010 from Slot Status
    [  160.771539] pciehp 0000:00:05.0:pcie004: pciehp_green_led_off: SLOTCTRL a8 write cmd 300
    
    After analyzing the log information, it seems that qemu doesn't
    change the Link Status from active to inactive after hot-unplug.
    This results in the abnormal log after the linux kernel commit
    d331710ea78fea merged.
    
    Furthermore, If I hotplug the same virtio-blk disk after hot-unplug,
    the virtio-blk would turn on and then back off.
    
    So this patch set the Link Status inactive after hot-unplug and
    active after hot-plug.
    Signed-off-by: NZheng Xiang <zhengxiang9@huawei.com>
    Signed-off-by: NZheng Xiang <xiang.zheng@linaro.org>
    Cc: Wang Haibin <wanghaibin.wang@huawei.com>
    Cc: qemu-stable@nongnu.org
    Reviewed-by: NMarcel Apfelbaum <marcel.apfelbaum@gmail.com>
    Reviewed-by: NMichael S. Tsirkin <mst@redhat.com>
    Signed-off-by: NMichael S. Tsirkin <mst@redhat.com>
    (cherry picked from commit 2f2b18f6)
    Signed-off-by: NMichael Roth <mdroth@linux.vnet.ibm.com>
    5363028d
pcie.c 26.5 KB