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.

Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to