PCI: of: Warn if non-prefetchable memory aperture size is > 32-bit
authorVidya Sagar <vidyas@nvidia.com>
Wed, 18 Nov 2020 14:46:25 +0000 (20:16 +0530)
committerLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Wed, 18 Nov 2020 16:16:38 +0000 (16:16 +0000)
As per PCIe spec r5.0, sec 7.5.1.3.8 only 32-bit BAR registers are defined
for non-prefetchable memory and hence a warning should be reported when
the size of them go beyond 32-bits.

Link: https://lore.kernel.org/r/20201118144626.32189-2-vidyas@nvidia.com
Tested-by: Thierry Reding <treding@nvidia.com>
Tested-by: Jon Hunter <jonathanh@nvidia.com>
Signed-off-by: Vidya Sagar <vidyas@nvidia.com>
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Reviewed-by: Rob Herring <robh@kernel.org>
drivers/pci/of.c

index ac24cd5..5ea472a 100644 (file)
@@ -556,6 +556,11 @@ static int pci_parse_request_of_pci_ranges(struct device *dev,
                        break;
                case IORESOURCE_MEM:
                        res_valid |= !(res->flags & IORESOURCE_PREFETCH);
+
+                       if (!(res->flags & IORESOURCE_PREFETCH))
+                               if (upper_32_bits(resource_size(res)))
+                                       dev_warn(dev, "Memory resource size exceeds max for 32 bits\n");
+
                        break;
                }
        }