On Wed, 4 Jul 2018 16:13:43 +1000 Alexey Kardashevskiy <aik@xxxxxxxxx> wrote: > This patchset aims to reduce actual memory use for guests with > sparse memory. The pseries guest uses dynamic DMA windows to map > the entire guest RAM but it only actually maps onlined memory > which may be not be contiguous. I hit this when tried passing > through NVLink2-connected GPU RAM of NVIDIA V100 and trying to > map this RAM at the same offset as in the real hardware > forced me to rework I handle these windows. > > This moves userspace-to-host-physical translation table > (iommu_table::it_userspace) from VFIO TCE IOMMU subdriver to > the platform code and reuses the already existing multilevel > TCE table code which we have for the hardware tables. > At last in 6/6 I switch to on-demand allocation so we do not > allocate huge chunks of the table if we do not have to; > there is some math in 6/6. > > Changes: > v3: > * rebased on v4.18-rc3 and fixed compile error in 6/6 > > v2: > * bugfix and error handling in 6/6 > > > This is based on sha1 > 021c917 Linus Torvalds "Linux 4.18-rc3". > > Please comment. Thanks. Ping? > > > > Alexey Kardashevskiy (6): > powerpc/powernv: Remove useless wrapper > powerpc/powernv: Move TCE manupulation code to its own file > KVM: PPC: Make iommu_table::it_userspace big endian > powerpc/powernv: Add indirect levels to it_userspace > powerpc/powernv: Rework TCE level allocation > powerpc/powernv/ioda: Allocate indirect TCE levels on demand > > arch/powerpc/platforms/powernv/Makefile | 2 +- > arch/powerpc/include/asm/iommu.h | 11 +- > arch/powerpc/platforms/powernv/pci.h | 44 ++- > arch/powerpc/kvm/book3s_64_vio.c | 11 +- > arch/powerpc/kvm/book3s_64_vio_hv.c | 18 +- > arch/powerpc/platforms/powernv/pci-ioda-tce.c | 399 ++++++++++++++++++++++++++ > arch/powerpc/platforms/powernv/pci-ioda.c | 184 ++---------- > arch/powerpc/platforms/powernv/pci.c | 158 ---------- > drivers/vfio/vfio_iommu_spapr_tce.c | 65 +---- > 9 files changed, 478 insertions(+), 414 deletions(-) > create mode 100644 arch/powerpc/platforms/powernv/pci-ioda-tce.c -- Alexey