• Konrad Rzeszutek Wilk's avatar
    xen/pciback: Fix proper FLR steps. · 80ba77df
    Konrad Rzeszutek Wilk authored
    When we do FLR and save PCI config we did it in the wrong order.
    The end result was that if a PCI device was unbind from
    its driver, then binded to xen-pciback, and then back to its
    driver we would get:
    
    > lspci -s 04:00.0
    04:00.0 Ethernet controller: Intel Corporation 82574L Gigabit Network Connection
    13:42:12 # 4 :~/
    > echo "0000:04:00.0" > /sys/bus/pci/drivers/pciback/unbind
    > modprobe e1000e
    e1000e: Intel(R) PRO/1000 Network Driver - 2.0.0-k
    e1000e: Copyright(c) 1999 - 2012 Intel Corporation.
    e1000e 0000:04:00.0: Disabling ASPM L0s L1
    e1000e 0000:04:00.0: enabling device (0000 -> 0002)
    xen: registering gsi 48 triggering 0 polarity 1
    Already setup the GSI :48
    e1000e 0000:04:00.0: Interrupt Throttling Rate (ints/sec) set to dynamic conservative mode
    e1000e: probe of 0000:04:00.0 failed with error -2
    
    This fixes it by first saving the PCI configuration space, then
    doing the FLR.
    Reported-by: default avatarRen, Yongjie <yongjie.ren@intel.com>
    Reported-and-Tested-by: default avatarTobias Geiger <tobias.geiger@vido.info>
    Signed-off-by: default avatarKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    CC: stable@vger.kernel.org
    80ba77df
pci_stub.c 35.1 KB