[PATCH] agp/amd64: Bind to unsupported devices only if AGP is present
Ben Hutchings
ben at decadent.org.uk
Tue Jun 24 21:54:46 UTC 2025
On Sat, 2025-06-21 at 16:05 +0200, Lukas Wunner wrote:
> On Sat, Jun 21, 2025 at 03:51:44PM +0200, Ben Hutchings wrote:
> > On Sat, 2025-06-21 at 14:29 +0200, Lukas Wunner wrote:
> > > On Sat, Jun 21, 2025 at 02:07:40PM +0200, Ben Hutchings wrote:
> > > > On Sat, 2025-06-21 at 11:40 +0200, Lukas Wunner wrote:
> > > > > Since commit 172efbb40333 ("AGP: Try unsupported AGP chipsets on x86-64 by
> > > > > default"), the AGP driver for AMD Opteron/Athlon64 CPUs attempts to bind
> > > > > to any PCI device.
> > > > >
> > > > > On modern CPUs exposing an AMD IOMMU, this results in a message with
> > > > > KERN_CRIT severity:
> > > > >
> > > > > pci 0000:00:00.2: Resources present before probing
> > > > >
> > > > > The driver used to bind only to devices exposing the AGP Capability, but
> > > > > that restriction was removed by commit 6fd024893911 ("amd64-agp: Probe
> > > > > unknown AGP devices the right way").
> > > >
> > > > That didn't remove any restriction as the probe function still started
> > > > by checking for an AGP capability. The change I made was that the
> > > > driver would actually bind to devices with the AGP capability instead of
> > > > starting to use them without binding.
> > >
> > > The message above would not be emitted without your change.
> > >
> > > The check for the AGP capability in agp_amd64_probe() is too late
> > > to prevent the message. That's because the message is emitted
> > > before ->probe() is even called.
> >
> > I understand that. But I don't feel that the explanation above
> > accurately described the history here.
>
> So please propose a more accurate explanation.
Something like "The driver iterates over all PCI devices, checking for
an AGP capability. Since commit 6fd024893911 ("amd64-agp: Probe unknown
AGP devices the right way") this is done with driver_attach() and a
wildcard PCI ID table, and the preparation for probing the IOMMU device
produces this error message."
Thinking about this further:
- Why *does* the IOMMU device have resources assigned but no driver
bound? Is that the real bug?
- If not, and there's a general problem with this promiscuous probing,
would it make more sense to:
1. Restore the search for an AGP capability in agp_amd64_init().
2. If and only if an AGP device is found, poke the appropriate device
ID into agp_amd64_pci_promisc_table and then call driver_attach().
?
Ben.
--
Ben Hutchings
Horngren's Observation:
Among economists, the real world is often a special case.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: This is a digitally signed message part
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20250624/7c7953d7/attachment.sig>
More information about the dri-devel
mailing list