]> www.infradead.org Git - users/jedix/linux-maple.git/commit
xen/pciback: Fix proper FLR steps.
authorKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Wed, 5 Sep 2012 20:35:20 +0000 (16:35 -0400)
committerKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Wed, 19 Sep 2012 14:54:25 +0000 (10:54 -0400)
commit7f030d9a2450a9c215daa5e8aae9dc56ed558c79
tree7b09c3dc518206ab08755da8c7f31a94847d9348
parent6300aa78aa6038ee857ca76ff1a0746b746578db
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
(cherry picked from commit 80ba77dfbce85f2d1be54847de3c866de1b18a9a)
drivers/xen/xen-pciback/pci_stub.c