diff options
Diffstat (limited to 'arch/powerpc/kernel/eeh.c')
-rw-r--r-- | arch/powerpc/kernel/eeh.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/arch/powerpc/kernel/eeh.c b/arch/powerpc/kernel/eeh.c index 671302065347..4bd687d5e7aa 100644 --- a/arch/powerpc/kernel/eeh.c +++ b/arch/powerpc/kernel/eeh.c | |||
@@ -686,6 +686,15 @@ void eeh_save_bars(struct eeh_dev *edev) | |||
686 | 686 | ||
687 | for (i = 0; i < 16; i++) | 687 | for (i = 0; i < 16; i++) |
688 | eeh_ops->read_config(dn, i * 4, 4, &edev->config_space[i]); | 688 | eeh_ops->read_config(dn, i * 4, 4, &edev->config_space[i]); |
689 | |||
690 | /* | ||
691 | * For PCI bridges including root port, we need enable bus | ||
692 | * master explicitly. Otherwise, it can't fetch IODA table | ||
693 | * entries correctly. So we cache the bit in advance so that | ||
694 | * we can restore it after reset, either PHB range or PE range. | ||
695 | */ | ||
696 | if (edev->mode & EEH_DEV_BRIDGE) | ||
697 | edev->config_space[1] |= PCI_COMMAND_MASTER; | ||
689 | } | 698 | } |
690 | 699 | ||
691 | /** | 700 | /** |