linux/drivers/xen/xen-pciback
Konrad Rzeszutek Wilk 80ba77dfbc xen/pciback: Fix proper FLR steps.
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: Ren, Yongjie <yongjie.ren@intel.com>
Reported-and-Tested-by: Tobias Geiger <tobias.geiger@vido.info>
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
CC: stable@vger.kernel.org
2012-09-06 09:22:02 -04:00
..
Makefile xen/pciback: Have 'passthrough' option instead of XEN_PCIDEV_BACKEND_PASS and XEN_PCIDEV_BACKEND_VPCI 2011-07-19 21:04:20 -04:00
conf_space.c PCI: create common pcibios_err_to_errno 2012-06-12 09:21:42 -06:00
conf_space.h xen/pciback: Drop two backends, squash and cleanup some code. 2011-07-19 20:58:35 -04:00
conf_space_capability.c xen/pciback: Drop two backends, squash and cleanup some code. 2011-07-19 20:58:35 -04:00
conf_space_header.c xen/pciback: miscellaneous adjustments 2011-09-21 18:17:59 -04:00
conf_space_quirks.c xen/pciback: miscellaneous adjustments 2011-09-21 18:17:59 -04:00
conf_space_quirks.h xen/pciback: Drop two backends, squash and cleanup some code. 2011-07-19 20:58:35 -04:00
passthrough.c xen/pciback: miscellaneous adjustments 2011-09-21 18:17:59 -04:00
pci_stub.c xen/pciback: Fix proper FLR steps. 2012-09-06 09:22:02 -04:00
pciback.h xen/pciback: Support pci_reset_function, aka FLR or D3 support. 2012-01-12 12:00:19 -05:00
pciback_ops.c xen/pciback: fix XEN_PCI_OP_enable_msix result 2012-04-06 12:13:55 -04:00
vpci.c xen/pciback: double lock typo 2011-09-29 10:50:26 -04:00
xenbus.c xen/pci[front|back]: Use %d instead of %1x for displaying PCI devfn. 2012-02-03 16:06:57 -05:00