lkml.org 
[lkml]   [2009]   [Feb]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: PCI PM: Restore standard config registers of all devices early
    From
    Date
    On Mon, 2009-02-02 at 12:41 -0800, Linus Torvalds wrote:
    >
    > On Tue, 3 Feb 2009, Benjamin Herrenschmidt wrote:
    > >
    > > I'd rather hook it up inside pci_set_power_state()...
    >
    > Umm. But you already _have_ that. Look at platform_pci_set_power_state().
    > It gets called before turning the device on (pci_raw_set_power_state(D0))
    > and after turning the device off (pci_raw_set_power_state(D1+))
    >
    > Maybe you missed it? It's how ACPI does things.

    I may well have, it didn't exist when my stuff was written.

    > However, the issue you see is that pci_restore_standard_config() doesn't
    > call it, because at least with ACPI, the ACPI code simply isn't ready to
    > be called with interrupts off. So it looks like you may be looking at the
    > wrong thing, hmm?

    Well.. yes and no... I still don't see how it can be sane to whack config
    space back before the device has been turned back on. I wouldn't be surprised
    if some devices don't grok well their BARs being written while not in D0.

    I suppose I can always add another hook inside pci_restore_blah for my specific
    case but I can also very easily see that can of worms hitting even more badly
    in tight embedded environments such as handhelds, who use things like fine clock
    control a lot more extensively.

    In fact, even on x86, I'm not sure it's kosher to restore the config space
    before you called ACPI...

    Ben.




    \
     
     \ /
      Last update: 2009-02-02 22:03    [W:5.358 / U:0.044 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site