aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorAlan Mikhak <alan.mikhak@sifive.com>2019-05-23 14:57:27 -0700
committerLorenzo Pieralisi <lorenzo.pieralisi@arm.com>2019-06-11 10:57:54 +0100
commitdbb7bbcc8ad248b1ab05bd27dfdb587ef4023dab (patch)
tree897ba4e75074e961113d697d4e21676705403862 /drivers
parentPCI: endpoint: Skip odd BAR when skipping 64bit BAR (diff)
downloadlinux-dev-dbb7bbcc8ad248b1ab05bd27dfdb587ef4023dab.tar.xz
linux-dev-dbb7bbcc8ad248b1ab05bd27dfdb587ef4023dab.zip
PCI: endpoint: Clear BAR before freeing its space
Associated pci_epf_bar structure is needed in pci_epc_clear_bar() to clear a BAR correctly but it is reset in pci_epf_free_space() (that is called first) which results in pci_epc_clear_bar() failure. Reorder the pci_epc_clear_bar()/pci_epf_free_space() calls execution to fix the issue. Signed-off-by: Alan Mikhak <alan.mikhak@sifive.com> [lorenzo.pieralisi@arm.com: reworded the commit log] Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> Acked-by: Kishon Vijay Abraham I <kishon@ti.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/pci/endpoint/functions/pci-epf-test.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/pci/endpoint/functions/pci-epf-test.c b/drivers/pci/endpoint/functions/pci-epf-test.c
index e8bcc924dbf8..1cfe3687a211 100644
--- a/drivers/pci/endpoint/functions/pci-epf-test.c
+++ b/drivers/pci/endpoint/functions/pci-epf-test.c
@@ -381,8 +381,8 @@ static void pci_epf_test_unbind(struct pci_epf *epf)
epf_bar = &epf->bar[bar];
if (epf_test->reg[bar]) {
- pci_epf_free_space(epf, epf_test->reg[bar], bar);
pci_epc_clear_bar(epc, epf->func_no, epf_bar);
+ pci_epf_free_space(epf, epf_test->reg[bar], bar);
}
}
}