lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [day] [month] [year] [list]
Date:	Mon, 07 May 2007 09:30:23 +0200
From:	Bjørn Mork <bjorn@...k.no>
To:	netdev@...r.kernel.org
Subject: [PATCH] 3Com PCI 3c905 causes annoying pci_set_power_state() messages

[previously posted to linux-net@...r.kernel.org, but resent here after a
helpful hint that this is the proper list for such messages.  Thanks]

I don't know if this is the correct place for 3c59x bugs.  Couldn't find
a maintainer entry for it.  Please redirect as appropriate.

pci_set_power_state() is a bit weird, causing a failure if a device
doesn't support PM and the driver tries to

 1) save it's power_state, 
 2) wake up and do something, and 
 3) then reset to the saved state.

The 3c59x driver does this in it's ioctl function.


pci_set_power_state() will never set current_state for such devices,
causing them to remain in PCI_UNKNOWN (5) forever.  But if you try to
set the state to PCI_UNKNOWN, bounding will kick in, limiting the state
to PCI_D3hot (3).  Then pci_set_power_state() will complain because 
PCI_D3hot < current_state, printing useless messages like this:

 pci_set_power_state(): 0000:00:09.0: state=3, current state=5
 pci_set_power_state(): 0000:00:09.0: state=3, current state=5

and returning -EINVAL.

I believe this is wrong because pci_set_power_state() is supposed to
return -EIO if device does not support PCI PM.

But the drivers should probably also take care, not to call 
pci_set_power_state() requesting PCI_UNKNOWN as the new state.
The attached patch against 2.6.21.1 fixes this for 3c905.


Bjørn


View attachment "linux-2.6.21.1.3c59x.c.diff" of type "text/x-diff" (426 bytes)

Powered by blists - more mailing lists