powerpc/powernv/ioda: Allocate indirect TCE levels of cached userspace addresses...
authorAlexey Kardashevskiy <aik@ozlabs.ru>
Fri, 28 Sep 2018 06:45:39 +0000 (16:45 +1000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 12 Feb 2019 18:47:14 +0000 (19:47 +0100)
[ Upstream commit bdbf649efe21173cae63b4b71db84176420f9039 ]

The powernv platform maintains 2 TCE tables for VFIO - a hardware TCE
table and a table with userspace addresses; the latter is used for
marking pages dirty when corresponging TCEs are unmapped from
the hardware table.

a68bd1267b72 ("powerpc/powernv/ioda: Allocate indirect TCE levels
on demand") enabled on-demand allocation of the hardware table,
however it missed the other table so it has still been fully allocated
at the boot time. This fixes the issue by allocating a single level,
just like we do for the hardware table.

Fixes: a68bd1267b72 ("powerpc/powernv/ioda: Allocate indirect TCE levels on demand")
Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Sasha Levin <sashal@kernel.org>
arch/powerpc/platforms/powernv/pci-ioda-tce.c

index fe96910..7639b21 100644 (file)
@@ -299,7 +299,7 @@ long pnv_pci_ioda2_table_alloc_pages(int nid, __u64 bus_offset,
        if (alloc_userspace_copy) {
                offset = 0;
                uas = pnv_pci_ioda2_table_do_alloc_pages(nid, level_shift,
-                               levels, tce_table_size, &offset,
+                               tmplevels, tce_table_size, &offset,
                                &total_allocated_uas);
                if (!uas)
                        goto free_tces_exit;