Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934742AbcCPRLq (ORCPT ); Wed, 16 Mar 2016 13:11:46 -0400 Received: from mailapp01.imgtec.com ([195.59.15.196]:33605 "EHLO mailapp01.imgtec.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933418AbcCPRLl (ORCPT ); Wed, 16 Mar 2016 13:11:41 -0400 From: Olu Ogunbowale To: CC: , Linus Torvalds , Michel Lespinasse , Andrew Morton , Rik van Riel , Hugh Dickins , Russell King , Ralf Baechle , Paul Mundt , "David S. Miller" , Chris Metcalf , Ingo Molnar , Thomas Gleixner , "H. Peter Anvin" , Olujide Ogunbowale Subject: [PATCH] mm: Export symbols unmapped_area() & unmapped_area_topdown() Date: Wed, 16 Mar 2016 17:10:34 +0000 Message-ID: <1458148234-4456-2-git-send-email-Olu.Ogunbowale@imgtec.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1458148234-4456-1-git-send-email-Olu.Ogunbowale@imgtec.com> References: <1458148234-4456-1-git-send-email-Olu.Ogunbowale@imgtec.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.60.4.44] Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1690 Lines: 49 From: Olujide Ogunbowale Export the memory management functions, unmapped_area() & unmapped_area_topdown(), as GPL symbols; this allows the kernel to better support process address space mirroring on both CPU and device for out-of-tree drivers by allowing the use of vm_unmapped_area() in a driver's file operation get_unmapped_area(). This is required by drivers that want to control or limit a process VMA range into which shared-virtual-memory (SVM) buffers are mapped during an mmap() call in order to ensure that said SVM VMA does not collide with any pre-existing VMAs used by non-buffer regions on the device because SVM buffers must have identical VMAs on both CPU and device. Exporting these functions is particularly useful for graphics devices as SVM support is required by the OpenCL & HSA specifications and also SVM support for 64-bit CPUs where the useable device SVM address range is/maybe a subset of the full 64-bit range of the CPU. Exporting also avoids the need to duplicate the VMA search code in such drivers. Signed-off-by: Olu Ogunbowale --- mm/mmap.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mm/mmap.c b/mm/mmap.c index 76d1ec2..c08b518 100644 --- a/mm/mmap.c +++ b/mm/mmap.c @@ -1804,6 +1804,8 @@ found: return gap_start; } +EXPORT_SYMBOL_GPL(unmapped_area); + unsigned long unmapped_area_topdown(struct vm_unmapped_area_info *info) { struct mm_struct *mm = current->mm; @@ -1902,6 +1904,8 @@ found_highest: return gap_end; } +EXPORT_SYMBOL_GPL(unmapped_area_topdown); + /* Get an address range which is currently unmapped. * For shmat() with addr=0. * -- 1.7.9.5