Re: [RFC][PATCH 5/10] PCI PM: Avoid touching devices behindbridges in unknown state (rev. 2)

From: Pavel Machek
Date: Wed Jan 07 2009 - 17:33:52 EST


On Mon 2009-01-05 14:30:54, Rafael J. Wysocki wrote:
> On Monday 05 January 2009, Pavel Machek wrote:
> > Hi!
> >
> > > Subject: PCI PM: Avoid touching devices behind bridges in unknown state (rev. 2)
> > > From: Rafael J. Wysocki <rjw@xxxxxxx>
> > >
> > > It generally is better to avoid accessing devices behind bridges that
> > > may not be in the D0 power state, because in that case the bridges'
> > > secondary buses may not be accessible. For this reason, during the
> > > early phase of resume (ie. with interrupts disabled), before
> > > restoring the standard config registers of a device, check the power
> > > state of the bridge the device is behind and postpone the restoration
> > > of the device's config space, as well as any other operations that
> > > would involve accessing the device, if that state is not D0.
> >
> > I'm not sure if this is good idea.
> >
> > Either pci config space needs to be restored early, or it can wait.
> >
> > Sometimes restoring it early and sometimes restoring it late seems
> > harmful: it will make code harder to understand and harder to test.
>
> Unfortunately, we need to restore it early at least for some devices (bridges
> and PCI Express ports) and I don't think it is generally safe to go and restore
> it early for every device (as explained in this changelog).

Could we make it so that it is restored early exactly on bridges and
PCIe ports?

Idea that restore of one specific device is called early or late
depending if it is connected directly or behind bridge scares me...
Pavel
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
--
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/