From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pf0-f198.google.com (mail-pf0-f198.google.com [209.85.192.198]) by kanga.kvack.org (Postfix) with ESMTP id E28426B0253 for ; Thu, 5 Oct 2017 16:00:14 -0400 (EDT) Received: by mail-pf0-f198.google.com with SMTP id u12so6303188pfl.0 for ; Thu, 05 Oct 2017 13:00:14 -0700 (PDT) Received: from relmlie4.idc.renesas.com (relmlor1.renesas.com. [210.160.252.171]) by mx.google.com with ESMTP id j188si13616778pfg.332.2017.10.05.13.00.12 for ; Thu, 05 Oct 2017 13:00:13 -0700 (PDT) From: Chris Brandt Subject: RE: [PATCH v4 4/5] cramfs: add mmap support Date: Thu, 5 Oct 2017 20:00:07 +0000 Message-ID: References: <20170927233224.31676-1-nicolas.pitre@linaro.org> <20170927233224.31676-5-nicolas.pitre@linaro.org> <20171001083052.GB17116@infradead.org> <20171003145732.GA8890@infradead.org> <20171003153659.GA31600@infradead.org> <20171004072553.GA24620@infradead.org> In-Reply-To: Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Sender: owner-linux-mm@kvack.org List-ID: To: Nicolas Pitre , Christoph Hellwig Cc: Richard Weinberger , Alexander Viro , "linux-mm@kvack.org" , linux-fsdevel , "linux-embedded@vger.kernel.org" , LKML On Wednesday, October 04, 2017, Nicolas Pitre wrote: > On Wed, 4 Oct 2017, Christoph Hellwig wrote: >=20 > > As said in my last mail: look at the VM_MIXEDMAP flag and how it is > > used by DAX, and you'll get out of the vma splitting business in the > > fault path. >=20 > Alright, it appears to work. >=20 > The only downside so far is the lack of visibility from user space to > confirm it actually works as intended. With the vma splitting approach > you clearly see what gets directly mapped in /proc/*/maps thanks to > remap_pfn_range() storing the actual physical address in vma->vm_pgoff. > With VM_MIXEDMAP things are no longer visible. Any opinion for the best > way to overcome this? >=20 > Anyway, here's a replacement for patch 4/5 below: >=20 > ----- >8 > Subject: cramfs: add mmap support >=20 > When cramfs_physmem is used then we have the opportunity to map files > directly from ROM, directly into user space, saving on RAM usage. > This gives us Execute-In-Place (XIP) support. Tested on my setup: * Cortex A9 (with MMU) * CONFIG_XIP_KERNEL=3Dy * booted with XIP CRAMFS as my rootfs=20 * all apps and libraries marked as XIP in my cramfs image So far, functionally it seems to work the same as [PATCH v4 4/5]. As Nicolas said, before you could easily see that all my apps and=20 libraries were XIP from Flash: $ cat /proc/self/maps 00008000-000a1000 r-xp 1b005000 00:0c 18192 /bin/busybox 000a9000-000aa000 rw-p 00099000 00:0c 18192 /bin/busybox 000aa000-000ac000 rw-p 00000000 00:00 0 [heap] b6e69000-b6f42000 r-xp 1b0bc000 00:0c 766540 /lib/libc-2.18-2013.10.so b6f42000-b6f4a000 ---p 1b195000 00:0c 766540 /lib/libc-2.18-2013.10.so b6f4a000-b6f4c000 r--p 000d9000 00:0c 766540 /lib/libc-2.18-2013.10.so b6f4c000-b6f4d000 rw-p 000db000 00:0c 766540 /lib/libc-2.18-2013.10.so b6f4d000-b6f50000 rw-p 00000000 00:00 0 b6f50000-b6f67000 r-xp 1b0a4000 00:0c 670372 /lib/ld-2.18-2013.10.so b6f6a000-b6f6b000 rw-p 00000000 00:00 0 b6f6c000-b6f6e000 rw-p 00000000 00:00 0 b6f6e000-b6f6f000 r--p 00016000 00:0c 670372 /lib/ld-2.18-2013.10.so b6f6f000-b6f70000 rw-p 00017000 00:0c 670372 /lib/ld-2.18-2013.10.so beac0000-beae1000 rw-p 00000000 00:00 0 [stack] bebc9000-bebca000 r-xp 00000000 00:00 0 [sigpage] ffff0000-ffff1000 r-xp 00000000 00:00 0 [vectors] But now just busybox looks like it's XIP: $ cat /proc/self/maps 00008000-000a1000 r-xp 1b005000 00:0c 18192 /bin/busybox 000a9000-000aa000 rw-p 00099000 00:0c 18192 /bin/busybox 000aa000-000ac000 rw-p 00000000 00:00 0 [heap] b6e4d000-b6f26000 r-xp 00000000 00:0c 766540 /lib/libc-2.18-2013.10.so b6f26000-b6f2e000 ---p 000d9000 00:0c 766540 /lib/libc-2.18-2013.10.so b6f2e000-b6f30000 r--p 000d9000 00:0c 766540 /lib/libc-2.18-2013.10.so b6f30000-b6f31000 rw-p 000db000 00:0c 766540 /lib/libc-2.18-2013.10.so b6f31000-b6f34000 rw-p 00000000 00:00 0 b6f34000-b6f4b000 r-xp 00000000 00:0c 670372 /lib/ld-2.18-2013.10.so b6f4e000-b6f4f000 rw-p 00000000 00:00 0 b6f50000-b6f52000 rw-p 00000000 00:00 0 b6f52000-b6f53000 r--p 00016000 00:0c 670372 /lib/ld-2.18-2013.10.so b6f53000-b6f54000 rw-p 00017000 00:0c 670372 /lib/ld-2.18-2013.10.so bec93000-becb4000 rw-p 00000000 00:00 0 [stack] befad000-befae000 r-xp 00000000 00:00 0 [sigpage] ffff0000-ffff1000 r-xp 00000000 00:00 0 [vectors] Regardless, from a functional standpoint: Tested-by: Chris Brandt Just FYI, the previous [PATCH v4 4/5] also included this (which was the=20 only real difference between v3 and v4): diff --git a/fs/cramfs/Kconfig b/fs/cramfs/Kconfig index 5b4e0b7e13..306549be25 100644 --- a/fs/cramfs/Kconfig +++ b/fs/cramfs/Kconfig @@ -30,7 +30,7 @@ config CRAMFS_BLOCKDEV =20 config CRAMFS_PHYSMEM bool "Support CramFs image directly mapped in physical memory" - depends on CRAMFS + depends on CRAMFS =3D y default y if !CRAMFS_BLOCKDEV help This option allows the CramFs driver to load data directly from Chris -- 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