]> git.proxmox.com Git - mirror_ubuntu-zesty-kernel.git/commit
powerpc/eeh: Restore initial state in eeh_pe_reset_and_recover()
authorGavin Shan <gwshan@linux.vnet.ibm.com>
Wed, 27 Apr 2016 01:14:51 +0000 (11:14 +1000)
committerKamal Mostafa <kamal@canonical.com>
Fri, 10 Jun 2016 13:32:25 +0000 (06:32 -0700)
commitac1f807e2aff53b73c612441120534e4166277a0
tree136d793129eebd9a2308116ebc39e0a7534608cf
parent5d76e017c98bbc91fd148d63fd52e1c43f85f97b
powerpc/eeh: Restore initial state in eeh_pe_reset_and_recover()

BugLink: http://bugs.launchpad.net/bugs/1590455
commit 5a0cdbfd17b90a89c64a71d8aec9773ecdb20d0d upstream.

The function eeh_pe_reset_and_recover() is used to recover EEH
error when the passthrou device are transferred to guest and
backwards. The content in the device's config space will be lost
on PE reset issued in the middle of the recovery. The function
saves/restores it before/after the reset. However, config access
to some adapters like Broadcom BCM5719 at this point will causes
fenced PHB. The config space is always blocked and we save 0xFF's
that are restored at late point. The memory BARs are totally
corrupted, causing another EEH error upon access to one of the
memory BARs.

This restores the config space on those adapters like BCM5719
from the content saved to the EEH device when it's populated,
to resolve above issue.

Fixes: 5cfb20b9 ("powerpc/eeh: Emulate EEH recovery for VFIO devices")
Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
Reviewed-by: Russell Currey <ruscur@russell.cc>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Tim Gardner <tim.gardner@canonical.com>
Signed-off-by: Kamal Mostafa <kamal@canonical.com>
arch/powerpc/kernel/eeh_driver.c