mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs.git
synced 2026-10-28 12:53:14 +01:00
Merge tag 'pci-v7.3-fixes-3' of git://git.kernel.org/pub/scm/linux/kernel/git/pci/pci
Pull PCI fix from Bjorn Helgaas: - Allow driver to use AtomicOps if already enabled by hypervisor; fixes regression when Root Port is not visible in a guest (Nikola Prica) * tag 'pci-v7.3-fixes-3' of git://git.kernel.org/pub/scm/linux/kernel/git/pci/pci: PCI: Accept AtomicOps already enabled by the hypervisor
This commit is contained in:
commit
d2dbe503fd
1 file changed
+14
-1
+14
-1
@@ -3769,8 +3769,21 @@ int pci_enable_atomic_ops_to_root(struct pci_dev *dev, u32 cap_mask)
|
||||
}
|
||||
|
||||
root = pcie_find_root_port(dev);
|
||||
if (!root)
|
||||
if (!root) {
|
||||
|
||||
/*
|
||||
* A hypervisor may expose a topology with the root port
|
||||
* not visible to the guest. If the hypervisor has already
|
||||
* set AtomicOp Requester Enable in the endpoint, we assume
|
||||
* it has verified support in the root port, so it is safe
|
||||
* for the driver to use AtomicOps.
|
||||
*/
|
||||
pcie_capability_read_dword(dev, PCI_EXP_DEVCTL2, &ctl2);
|
||||
if (ctl2 & PCI_EXP_DEVCTL2_ATOMIC_REQ)
|
||||
return 0;
|
||||
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
pcie_capability_read_dword(root, PCI_EXP_DEVCAP2, &cap);
|
||||
if ((cap & cap_mask) != cap_mask)
|
||||
|
||||
Reference in new issue
Block a user