linux/arch/powerpc/platforms
Alexey Kardashevskiy d41ce7b1bc powerpc/powernv/npu: Do not try invalidating 32bit table when 64bit table is enabled
GPUs and the corresponding NVLink bridges get different PEs as they
have separate translation validation entries (TVEs). We put these PEs
to the same IOMMU group so they cannot be passed through separately.
So the iommu_table_group_ops::set_window/unset_window for GPUs do set
tables to the NPU PEs as well which means that iommu_table's list of
attached PEs (iommu_table_group_link) has both GPU and NPU PEs linked.
This list is used for TCE cache invalidation.

The problem is that NPU PE has just a single TVE and can be programmed
to point to 32bit or 64bit windows while GPU PE has two (as any other
PCI device). So we end up having an 32bit iommu_table struct linked to
both PEs even though only the 64bit TCE table cache can be invalidated
on NPU. And a relatively recent skiboot detects this and prints
errors.

This changes GPU's iommu_table_group_ops::set_window/unset_window to
make sure that NPU PE is only linked to the table actually used by the
hardware. If there are two tables used by an IOMMU group, the NPU PE
will use the last programmed one which with the current use scenarios
is expected to be a 64bit one.

Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
2018-03-27 23:44:57 +11:00
..
4xx powerpc: Use sizeof(*foo) rather than sizeof(struct foo) 2018-03-20 16:47:53 +11:00
8xx powerpc/8xx: fix cpm_cascade() dual end of interrupt 2018-03-13 15:50:28 +11:00
40x License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
44x powerpc/44x/fsp2: Add irq error handlers 2017-12-11 13:03:34 +11:00
52xx powerpc/mpc52xx_gpt: make use of raw_spinlock variants 2018-01-27 21:12:04 +11:00
82xx License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
83xx powerpc: Use octal numbers for file permissions 2018-01-22 05:48:33 +11:00
85xx powerpc: Use pr_warn instead of pr_warning 2017-12-04 11:54:34 +11:00
86xx powerpc: Use pr_warn instead of pr_warning 2017-12-04 11:54:34 +11:00
512x powerpc: Use pr_warn instead of pr_warning 2017-12-04 11:54:34 +11:00
amigaone License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
cell powerpc: Use sizeof(*foo) rather than sizeof(struct foo) 2018-03-20 16:47:53 +11:00
chrp License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
embedded6xx powerpc/embedded6xx: Make functions flipper_pic_init() & ug_udbg_putc() static 2018-03-13 15:50:34 +11:00
maple powerpc: Set I/O port resource types correctly 2017-12-18 23:07:45 -06:00
pasemi powerpc updates for 4.16 2018-02-02 10:01:04 -08:00
powermac powerpc: Use sizeof(*foo) rather than sizeof(struct foo) 2018-03-20 16:47:53 +11:00
powernv powerpc/powernv/npu: Do not try invalidating 32bit table when 64bit table is enabled 2018-03-27 23:44:57 +11:00
ps3 powerpc: Use sizeof(*foo) rather than sizeof(struct foo) 2018-03-20 16:47:53 +11:00
pseries powerpc/lpar/debug: Initialize flags before printing debug message 2018-03-27 23:44:56 +11:00
fsl_uli1575.c
Kconfig powerpc/cell: Remove axonram driver 2018-01-28 17:00:36 +11:00
Kconfig.cputype powerpc/mm/slice: Fix hugepage allocation at hint address on 8xx 2018-03-06 09:21:23 +11:00
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00