[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <CABQgh9E=z9SqbbnLfqQrSX8XqGMooz3EvUescpRY1XYQgvnHjA@mail.gmail.com>
Date: Sun, 16 Mar 2025 12:15:29 +0800
From: Zhangfei Gao <zhangfei.gao@...aro.org>
To: Bjorn Helgaas <helgaas@...nel.org>
Cc: Bjorn Helgaas <bhelgaas@...gle.com>, Baolu Lu <baolu.lu@...ux.intel.com>,
Robin Murphy <robin.murphy@....com>, Joerg Roedel <joro@...tes.org>, Jason Gunthorpe <jgg@...pe.ca>,
Krzysztof Wilczyński <kwilczynski@...nel.org>,
iommu@...ts.linux.dev, linux-pci@...r.kernel.org,
linux-kernel@...r.kernel.org
Subject: Re: [PATCH v2] PCI: Declare quirk_huawei_pcie_sva() as pci_fixup_header
On Sun, 16 Mar 2025 at 02:45, Bjorn Helgaas <helgaas@...nel.org> wrote:
>
> On Sat, Mar 15, 2025 at 10:13:19AM +0000, Zhangfei Gao wrote:
> > The commit bcb81ac6ae3c ("iommu: Get DT/ACPI parsing into the proper
> > probe path") changes the arm_smmu_probe_device() sequence.
>
> > The arm_smmu_probe_device() is now called earlier via pci_device_add(),
> > which calls pci_fixup_device() at the "pci_fixup_header" phase, while
> > originally it was called from the pci_bus_add_device(), which called
> > pci_fixup_device() at the "pci_fixup_final" phase.
> >
> > The callstack before:
> > [ 1121.314405] arm_smmu_probe_device+0x48/0x450
> > [ 1121.314410] __iommu_probe_device+0xc4/0x3c8
> > [ 1121.314412] iommu_probe_device+0x40/0x90
> > [ 1121.314414] acpi_dma_configure_id+0xb4/0x100
> > [ 1121.314417] pci_dma_configure+0xf8/0x108
> > [ 1121.314421] really_probe+0x78/0x278
> > [ 1121.314425] __driver_probe_device+0x80/0x140
> > [ 1121.314427] driver_probe_device+0x48/0x130
> > [ 1121.314430] __device_attach_driver+0xc0/0x108
> > [ 1121.314432] bus_for_each_drv+0x8c/0xf8
> > [ 1121.314435] __device_attach+0x104/0x1a0
> > [ 1121.314437] device_attach+0x1c/0x30
> > [ 1121.314440] pci_bus_add_device+0xb8/0x1f0
> > [ 1121.314442] pci_iov_add_virtfn+0x2ac/0x300
> >
> > And after:
> > [ 215.072859] arm_smmu_probe_device+0x48/0x450
> > [ 215.072871] __iommu_probe_device+0xc0/0x468
> > [ 215.072875] iommu_probe_device+0x40/0x90
> > [ 215.072877] iommu_bus_notifier+0x38/0x68
> > [ 215.072879] notifier_call_chain+0x80/0x148
> > [ 215.072886] blocking_notifier_call_chain+0x50/0x80
> > [ 215.072889] bus_notify+0x44/0x68
> > [ 215.072896] device_add+0x580/0x768
> > [ 215.072898] pci_device_add+0x1e8/0x568
> > [ 215.072906] pci_iov_add_virtfn+0x198/0x300
>
> The stacktraces definitely help connect the dots but don't integrate
> the fixup phases and the timestamps are unnecessary distraction.
>
> I would omit all the above except the first paragraph and include
> something like this instead, which shows how arm_smmu_probe_device()
> was previously after final fixups and is now between header and final
> fixups:
>
> pci_iov_add_virtfn
> pci_device_add
> pci_fixup_device(pci_fixup_header) <--
> device_add
> bus_notify
> iommu_bus_notifier
> + iommu_probe_device
> + arm_smmu_probe_device
> pci_bus_add_device
> pci_fixup_device(pci_fixup_final) <--
> device_attach
> driver_probe_device
> really_probe
> pci_dma_configure
> acpi_dma_configure_id
> - iommu_probe_device
> - arm_smmu_probe_device
>
> This is the pci_iov_add_virtfn(). The non-SR-IOV case is similar in
> that pci_device_add() is called from pci_scan_single_device() in the
> generic enumeration path, and pci_bus_add_device() is called later,
> after all a host bridge has been enumerated.
Thanks Bjorn
Will update in v3.
One thing is the probe sequence change is the fixing result, not newly added.
iommu_bus_notifier
iommu_probe_device
__iommu_probe_device
ops = iommu_fwspec_ops(dev_iommu_fwspec_get(dev));
if (!ops)
return -ENODEV;
This calling sequence existed before but returned here since ops = NULL.
It is fixed in the commit bcb81ac6ae3c, so arm_smmu_probe_device
happens earlier and quicker.
>
> > Fixes: bcb81ac6ae3c ("iommu: Get DT/ACPI parsing into the proper probe path")
> > Signed-off-by: Zhangfei Gao <zhangfei.gao@...aro.org>
> > [kwilczynski: commit log]
> > Signed-off-by: Krzysztof Wilczyński <kwilczynski@...nel.org>
>
> You should never include somebody else's Signed-off-by below yours.
> You should only add *your own* Signed-off-by:
OK
>
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/process/submitting-patches.rst?id=v6.13#n396
>
> Acked-by: Bjorn Helgaas <bhelgaas@...gle.com>
Thanks
Powered by blists - more mailing lists