Re: [PATCH] PCI fixes for 2.6.9

From: Russell King
Date: Sat Nov 20 2004 - 13:47:04 EST


On Fri, Oct 22, 2004 at 04:45:08PM -0700, Greg KH wrote:
> On Wed, Oct 20, 2004 at 09:10:45AM +0100, Russell King wrote:
> > On Tue, Oct 19, 2004 at 03:42:15PM -0700, Greg KH wrote:
> > > ChangeSet 1.1997.37.29, 2004/10/06 12:50:32-07:00, kaneshige.kenji@xxxxxxxxxxxxxx
> > >
> > > [PATCH] PCI: warn of missing pci_disable_device()
> > >
> > > As mentioned in Documentaion/pci.txt, pci device driver should call
> > > pci_disable_device() when it decides to stop using the device. But
> > > there are some drivers that don't use pci_disable_device() so far.
> >
> > No. This is wrong. There are some classes of devices, notably
> > PCMCIA Cardbus drivers where buggy BIOS means this should _NOT_
> > be done.
>
> But what happens if you reload that driver and try to enable the device?
> Does that "just work" somehow on this kind of hardware?

Why wouldn't it work? Surely there are no side effects to trying to enable
an already enabled device - if there are, then wouldn't x86 have problems
where PCI devices were enabled before control was passed to the kernel?

> > There are BIOSen out there which refuse to suspend/resume if the
> > Cardbus bridge is disabled.
> >
> > It's not that the driver is buggy. It's that the driver has far
> > more information than the PCI layer could ever have.
>
> Ugh, I hate broken hardware. I'll revert this in my next round of pci
> changes (sometime next week.)

It's got nothing to do with hardware. It's BIOS.

Also, upon re-reading the bug report, the problem was putting the Cardbus
bridge into D3 state, not calling pci_disable_device() for it. However,
if pci_disable_device() puts the bridge into D3, then we'll hit the same
issue.

--
Russell King
Linux kernel 2.6 ARM Linux - http://www.arm.linux.org.uk/
maintainer of: 2.6 PCMCIA - http://pcmcia.arm.linux.org.uk/
2.6 Serial core
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/