Re: How to reduce PCI initialization from 5 s (1.5 s adding them to IOMMU groups)

From: Bjorn Helgaas
Date: Fri Nov 05 2021 - 14:53:15 EST


On Fri, Nov 05, 2021 at 12:56:09PM +0100, Paul Menzel wrote:
> Dear Linux folks,
>
>
> On a PowerEdge T440/021KCD, BIOS 2.11.2 04/22/2021, Linux 5.10.70 takes
> almost five seconds to initialize PCI. According to the timestamps, 1.5 s
> are from assigning the PCI devices to the 142 IOMMU groups.
>
> ```
> $ lspci | wc -l
> 281
> $ dmesg
> […]
> [ 2.918411] PCI: Using host bridge windows from ACPI; if necessary, use
> "pci=nocrs" and report a bug
> [ 2.933841] ACPI: Enabled 5 GPEs in block 00 to 7F
> [ 2.973739] ACPI: PCI Root Bridge [PC00] (domain 0000 [bus 00-16])
> [ 2.980398] acpi PNP0A08:00: _OSC: OS supports [ExtendedConfig ASPM
> ClockPM Segments MSI HPX-Type3]
> [ 2.989457] acpi PNP0A08:00: _OSC: platform does not support [LTR]
> [ 2.995451] acpi PNP0A08:00: _OSC: OS now controls [PME PCIeCapability]
> [ 3.001394] acpi PNP0A08:00: FADT indicates ASPM is unsupported, using
> BIOS configuration
> [ 3.010511] PCI host bridge to bus 0000:00
> […]
> [ 6.233508] system 00:05: [io 0x1000-0x10fe] has been reserved
> [ 6.239420] system 00:05: Plug and Play ACPI device, IDs PNP0c02 (active)
> [ 6.239906] pnp: PnP ACPI: found 6 devices

For ~280 PCI devices, (6.24-2.92)/280 = 0.012 s/dev. On my laptop I
have about (.66-.37)/36 = 0.008 s/dev (on v5.4), so about the same
ballpark.

Faster would always be better, of course. I assume this is not really
a regression?

> [ 6.989016] pci 0000:d7:05.0: disabled boot interrupts on device
> [8086:2034]
> [ 6.996063] PCI: CLS 0 bytes, default 64
> [ 7.000008] Trying to unpack rootfs image as initramfs...
> [ 7.065281] Freeing initrd memory: 5136K
> […]
> [ 7.079098] DMAR: dmar7: Using Queued invalidation
> [ 7.083983] pci 0000:00:00.0: Adding to iommu group 0
> […]
> [ 8.537808] pci 0000:d7:17.1: Adding to iommu group 141

I don't have this iommu stuff turned on and don't know what's
happening here.

> Is there anything that could be done to reduce the time?
>
>
> Kind regards,
>
> Paul