{
        int i;
        u32 val;
+       int tries;
 
        if (!dev->state_saved)
                return;
         */
        for (i = 15; i >= 0; i--) {
                pci_read_config_dword(dev, i * 4, &val);
-               if (val != dev->saved_config_space[i]) {
+               tries = 10;             
+               while (tries && val != dev->saved_config_space[i]) {
                        dev_dbg(&dev->dev, "restoring config "
                                "space at offset %#x (was %#x, writing %#x)\n",
                                i, val, (int)dev->saved_config_space[i]);
                        pci_write_config_dword(dev,i * 4,
                                dev->saved_config_space[i]);
+                       pci_read_config_dword(dev, i * 4, &val);
+                       mdelay(10);
+                       tries--;
                }
        }
        pci_restore_pcix_state(dev);