android_kernel_oneplus_msm8998/arch/powerpc/kernel
Gavin Shan 0118086d55 powerpc/eeh: Restore initial state in eeh_pe_reset_and_recover()
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>
2016-06-07 18:14:36 -07:00
..
vdso32 powerpc/vdso: Avoid link stack corruption in __get_datapage() 2015-10-01 16:52:02 +10:00
vdso64 powerpc/vdso: Avoid link stack corruption in __get_datapage() 2015-10-01 16:52:02 +10:00
.gitignore
align.c powerpc: Remove double braces in alignment code. 2014-11-10 09:59:32 +11:00
asm-offsets.c ARM: 2015-09-10 16:42:49 -07:00
audit.c
btext.c
cacheinfo.c powerpc: Fix missing L2 cache size in /sys/devices/system/cpu 2015-04-11 20:49:28 +10:00
cacheinfo.h
compat_audit.c
cpu_setup_6xx.S
cpu_setup_44x.S
cpu_setup_fsl_booke.S powerpc/booke: Restrict SPE exception handlers to e200/e500 cores 2014-09-22 10:11:31 +02:00
cpu_setup_pa6t.S
cpu_setup_power.S powerpc/book3s: Fix flush_tlb cpu_spec hook to take a generic argument. 2015-03-17 07:52:48 +11:00
cpu_setup_ppc970.S
cputable.c powerpc/tm: Abort syscalls in active transactions 2015-06-19 17:10:28 +10:00
crash.c powerpc/book3e/kdump: Enable crash_kexec_wait_realmode 2015-10-27 18:13:27 -05:00
crash_dump.c powerpc: Remove superfluous bootmem includes 2014-11-10 09:59:26 +11:00
dbell.c powerpc/powernv: Fixes for hypervisor doorbell handling 2015-03-20 14:51:53 +11:00
dma-iommu.c powerpc/iommu: Support "hybrid" iommu/direct DMA ops for coherent_mask < dma_mask 2015-07-13 10:10:55 +10:00
dma-swiotlb.c powerpc/iommu: Support "hybrid" iommu/direct DMA ops for coherent_mask < dma_mask 2015-07-13 10:10:55 +10:00
dma.c powerpc/dma: dma_set_coherent_mask() should not be GPL only 2015-10-28 14:20:50 +09:00
eeh.c Revert "powerpc/eeh: Fix crash in eeh_add_device_early() on Cell" 2016-06-07 18:14:35 -07:00
eeh_cache.c powerpc/eeh: fix start/end/flags type in struct pci_io_addr_range{} 2015-05-13 14:00:07 +10:00
eeh_dev.c powerpc/eeh: Create eeh_dev from pci_dn instead of device_node 2015-03-24 13:15:51 +11:00
eeh_driver.c powerpc/eeh: Restore initial state in eeh_pe_reset_and_recover() 2016-06-07 18:14:36 -07:00
eeh_event.c powerpc/powernv: Fix killed EEH event 2014-06-11 17:04:33 +10:00
eeh_pe.c powerpc/eeh: Fix stale cached primary bus 2016-02-25 12:01:18 -08:00
eeh_sysfs.c powerpc/eeh: Fix PE state format 2014-11-27 09:32:58 +11:00
entry_32.S powerpc/kernel: Change the do_syscall_trace_enter() API 2015-07-29 11:56:11 +10:00
entry_64.S powerpc/kernel: Change the do_syscall_trace_enter() API 2015-07-29 11:56:11 +10:00
epapr_hcalls.S
epapr_paravirt.c Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc 2014-06-10 18:54:22 -07:00
exceptions-64e.S powerpc/book3e: support CONFIG_RELOCATABLE 2015-10-27 18:13:27 -05:00
exceptions-64s.S powerpc/book3s64: Fix branching to OOL handlers in relocatable kernel 2016-06-07 18:14:35 -07:00
fadump.c powerpc/fadump: Fix endianess issues in firmware assisted dump handling 2014-10-30 16:52:46 +11:00
firmware.c
fpu.S
fsl_booke_entry_mapping.S powerpc/fsl: Force coherent memory on e500mc derivatives 2015-08-07 23:00:01 -05:00
ftrace.c powerpc updates for 3.19 2014-12-11 17:48:14 -08:00
head_8xx.S powerpc/8xx: Implementation of PAGE_EXEC 2015-06-02 21:37:28 -05:00
head_32.S
head_40x.S powerpc: Remove check for CONFIG_SERIAL_TEXT_DEBUG 2014-06-11 16:31:21 +10:00
head_44x.S powerpc/ppc476: Disable BTAC 2014-08-13 15:13:42 +10:00
head_64.S powerpc/book3e: support CONFIG_RELOCATABLE 2015-10-27 18:13:27 -05:00
head_booke.h
head_fsl_booke.S powerpc/booke: Revert SPE/AltiVec common defines for interrupt numbers 2014-09-22 10:11:31 +02:00
hw_breakpoint.c powerpc: Replace __get_cpu_var uses 2014-11-03 12:12:32 +11:00
ibmebus.c powerpc: make of_device_ids const 2014-09-25 23:14:46 +10:00
idle.c
idle_6xx.S
idle_book3e.S powerpc: No need to use dot symbols when branching to a function 2014-04-23 10:05:16 +10:00
idle_e500.S powerpc/e500mc: Remove dead L2 flushing code in idle_e500.S 2015-06-02 21:37:19 -05:00
idle_power4.S powerpc: No need to use dot symbols when branching to a function 2014-04-23 10:05:16 +10:00
idle_power7.S powerpc/powernv: Fix race in updating core_idle_state 2015-07-07 10:16:52 +10:00
io-workarounds.c powerpc/mm: Differentiate between hugetlb and THP during page walk 2015-10-12 15:30:09 +11:00
io.c
iomap.c powerpc/kerenl: Enable EEH for IO accessors 2014-06-24 12:43:13 +10:00
iommu.c powerpc/iommu/powernv: Release replaced TCE 2015-06-11 15:16:49 +10:00
irq.c powerpc, irq: Use access helper irq_data_get_affinity_mask() 2015-09-15 17:06:28 +02:00
isa-bridge.c
jump_label.c jump_label: Rename JUMP_LABEL_{EN,DIS}ABLE to JUMP_LABEL_{JMP,NOP} 2015-08-03 11:34:12 +02:00
kgdb.c powerpc: Replace __get_cpu_var uses 2014-11-03 12:12:32 +11:00
kprobes.c powerpc: Replace __get_cpu_var uses 2014-11-03 12:12:32 +11:00
kvm.c powerpc: Remove redundant breaks 2015-08-06 15:10:20 +10:00
kvm_emul.S
l2cr_6xx.S
legacy_serial.c powerpc: make of_device_ids const 2014-09-25 23:14:46 +10:00
machine_kexec.c
machine_kexec_32.c
machine_kexec_64.c powerpc/book3e-64: Enable kexec 2015-10-27 18:13:30 -05:00
Makefile powerpc/ftrace: add powerpc timebase as a trace clock source 2015-08-06 16:36:23 +10:00
mce.c powerpc/mce: fix off by one errors in mce event handling 2015-05-12 19:44:01 +10:00
mce_power.c powerpc/book3s: Fix flush_tlb cpu_spec hook to take a generic argument. 2015-03-17 07:52:48 +11:00
misc.S powerpc: Rename __get_SP() to current_stack_pointer() 2014-10-15 11:23:20 +11:00
misc_32.S atomic: Collapse all atomic_{set,clear}_mask definitions 2015-07-27 14:06:24 +02:00
misc_64.S powerpc/book3e-64: Enable kexec 2015-10-27 18:13:30 -05:00
module.c
module_32.c powerpc: Use pr_fmt in module loader code 2014-10-02 17:33:54 +10:00
module_64.c powerpc: Fix dedotify for binutils >= 2.26 2016-03-16 08:43:00 -07:00
msi.c powerpc: Remove MSI-related PCI controller ops from ppc_md 2015-06-02 11:47:45 +10:00
nvram_64.c powerpc/nvram: Fix function name in some errors messages. 2015-10-02 22:55:05 +10:00
of_platform.c powerpc/eeh: Do probe on pci_dn 2015-03-24 13:15:52 +11:00
paca.c powerpc/book3e-64: Don't limit paca to 256 MiB 2015-10-27 18:13:28 -05:00
pci-common.c powerpc/pci: export pcibios_free_controller() 2015-10-15 20:31:57 +11:00
pci-hotplug.c powerpc/pci: Add release_device() hook to phb ops 2015-06-03 13:27:15 +10:00
pci_32.c powerpc: Remove more traces of bootmem 2014-11-19 21:41:51 +11:00
pci_64.c powerpc updates for 3.19 2014-12-11 17:48:14 -08:00
pci_dn.c powerpc/powernv: Shift VF resource with an offset 2015-03-31 13:02:38 +11:00
pci_of_scan.c libnvdimm for 4.3: 2015-09-08 14:35:59 -07:00
pmc.c
ppc32.h
ppc_ksyms.c powerpc: Rename __get_SP() to current_stack_pointer() 2014-10-15 11:23:20 +11:00
ppc_ksyms_32.c powerpc: Separate ppc32 symbol exports into ppc_ksyms_32.c 2014-09-25 23:14:40 +10:00
ppc_save_regs.S
proc_powerpc.c
process.c Revert: "powerpc/tm: Check for already reclaimed tasks" 2016-05-11 11:21:09 +02:00
prom.c powerpc: Update TM user feature bits in scan_features() 2016-05-04 14:48:44 -07:00
prom_init.c vTPM: get the buffer allocated for event log instead of the actual log 2015-10-19 01:01:23 +02:00
prom_init_check.sh powerpc: Simplify symbol check in prom_init_check.sh 2014-09-25 23:14:46 +10:00
prom_parse.c
ptrace.c powerpc/kernel: Enable seccomp filter 2015-07-30 14:34:44 +10:00
ptrace32.c
reloc_32.S
reloc_64.S powerpc: Align p_dyn, p_rela and p_st symbols 2014-03-07 13:50:19 +11:00
rtas-proc.c powerpc: LLVM complains about forward declaration of struct rtas_sensors 2014-11-10 09:59:32 +11:00
rtas-rtc.c
rtas.c powerpc/rtas: Validate rtas.entry before calling enter_rtas() 2015-10-22 11:03:25 +11:00
rtas_flash.c powerpc: Fix endianness of flash_block_list in rtas_flash 2014-07-28 11:30:54 +10:00
rtas_pci.c powerpc: move find_and_init_phbs() to pSeries specific code 2015-04-11 20:49:09 +10:00
rtasd.c powerpc: Make a bunch of things static 2014-09-25 23:14:41 +10:00
setup-common.c powerpc: Convert power off logic to pm_power_off 2014-11-03 12:12:51 +11:00
setup_32.c powerpc32: memset: only use dcbz once cache is enabled 2015-09-17 10:36:53 +10:00
setup_64.c powerpc/book3e-64/kexec: Enable SMP release 2015-10-27 18:13:29 -05:00
signal.c powerpc: Use sigsp() 2014-08-06 13:04:32 +02:00
signal.h powerpc: Use get_signal() signal_setup_done() 2014-08-06 13:03:09 +02:00
signal_32.c powerpc/tm: Block signal return setting invalid MSR state 2015-11-23 20:06:31 +11:00
signal_64.c powerpc/tm: Block signal return setting invalid MSR state 2015-11-23 20:06:31 +11:00
smp-tbsync.c
smp.c powerpc/smp: Wait until secondaries are active & online 2015-03-04 13:19:33 +11:00
stacktrace.c powerpc: Rename __get_SP() to current_stack_pointer() 2014-10-15 11:23:20 +11:00
suspend.c nosave: consolidate __nosave_{begin,end} in <asm/sections.h> 2014-10-09 22:26:04 -04:00
swsusp.c
swsusp_32.S
swsusp_64.c
swsusp_asm64.S
swsusp_booke.S
sys_ppc32.c
syscalls.c powerpc: Add a proper syscall for switching endianness 2015-03-28 22:03:40 +11:00
sysfs.c powerpc/dscr: Add some in-code documentation 2015-06-07 19:29:15 +10:00
systbl.S powerpc: Add a proper syscall for switching endianness 2015-03-28 22:03:40 +11:00
systbl_chk.c powerpc: Add a proper syscall for switching endianness 2015-03-28 22:03:40 +11:00
systbl_chk.sh
tau_6xx.c
time.c powerpc/time: Migrate to new 'set-state' interface 2015-08-10 11:41:02 +02:00
tm.S powerpc/kernel: Rename PACA_DSCR to PACA_DSCR_DEFAULT 2015-06-07 19:29:00 +10:00
trace_clock.c powerpc/ftrace: add powerpc timebase as a trace clock source 2015-08-06 16:36:23 +10:00
traps.c powerpc: Set the correct kernel taint on machine check errors. 2015-07-06 20:24:35 +10:00
udbg.c powerpc: Remove the celleb support 2015-04-07 17:15:13 +10:00
udbg_16550.c powerpc: Fix bad NULL pointer check in udbg_uart_getc_poll() 2014-11-12 13:47:20 +11:00
uprobes.c
vdso.c powerpc/vdso: Disable building the 32-bit VDSO on little endian 2015-05-11 20:01:02 +10:00
vecemu.c
vector.S powerpc: Change vrX register defines to vX to match gcc and glibc 2015-03-16 18:32:11 +11:00
vio.c powerpc: use for_each_sg() 2015-06-24 17:49:38 -07:00
vmlinux.lds.S powerpc: discard .exit.data at runtime 2015-10-15 20:31:59 +11:00