Files
i2som-imx-linux/include/linux
Bjorn Helgaas 54a7a9d75c PCI: Probe bridge window attributes once at enumeration-time
commit 51c48b3101 upstream.

pci_bridge_check_ranges() determines whether a bridge supports the optional
I/O and prefetchable memory windows and sets the flag bits in the bridge
resources.  This *could* be done once during enumeration except that the
resource allocation code completely clears the flag bits, e.g., in the
pci_assign_unassigned_bridge_resources() path.

The problem with pci_bridge_check_ranges() in the resource allocation path
is that we may allocate resources after devices have been claimed by
drivers, and pci_bridge_check_ranges() *changes* the window registers to
determine whether they're writable.  This may break concurrent accesses to
devices behind the bridge.

Add a new pci_read_bridge_windows() to determine whether a bridge supports
the optional windows, call it once during enumeration, remember the
results, and change pci_bridge_check_ranges() so it doesn't touch the
bridge windows but sets the flag bits based on those remembered results.

Link: https://lore.kernel.org/linux-pci/1506151482-113560-1-git-send-email-wangzhou1@hisilicon.com
Link: https://lists.gnu.org/archive/html/qemu-devel/2018-12/msg02082.html
Reported-by: Yandong Xu <xuyandong2@huawei.com>
Tested-by: Yandong Xu <xuyandong2@huawei.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Cc: Michael S. Tsirkin <mst@redhat.com>
Cc: Sagi Grimberg <sagi@grimberg.me>
Cc: Ofer Hayut <ofer@lightbitslabs.com>
Cc: Roy Shterman <roys@lightbitslabs.com>
Cc: Keith Busch <keith.busch@intel.com>
Cc: Zhou Wang <wangzhou1@hisilicon.com>
Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=208371
Signed-off-by: Dima Stepanov <dimastep@yandex-team.ru>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-08-21 11:05:29 +02:00
..
2019-12-13 08:51:18 +01:00
2019-12-17 20:35:45 +01:00
2019-10-05 13:10:03 +02:00
2019-07-03 13:14:48 +02:00
2019-11-24 08:19:14 +01:00
2020-05-20 08:18:45 +02:00
2020-03-25 08:06:14 +01:00
2019-10-17 13:45:42 -07:00
2019-12-13 08:52:43 +01:00
2020-06-25 15:33:06 +02:00
2019-12-31 16:35:38 +01:00
2020-07-29 10:16:52 +02:00
2020-03-18 07:14:17 +01:00
2019-06-11 12:20:52 +02:00
2020-04-17 10:48:47 +02:00
2020-04-02 15:28:22 +02:00
2020-05-20 08:18:45 +02:00
2020-04-02 15:28:23 +02:00