Hello,

I have the same problem with KDE and knemo running. Problem will go away as 
soon as knemo is closed, but I want to keep it open and monitoring the 
network card. 

It also seems to be a problem special to the "3Com Corporation 3c905 100BaseTX 
[Boomerang]" card or its driver (which does not have any power-management 
capabilities at all) as I have the same card as in this post: 
https://bugzilla.novell.com/show_bug.cgi?id=227391. But the patch there did 
not help me - so I prepared my own against kernel version 2.6.18. It should 
now check the card capabilities before any other actions or checks:

--- a/drivers/pci/pci.c 2006-09-20 05:42:06.000000000 +0200
+++ b/drivers/pci/pci.c 2007-02-11 09:54:00.000000000 +0100
@@ -303,17 +303,6 @@
        if (state > PCI_D3hot)
                state = PCI_D3hot;
 
-       /* Validate current state:
-        * Can enter D0 from any state, but if we can only go deeper 
-        * to sleep if we're already in a low power state
-        */
-       if (state != PCI_D0 && dev->current_state > state) {
-               printk(KERN_ERR "%s(): %s: state=%d, current state=%d\n",
-                       __FUNCTION__, pci_name(dev), state, dev->current_state);
-               return -EINVAL;
-       } else if (dev->current_state == state)
-               return 0;        /* we're already there */
-
        /*
         * If the device or the parent bridge can't support PCI PM, ignore
         * the request if we're doing anything besides putting it into D0
@@ -337,6 +326,17 @@
                return -EIO;
        }
 
+       /* Validate current state:
+        * Can enter D0 from any state, but if we can only go deeper 
+        * to sleep if we're already in a low power state
+        */
+       if (state != PCI_D0 && dev->current_state > state) {
+               printk(KERN_ERR "%s(): %s: state=%d, current state=%d\n",
+                       __FUNCTION__, pci_name(dev), state, dev->current_state);
+               return -EINVAL;
+       } else if (dev->current_state == state)
+               return 0;        /* we're already there */
+
        /* check if this device supports the desired state */
        if (state == PCI_D1 && !(pmc & PCI_PM_CAP_D1))
                return -EIO;


This did help me, and I hope it will help in similiar cases too.

Regards,
T. Rupf


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED] 
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to