From mboxrd@z Thu Jan 1 00:00:00 1970 From: Joerg Roedel Subject: [PATCH 1/3] mmu_notifier: Add mmu_notifier_invalidate_range() Date: Tue, 28 Oct 2014 18:13:58 +0100 Message-ID: <1414516440-910-2-git-send-email-joro@8bytes.org> References: <1414516440-910-1-git-send-email-joro@8bytes.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1414516440-910-1-git-send-email-joro-zLv9SwRftAIdnm+yROfE0A@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: iommu-bounces-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org Errors-To: iommu-bounces-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org To: Andrew Morton , Andrea Arcangeli , Peter Zijlstra , Rik van Riel , Hugh Dickins , Mel Gorman , Johannes Weiner Cc: Jay.Cornwall-5C7GfCeVMHo@public.gmane.org, John.Bridgman-5C7GfCeVMHo@public.gmane.org, jroedel-l3A5Bk7waGM@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-mm-Bw31MaZKKs3YtjvyW6yDsg@public.gmane.org, Jerome Glisse , iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org, Jesse Barnes , David Woodhouse , ben.sander-5C7GfCeVMHo@public.gmane.org List-Id: iommu@lists.linux-foundation.org RnJvbTogSm9lcmcgUm9lZGVsIDxqcm9lZGVsQHN1c2UuZGU+CgpUaGlzIG5vdGlmaWVyIGNsb3Nl cyBhbiBpbXBvcnRhbnQgZ2FwIGluIHRoZSBjdXJyZW50Cm1tdV9ub3RpZmllciBpbXBsZW1lbnRh dGlvbiwgdGhlIGV4aXN0aW5nIGNhbGwtYmFja3MgYXJlCmNhbGxlZCB0b28gZWFybHkgb3IgdG9v IGxhdGUgdG8gcmVsaWFibHkgbWFuYWdlIGEgbm9uLUNQVQpUTEIuICBTcGVjaWZpY2FsbHksIGlu dmFsaWRhdGVfcmFuZ2Vfc3RhcnQoKSBpcyBjYWxsZWQgd2hlbgphbGwgcGFnZXMgYXJlIHN0aWxs IG1hcHBlZCBhbmQgaW52YWxpZGF0ZV9yYW5nZV9lbmQoKSB3aGVuCmFsbCBwYWdlcyBhcmUgdW5t YXBwZWQgYW5kIHBvdGVudGlhbGx5IGZyZWVkLgoKVGhpcyBpcyBmaW5lIHdoZW4gdGhlIHVzZXJz IG9mIHRoZSBtbXVfbm90aWZpZXJzIG1hbmFnZQp0aGVpciBvd24gU29mdFRMQiwgbGlrZSBLVk0g ZG9lcy4gV2hlbiB0aGUgVExCIGlzIG1hbmFnZWQgaW4Kc29mdHdhcmUgaXQgaXMgZWFzeSB0byB3 aXBlIG91dCBlbnRyaWVzIGZvciBhIGdpdmVuIHJhbmdlCmFuZCBwcmV2ZW50IG5ldyBlbnRyaWVz IHRvIGJlIGVzdGFibGlzaGVkIHVudGlsCmludmFsaWRhdGVfcmFuZ2VfZW5kIGlzIGNhbGxlZC4K CkJ1dCB3aGVuIHRoZSB1c2VyIG9mIG1tdV9ub3RpZmllcnMgaGFzIHRvIG1hbmFnZSBhIGhhcmR3 YXJlClRMQiBpdCBjYW4gc3RpbGwgd2lwZSBvdXQgVExCIGVudHJpZXMgaW4KaW52YWxpZGF0ZV9y YW5nZV9zdGFydCwgYnV0IGl0IGNhbid0IG1ha2Ugc3VyZSB0aGF0IG5vIG5ldwpUTEIgZW50cmll cyBpbiB0aGUgZ2l2ZW4gcmFuZ2UgYXJlIGVzdGFibGlzaGVkIGJldHdlZW4KaW52YWxpZGF0ZV9y YW5nZV9zdGFydCBhbmQgaW52YWxpZGF0ZV9yYW5nZV9lbmQuCgpUbyBhdm9pZCBzaWxlbnQgZGF0 YSBjb3JydXB0aW9uIHRoZSBlbnRyaWVzIGluIHRoZSBub24tQ1BVClRMQiBuZWVkIHRvIGJlIGZs dXNoZWQgd2hlbiB0aGUgcGFnZXMgYXJlIHVubWFwcGVkIChhdCB0aGlzCnBvaW50IGluIHRpbWUg bm8gX25ld18gVExCIGVudHJpZXMgY2FuIGJlIGVzdGFibGlzaGVkIGluIHRoZQpub24tQ1BVIFRM QikgYnV0IG5vdCB5ZXQgZnJlZWQgKGFzIHRoZSBub24tQ1BVIFRMQiBtYXkgc3RpbGwKaGF2ZSBf ZXhpc3RpbmdfIGVudHJpZXMgcG9pbnRpbmcgdG8gdGhlIHBhZ2VzIGFib3V0IHRvIGJlCmZyZWVk KS4KClRvIGZpeCB0aGlzIHByb2JsZW0gd2UgbmVlZCB0byBjYXRjaCB0aGUgbW9tZW50IHdoZW4g dGhlCkxpbnV4IFZNTSBmbHVzaGVzIHJlbW90ZSBUTEJzIChhcyBhIG5vbi1DUFUgVExCIGlzIG5v dCB2ZXJ5CmRpZmZlcmVudCBpbiBpdHMgZmx1c2hpbmcgcmVxdWlyZW1lbnRzIGZyb20gYW55IG90 aGVyIHJlbW90ZQpDUFUgVExCKSwgYXMgdGhpcyBpcyB0aGUgcG9pbnQgaW4gdGltZSB3aGVuIHRo ZSBwYWdlcyBhcmUKdW5tYXBwZWQgYnV0IF9ub3RfIHlldCBmcmVlZC4KClRoZSBtbXVfbm90aWZp ZXJfaW52YWxpZGF0ZV9yYW5nZSgpIGZ1bmN0aW9uIGFpbXMgdG8gY2F0Y2gKdGhhdCBtb21lbnQu CgpJT01NVSBjb2RlIHdpbGwgYmUgb25lIHVzZXIgb2YgdGhlIG5vdGlmaWVyLWNhbGxiYWNrLgpD dXJyZW50bHkgdGhpcyBpcyBvbmx5IHRoZSBBTUQgSU9NTVV2MiBkcml2ZXIsIGJ1dCBpdHMgY29k ZQppcyBhYm91dCB0byBiZSBtb3JlIGdlbmVyYWxpemVkIGFuZCBjb252ZXJ0ZWQgdG8gYSBnZW5l cmljCklPTU1VLUFQSSBleHRlbnNpb24gdG8gZml0IHRoZSBuZWVkcyBvZiBzaW1pbGFyCmZ1bmN0 aW9uYWxpdHkgaW4gb3RoZXIgSU9NTVVzIGFzIHdlbGwuCgpUaGUgY3VycmVudCBhdHRlbXB0IGlu IHRoZSBBTUQgSU9NTVV2MiBkcml2ZXIgdG8gd29yayBhcm91bmQKdGhlIGludmFsaWRhdGVfcmFu Z2Vfc3RhcnQvZW5kKCkgc2hvcnRjb21pbmcgaXMgdG8gYXNzaWduIGFuCmVtcHR5IHBhZ2UgdGFi bGUgdG8gdGhlIG5vbi1DUFUgVExCIGJldHdlZW4gYW55CmludmFsaWRhdGFfcmFuZ2Vfc3RhcnQv ZW5kIGNhbGxzLiBXaXRoIHRoZSBlbXB0eSBwYWdlLXRhYmxlCmFzc2lnbmVkLCBldmVyeSBwYWdl LXRhYmxlIHdhbGsgdG8gcmUtZmlsbCB0aGUgbm9uLUNQVSBUTEIKd2lsbCBjYXVzZSBhIHBhZ2Ut ZmF1bHQgcmVwb3J0ZWQgdG8gdGhlIElPTU1VIGRyaXZlciB2aWEgYW4KaW50ZXJydXB0LCBwb3Nz aWJseSBjYXVzaW5nIGludGVycnVwdCBzdG9ybXMuCgpUaGUgcGFnZS1mYXVsdCBoYW5kbGVyIGlu IHRoZSBBTUQgSU9NTVV2MiBkcml2ZXIgZG9lc24ndApoYW5kbGUgdGhlIGZhdWx0IGlmIGFuIGlu dmFsaWRhdGVfcmFuZ2Vfc3RhcnQvZW5kIHBhaXIgaXMKYWN0aXZlLCBpdCBqdXN0IHJlcG9ydHMg YmFjayBTVUNFU1MgdG8gdGhlIGRldmljZSBhbmQgbGV0IGl0CnJlZmF1bHQgdGhlIHBhZ2UuIEJ1 dCBleGlzdGluZyBoYXJkd2FyZSAobmV3ZXIgUmFkZW9uIEdQVXMpCnRoYXQgbWFrZXMgdXNlIG9m IHRoaXMgZmVhdHVyZSBkb24ndCByZS1mYXVsdCBpbmRlZmluaXRseSwKYWZ0ZXIgYSBjZXJ0YWlu IG51bWJlciBvZiBmYXVsdHMgZm9yIHRoZSBzYW1lIGFkZHJlc3MgdGhlCmRldmljZSBlbnRlcnMg YSBmYWlsdXJlIHN0YXRlIGFuZCBuZWVkcyB0byBiZSByZXNldHRlZC4KClRvIGF2b2lkIHRoZSBH UFVzIGVudGVyaW5nIGEgZmFpbHVyZSBzdGF0ZSB3ZSBuZWVkIHRvIGdldApyaWQgb2YgdGhlIGVt cHR5LXBhZ2UtdGFibGUgd29ya2Fyb3VuZCBhbmQgdXNlIHRoZQptbXVfbm90aWZpZXJfaW52YWxp ZGF0ZV9yYW5nZSgpIGZ1bmN0aW9uIGludHJvZHVjZWQgd2l0aAp0aGlzIHBhdGNoLgoKUmV2aWV3 ZWQtYnk6IEFuZHJlYSBBcmNhbmdlbGkgPGFhcmNhbmdlQHJlZGhhdC5jb20+ClJldmlld2VkLWJ5 OiBKw6lyw7RtZSBHbGlzc2UgPGpnbGlzc2VAcmVkaGF0LmNvbT4KU2lnbmVkLW9mZi1ieTogSm9l cmcgUm9lZGVsIDxqcm9lZGVsQHN1c2UuZGU+Ci0tLQogaW5jbHVkZS9saW51eC9tbXVfbm90aWZp ZXIuaCB8IDEwICsrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspCgpk aWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tbXVfbm90aWZpZXIuaCBiL2luY2x1ZGUvbGludXgv bW11X25vdGlmaWVyLmgKaW5kZXggODg3ODdiYi4uMTc5MDc5MCAxMDA2NDQKLS0tIGEvaW5jbHVk ZS9saW51eC9tbXVfbm90aWZpZXIuaAorKysgYi9pbmNsdWRlL2xpbnV4L21tdV9ub3RpZmllci5o CkBAIC0yNDIsNiArMjQyLDExIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBtbXVfbm90aWZpZXJfaW52 YWxpZGF0ZV9yYW5nZV9lbmQoc3RydWN0IG1tX3N0cnVjdCAqbW0sCiAJCV9fbW11X25vdGlmaWVy X2ludmFsaWRhdGVfcmFuZ2VfZW5kKG1tLCBzdGFydCwgZW5kKTsKIH0KIAorc3RhdGljIGlubGlu ZSB2b2lkIG1tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlKHN0cnVjdCBtbV9zdHJ1Y3QgKm1t LAorCQkJCSAgdW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpCit7Cit9CisK IHN0YXRpYyBpbmxpbmUgdm9pZCBtbXVfbm90aWZpZXJfbW1faW5pdChzdHJ1Y3QgbW1fc3RydWN0 ICptbSkKIHsKIAltbS0+bW11X25vdGlmaWVyX21tID0gTlVMTDsKQEAgLTM0Miw2ICszNDcsMTEg QEAgc3RhdGljIGlubGluZSB2b2lkIG1tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX2VuZChz dHJ1Y3QgbW1fc3RydWN0ICptbSwKIHsKIH0KIAorc3RhdGljIGlubGluZSB2b2lkIG1tdV9ub3Rp Zmllcl9pbnZhbGlkYXRlX3JhbmdlKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAorCQkJCSAgdW5zaWdu ZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpCit7Cit9CisKIHN0YXRpYyBpbmxpbmUg dm9pZCBtbXVfbm90aWZpZXJfbW1faW5pdChzdHJ1Y3QgbW1fc3RydWN0ICptbSkKIHsKIH0KLS0g CjEuOC40LjUKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CmlvbW11IG1haWxpbmcgbGlzdAppb21tdUBsaXN0cy5saW51eC1mb3VuZGF0aW9uLm9yZwpodHRw czovL2xpc3RzLmxpbnV4Zm91bmRhdGlvbi5vcmcvbWFpbG1hbi9saXN0aW5mby9pb21tdQ== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-la0-f48.google.com (mail-la0-f48.google.com [209.85.215.48]) by kanga.kvack.org (Postfix) with ESMTP id CDAB3900021 for ; Tue, 28 Oct 2014 13:14:24 -0400 (EDT) Received: by mail-la0-f48.google.com with SMTP id gq15so1019269lab.7 for ; Tue, 28 Oct 2014 10:14:23 -0700 (PDT) Received: from theia.8bytes.org (8bytes.org. [81.169.241.247]) by mx.google.com with ESMTPS id u5si3411795laj.135.2014.10.28.10.14.20 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 28 Oct 2014 10:14:20 -0700 (PDT) From: Joerg Roedel Subject: [PATCH 1/3] mmu_notifier: Add mmu_notifier_invalidate_range() Date: Tue, 28 Oct 2014 18:13:58 +0100 Message-Id: <1414516440-910-2-git-send-email-joro@8bytes.org> In-Reply-To: <1414516440-910-1-git-send-email-joro@8bytes.org> References: <1414516440-910-1-git-send-email-joro@8bytes.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: owner-linux-mm@kvack.org List-ID: To: Andrew Morton , Andrea Arcangeli , Peter Zijlstra , Rik van Riel , Hugh Dickins , Mel Gorman , Johannes Weiner Cc: Jerome Glisse , Jay.Cornwall@amd.com, Oded.Gabbay@amd.com, John.Bridgman@amd.com, Suravee.Suthikulpanit@amd.com, ben.sander@amd.com, Jesse Barnes , David Woodhouse , linux-kernel@vger.kernel.org, linux-mm@kvack.org, iommu@lists.linux-foundation.org, jroedel@suse.de, joro@8bytes.org From: Joerg Roedel This notifier closes an important gap in the current mmu_notifier implementation, the existing call-backs are called too early or too late to reliably manage a non-CPU TLB. Specifically, invalidate_range_start() is called when all pages are still mapped and invalidate_range_end() when all pages are unmapped and potentially freed. This is fine when the users of the mmu_notifiers manage their own SoftTLB, like KVM does. When the TLB is managed in software it is easy to wipe out entries for a given range and prevent new entries to be established until invalidate_range_end is called. But when the user of mmu_notifiers has to manage a hardware TLB it can still wipe out TLB entries in invalidate_range_start, but it can't make sure that no new TLB entries in the given range are established between invalidate_range_start and invalidate_range_end. To avoid silent data corruption the entries in the non-CPU TLB need to be flushed when the pages are unmapped (at this point in time no _new_ TLB entries can be established in the non-CPU TLB) but not yet freed (as the non-CPU TLB may still have _existing_ entries pointing to the pages about to be freed). To fix this problem we need to catch the moment when the Linux VMM flushes remote TLBs (as a non-CPU TLB is not very different in its flushing requirements from any other remote CPU TLB), as this is the point in time when the pages are unmapped but _not_ yet freed. The mmu_notifier_invalidate_range() function aims to catch that moment. IOMMU code will be one user of the notifier-callback. Currently this is only the AMD IOMMUv2 driver, but its code is about to be more generalized and converted to a generic IOMMU-API extension to fit the needs of similar functionality in other IOMMUs as well. The current attempt in the AMD IOMMUv2 driver to work around the invalidate_range_start/end() shortcoming is to assign an empty page table to the non-CPU TLB between any invalidata_range_start/end calls. With the empty page-table assigned, every page-table walk to re-fill the non-CPU TLB will cause a page-fault reported to the IOMMU driver via an interrupt, possibly causing interrupt storms. The page-fault handler in the AMD IOMMUv2 driver doesn't handle the fault if an invalidate_range_start/end pair is active, it just reports back SUCESS to the device and let it refault the page. But existing hardware (newer Radeon GPUs) that makes use of this feature don't re-fault indefinitly, after a certain number of faults for the same address the device enters a failure state and needs to be resetted. To avoid the GPUs entering a failure state we need to get rid of the empty-page-table workaround and use the mmu_notifier_invalidate_range() function introduced with this patch. Reviewed-by: Andrea Arcangeli Reviewed-by: JA(C)rA'me Glisse Signed-off-by: Joerg Roedel --- include/linux/mmu_notifier.h | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/include/linux/mmu_notifier.h b/include/linux/mmu_notifier.h index 88787bb..1790790 100644 --- a/include/linux/mmu_notifier.h +++ b/include/linux/mmu_notifier.h @@ -242,6 +242,11 @@ static inline void mmu_notifier_invalidate_range_end(struct mm_struct *mm, __mmu_notifier_invalidate_range_end(mm, start, end); } +static inline void mmu_notifier_invalidate_range(struct mm_struct *mm, + unsigned long start, unsigned long end) +{ +} + static inline void mmu_notifier_mm_init(struct mm_struct *mm) { mm->mmu_notifier_mm = NULL; @@ -342,6 +347,11 @@ static inline void mmu_notifier_invalidate_range_end(struct mm_struct *mm, { } +static inline void mmu_notifier_invalidate_range(struct mm_struct *mm, + unsigned long start, unsigned long end) +{ +} + static inline void mmu_notifier_mm_init(struct mm_struct *mm) { } -- 1.8.4.5 -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: email@kvack.org From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753811AbaJ1ROZ (ORCPT ); Tue, 28 Oct 2014 13:14:25 -0400 Received: from 8bytes.org ([81.169.241.247]:46031 "EHLO theia.8bytes.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753639AbaJ1ROW (ORCPT ); Tue, 28 Oct 2014 13:14:22 -0400 From: Joerg Roedel To: Andrew Morton , Andrea Arcangeli , Peter Zijlstra , Rik van Riel , Hugh Dickins , Mel Gorman , Johannes Weiner Cc: Jerome Glisse , Jay.Cornwall@amd.com, Oded.Gabbay@amd.com, John.Bridgman@amd.com, Suravee.Suthikulpanit@amd.com, ben.sander@amd.com, Jesse Barnes , David Woodhouse , linux-kernel@vger.kernel.org, linux-mm@kvack.org, iommu@lists.linux-foundation.org, jroedel@suse.de, joro@8bytes.org Subject: [PATCH 1/3] mmu_notifier: Add mmu_notifier_invalidate_range() Date: Tue, 28 Oct 2014 18:13:58 +0100 Message-Id: <1414516440-910-2-git-send-email-joro@8bytes.org> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1414516440-910-1-git-send-email-joro@8bytes.org> References: <1414516440-910-1-git-send-email-joro@8bytes.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Joerg Roedel This notifier closes an important gap in the current mmu_notifier implementation, the existing call-backs are called too early or too late to reliably manage a non-CPU TLB. Specifically, invalidate_range_start() is called when all pages are still mapped and invalidate_range_end() when all pages are unmapped and potentially freed. This is fine when the users of the mmu_notifiers manage their own SoftTLB, like KVM does. When the TLB is managed in software it is easy to wipe out entries for a given range and prevent new entries to be established until invalidate_range_end is called. But when the user of mmu_notifiers has to manage a hardware TLB it can still wipe out TLB entries in invalidate_range_start, but it can't make sure that no new TLB entries in the given range are established between invalidate_range_start and invalidate_range_end. To avoid silent data corruption the entries in the non-CPU TLB need to be flushed when the pages are unmapped (at this point in time no _new_ TLB entries can be established in the non-CPU TLB) but not yet freed (as the non-CPU TLB may still have _existing_ entries pointing to the pages about to be freed). To fix this problem we need to catch the moment when the Linux VMM flushes remote TLBs (as a non-CPU TLB is not very different in its flushing requirements from any other remote CPU TLB), as this is the point in time when the pages are unmapped but _not_ yet freed. The mmu_notifier_invalidate_range() function aims to catch that moment. IOMMU code will be one user of the notifier-callback. Currently this is only the AMD IOMMUv2 driver, but its code is about to be more generalized and converted to a generic IOMMU-API extension to fit the needs of similar functionality in other IOMMUs as well. The current attempt in the AMD IOMMUv2 driver to work around the invalidate_range_start/end() shortcoming is to assign an empty page table to the non-CPU TLB between any invalidata_range_start/end calls. With the empty page-table assigned, every page-table walk to re-fill the non-CPU TLB will cause a page-fault reported to the IOMMU driver via an interrupt, possibly causing interrupt storms. The page-fault handler in the AMD IOMMUv2 driver doesn't handle the fault if an invalidate_range_start/end pair is active, it just reports back SUCESS to the device and let it refault the page. But existing hardware (newer Radeon GPUs) that makes use of this feature don't re-fault indefinitly, after a certain number of faults for the same address the device enters a failure state and needs to be resetted. To avoid the GPUs entering a failure state we need to get rid of the empty-page-table workaround and use the mmu_notifier_invalidate_range() function introduced with this patch. Reviewed-by: Andrea Arcangeli Reviewed-by: Jérôme Glisse Signed-off-by: Joerg Roedel --- include/linux/mmu_notifier.h | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/include/linux/mmu_notifier.h b/include/linux/mmu_notifier.h index 88787bb..1790790 100644 --- a/include/linux/mmu_notifier.h +++ b/include/linux/mmu_notifier.h @@ -242,6 +242,11 @@ static inline void mmu_notifier_invalidate_range_end(struct mm_struct *mm, __mmu_notifier_invalidate_range_end(mm, start, end); } +static inline void mmu_notifier_invalidate_range(struct mm_struct *mm, + unsigned long start, unsigned long end) +{ +} + static inline void mmu_notifier_mm_init(struct mm_struct *mm) { mm->mmu_notifier_mm = NULL; @@ -342,6 +347,11 @@ static inline void mmu_notifier_invalidate_range_end(struct mm_struct *mm, { } +static inline void mmu_notifier_invalidate_range(struct mm_struct *mm, + unsigned long start, unsigned long end) +{ +} + static inline void mmu_notifier_mm_init(struct mm_struct *mm) { } -- 1.8.4.5