Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752329AbdLNDic (ORCPT ); Wed, 13 Dec 2017 22:38:32 -0500 Received: from mga17.intel.com ([192.55.52.151]:16142 "EHLO mga17.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752066AbdLNDib (ORCPT ); Wed, 13 Dec 2017 22:38:31 -0500 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.45,399,1508828400"; d="scan'208";a="186518162" Subject: Re: [PATCH 1/2] mm: Add kernel MMU notifier to manage IOTLB/DEVTLB To: Bob Liu , Thomas Gleixner , Ingo Molnar , "H . Peter Anvin" , Alex Williamson , Joerg Roedel , David Woodhouse References: <1513213366-22594-1-git-send-email-baolu.lu@linux.intel.com> <1513213366-22594-2-git-send-email-baolu.lu@linux.intel.com> Cc: Rik van Riel , Michal Hocko , Dave Jiang , Dave Hansen , x86@kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, iommu@lists.linux-foundation.org, Vegard Nossum , Andy Lutomirski , Huang Ying , Matthew Wilcox , Andrew Morton , "Paul E . McKenney" , "Kirill A . Shutemov" , Kees Cook , "xieyisheng (A)" From: Lu Baolu Message-ID: <5A31F232.90901@linux.intel.com> Date: Thu, 14 Dec 2017 11:38:26 +0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.5.1 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1439 Lines: 37 Hi, On 12/14/2017 11:10 AM, Bob Liu wrote: > On 2017/12/14 9:02, Lu Baolu wrote: >> > From: Huang Ying >> > >> > Shared Virtual Memory (SVM) allows a kernel memory mapping to be >> > shared between CPU and and a device which requested a supervisor >> > PASID. Both devices and IOMMU units have TLBs that cache entries >> > from CPU's page tables. We need to get a chance to flush them at >> > the same time when we flush the CPU TLBs. >> > >> > We already have an existing MMU notifiers for userspace updates, >> > however we lack the same thing for kernel page table updates. To > Sorry, I didn't get which situation need this notification. > Could you please describe the full scenario? Okay. 1. When an SVM capable driver calls intel_svm_bind_mm() with SVM_FLAG_SUPERVISOR_MODE set in the @flags, the kernel memory page mappings will be shared between CPUs and the DMA remapping agent (a.k.a. IOMMU). The page table entries will also be cached in both IOTLB (located in IOMMU) and the DEVTLB (located in device). 2. When vmalloc/vfree interfaces are called, the page mappings for kernel memory might get changed. And current code calls flush_tlb_kernel_range() to flush CPU TLBs only. The IOTLB or DevTLB will be stale compared to that on the cpu for kernel mappings. We need a kernel mmu notification to flush TLBs in IOMMU and devices as well. Best regards, Lu Baolu