From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ozlabs.ru (unknown [107.173.13.209]) by lists.ozlabs.org (Postfix) with ESMTP id 41VBVt1r6jzF3Hj for ; Tue, 17 Jul 2018 17:19:50 +1000 (AEST) From: Alexey Kardashevskiy To: linuxppc-dev@lists.ozlabs.org Cc: Alexey Kardashevskiy , David Gibson , kvm-ppc@vger.kernel.org, "Aneesh Kumar K.V" , Alex Williamson , Michael Ellerman , Nicholas Piggin , Paul Mackerras Subject: [PATCH kernel v7 0/2] KVM: PPC: Check if IOMMU page is contained in the pinned physical page Date: Tue, 17 Jul 2018 17:19:11 +1000 Message-Id: <20180717071913.2167-1-aik@ozlabs.ru> List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , This is to improve page boundaries checking and should probably be cc:stable. I came accross this while debugging nvlink2 passthrough but the lack of checking might be exploited by the existing userspace. The get_user_pages() comment says it should be "phased out" but the only alternative seems to be get_user_pages_longterm(), should that be used instead (this is longterm reference elevation, however it is not DAX, whatever this implies)? get_user_pages_remote() seems unnecessarily complicated because of @locked. Changes: v7: * 2/2: do not fail if pte is not found, fall back to the default case instead v6: * 2/2: read pageshift from pte v5: * 2/2: changed compound pages handling v4: * 2/2: implemented less strict but still safe max pageshift as David suggested v3: * enforced huge pages not to cross preregistered chunk boundaries v2: * 2/2: explicitly check for compound pages before calling compound_order() This is based on sha1 9d3cce1 Linus Torvalds "Linux 4.18-rc5". Please comment. Thanks. Alexey Kardashevskiy (2): vfio/spapr: Use IOMMU pageshift rather than pagesize KVM: PPC: Check if IOMMU page is contained in the pinned physical page arch/powerpc/include/asm/mmu_context.h | 4 ++-- arch/powerpc/kvm/book3s_64_vio.c | 2 +- arch/powerpc/kvm/book3s_64_vio_hv.c | 6 ++++-- arch/powerpc/mm/mmu_context_iommu.c | 37 ++++++++++++++++++++++++++++++++-- drivers/vfio/vfio_iommu_spapr_tce.c | 10 ++++----- 5 files changed, 47 insertions(+), 12 deletions(-) -- 2.11.0 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alexey Kardashevskiy Date: Tue, 17 Jul 2018 07:19:11 +0000 Subject: [PATCH kernel v7 0/2] KVM: PPC: Check if IOMMU page is contained in the pinned physical page Message-Id: <20180717071913.2167-1-aik@ozlabs.ru> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: linuxppc-dev@lists.ozlabs.org Cc: Alexey Kardashevskiy , David Gibson , kvm-ppc@vger.kernel.org, "Aneesh Kumar K.V" , Alex Williamson , Michael Ellerman , Nicholas Piggin , Paul Mackerras This is to improve page boundaries checking and should probably be cc:stable. I came accross this while debugging nvlink2 passthrough but the lack of checking might be exploited by the existing userspace. The get_user_pages() comment says it should be "phased out" but the only alternative seems to be get_user_pages_longterm(), should that be used instead (this is longterm reference elevation, however it is not DAX, whatever this implies)? get_user_pages_remote() seems unnecessarily complicated because of @locked. Changes: v7: * 2/2: do not fail if pte is not found, fall back to the default case instead v6: * 2/2: read pageshift from pte v5: * 2/2: changed compound pages handling v4: * 2/2: implemented less strict but still safe max pageshift as David suggested v3: * enforced huge pages not to cross preregistered chunk boundaries v2: * 2/2: explicitly check for compound pages before calling compound_order() This is based on sha1 9d3cce1 Linus Torvalds "Linux 4.18-rc5". Please comment. Thanks. Alexey Kardashevskiy (2): vfio/spapr: Use IOMMU pageshift rather than pagesize KVM: PPC: Check if IOMMU page is contained in the pinned physical page arch/powerpc/include/asm/mmu_context.h | 4 ++-- arch/powerpc/kvm/book3s_64_vio.c | 2 +- arch/powerpc/kvm/book3s_64_vio_hv.c | 6 ++++-- arch/powerpc/mm/mmu_context_iommu.c | 37 ++++++++++++++++++++++++++++++++-- drivers/vfio/vfio_iommu_spapr_tce.c | 10 ++++----- 5 files changed, 47 insertions(+), 12 deletions(-) -- 2.11.0