|
@@ -686,6 +686,15 @@ void eeh_save_bars(struct eeh_dev *edev)
|
|
|
|
|
|
for (i = 0; i < 16; i++)
|
|
|
eeh_ops->read_config(dn, i * 4, 4, &edev->config_space[i]);
|
|
|
+
|
|
|
+ /*
|
|
|
+ * For PCI bridges including root port, we need enable bus
|
|
|
+ * master explicitly. Otherwise, it can't fetch IODA table
|
|
|
+ * entries correctly. So we cache the bit in advance so that
|
|
|
+ * we can restore it after reset, either PHB range or PE range.
|
|
|
+ */
|
|
|
+ if (edev->mode & EEH_DEV_BRIDGE)
|
|
|
+ edev->config_space[1] |= PCI_COMMAND_MASTER;
|
|
|
}
|
|
|
|
|
|
/**
|