Anything that calls pci_restore_state() on my PCI1211 cardbus bridge results in strange behaviour. Firstly, the next couple of kernel messages appear but are missing every other character - blank spaces are inserted instead. Secondly, the machine then hangs. Presumably simply restoring the contents of all the PCI registers after S3 causes unpleasant side-effects.
Still present in 2.6.10. If I comment out pci_restore_state in yenta_socket's resume function, the machine resumes successfully. I then need to do the following: setpci -s 0a.0 8c.b=72,12,2c,01 setpci -s 0a.0 80.b=60,f0,64,00 setpci -s 0a.0 90.b=c0,82,64,61 at which point modprobing yenta_socket will work and I can use PCMCIA correctly.
The failure only occurs when register 3e (part of the bridge control register) is written. If I hack the resume function to avoid this register being written, the system resumes. I still need to call the setpci functions mentioned previously, though.
This seems to be because the config_readl() calls in ti_save_state are returning 0xffffffff rather than any useful values. The same calls in the init code work fine. I have absolutely no idea what might be going on here - lspci works fine immediately before the suspend and happily shows me the registers.
Is this still a problem in 2.6.14?
Could you verify whether this problem still exists in 2.6.15?
Could you verify whether this problem still exists in 2.6.16, please?
Please reopen this bug if it's still present in kernel 2.6.17.