ACPI C3 patch for atheros

M. Warner Losh imp at bsdimp.com
Mon Jan 3 04:08:16 GMT 2005


In message: <41D8C26A.8030105 at root.org>
            Nate Lawson <nate at root.org> writes:
: Sam Leffler wrote:
: > Lots of old code here; at the time I cribbed the suspend-resume code I 
: > don't believe the pci registers were saved for drivers.
: > 
: > Here's the code from which the change originated:
: > 
: >  >        /*
: >  >>          * Suspend/Resume resets the PCI configuration space, so we 
: > have to
: >  >>          * re-disable the RETRY_TIMEOUT register (0x41) to keep
: >  >>          * PCI Tx retries from interfering with C3 CPU state
: >  >>          *
: >  >>          * Code taken from ipw2100 driver - jg
: >  >>          */
: >  >>         pci_read_config_dword(pdev, 0x40, &val);
: >  >>         if ((val & 0x0000ff00) != 0)
: >  >>                 pci_write_config_dword(pdev, 0x40, val & 0xffff00ff);
: > 
: > 
: > I was waiting for a reply from Warner about whether or not this belonged 
: > in the driver or if the pci layer should be handling this.
: 
: If the comment is correct and the value is only lost due to 
: suspend/resume, this should already be covered by us saving/restoring 
: config registers although I believe we only save the normal registers 
: (first 64 bytes).  Since RETRY_TIMEOUT is beyond that range, it's 
: probably not currently saved.

Right.  RETRY_LIMIT isn't standard.

: In any case, I'd prefer we fix pci_cfg_save/restore() instead of doing 
: this in the driver.  Overall, it would be useful to analyze and improve 
: coverage of what values we save and restore from config space.  We 
: definitely need to cover type 1 and 2 (bridge) devices as well.

We shouldn't, since it is non-standard.  Type 1 can all be done in
pcib, and type 2 can be done in cbb.

Warner


More information about the freebsd-acpi mailing list