From: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com> To: Dmitry Safonov <dsafonov@virtuozzo.com> Cc: Linus Torvalds <torvalds@linux-foundation.org>, Andrew Morton <akpm@linux-foundation.org>, x86@kernel.org, Thomas Gleixner <tglx@linutronix.de>, Ingo Molnar <mingo@redhat.com>, "H. Peter Anvin" <hpa@zytor.com>, Andi Kleen <ak@linux.intel.com>, Dave Hansen <dave.hansen@intel.com>, Andy Lutomirski <luto@amacapital.net>, linux-arch@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH 8/8] x86/mm: Allow to have userspace mappings above 47-bits Date: Fri, 7 Apr 2017 02:21:37 +0300 [thread overview] Message-ID: <20170406232137.uk7y2knbkcsru4pi@black.fi.intel.com> (raw) In-Reply-To: <eaf4c954-e6c0-a9b4-50f1-49889dbd0f4b@virtuozzo.com> On Thu, Apr 06, 2017 at 10:15:47PM +0300, Dmitry Safonov wrote: > On 04/06/2017 09:43 PM, Dmitry Safonov wrote: > > Hi Kirill, > > > > On 04/06/2017 05:01 PM, Kirill A. Shutemov wrote: > > > On x86, 5-level paging enables 56-bit userspace virtual address space. > > > Not all user space is ready to handle wide addresses. It's known that > > > at least some JIT compilers use higher bits in pointers to encode their > > > information. It collides with valid pointers with 5-level paging and > > > leads to crashes. > > > > > > To mitigate this, we are not going to allocate virtual address space > > > above 47-bit by default. > > > > > > But userspace can ask for allocation from full address space by > > > specifying hint address (with or without MAP_FIXED) above 47-bits. > > > > > > If hint address set above 47-bit, but MAP_FIXED is not specified, we try > > > to look for unmapped area by specified address. If it's already > > > occupied, we look for unmapped area in *full* address space, rather than > > > from 47-bit window. > > > > Do you wish after the first over-47-bit mapping the following mmap() > > calls return also over-47-bits if there is free space? > > It so, you could simplify all this code by changing only mm->mmap_base > > on the first over-47-bit mmap() call. > > This will do simple trick. No. I want every allocation to explicitely opt-in large address space. It's additional fail-safe: if a library can't handle large addresses it has better chance to survive if its own allocation will stay within 47-bits. > I just tried to define it like this: > -#define DEFAULT_MAP_WINDOW ((1UL << 47) - PAGE_SIZE) > +#define DEFAULT_MAP_WINDOW (test_thread_flag(TIF_ADDR32) ? \ > + IA32_PAGE_OFFSET : ((1UL << 47) - > PAGE_SIZE)) > > And it looks working better. Okay, thanks. I'll send v2. > > > + if (addr > DEFAULT_MAP_WINDOW && !in_compat_syscall()) > > > + info.high_limit += TASK_SIZE - DEFAULT_MAP_WINDOW; > > > > Hmm, TASK_SIZE depends now on TIF_ADDR32, which is set during exec(). > > That means for ia32/x32 ELF which has TASK_SIZE < 4Gb as TIF_ADDR32 > > is set, which can do 64-bit syscalls - the subtraction will be > > a negative.. With your proposed change to DEFAULT_MAP_WINDOW difinition it should be okay, right? -- Kirill A. Shutemov
WARNING: multiple messages have this Message-ID (diff)
From: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com> To: Dmitry Safonov <dsafonov@virtuozzo.com> Cc: Linus Torvalds <torvalds@linux-foundation.org>, Andrew Morton <akpm@linux-foundation.org>, x86@kernel.org, Thomas Gleixner <tglx@linutronix.de>, Ingo Molnar <mingo@redhat.com>, "H. Peter Anvin" <hpa@zytor.com>, Andi Kleen <ak@linux.intel.com>, Dave Hansen <dave.hansen@intel.com>, Andy Lutomirski <luto@amacapital.net>, linux-arch@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH 8/8] x86/mm: Allow to have userspace mappings above 47-bits Date: Fri, 7 Apr 2017 02:21:37 +0300 [thread overview] Message-ID: <20170406232137.uk7y2knbkcsru4pi@black.fi.intel.com> (raw) In-Reply-To: <eaf4c954-e6c0-a9b4-50f1-49889dbd0f4b@virtuozzo.com> On Thu, Apr 06, 2017 at 10:15:47PM +0300, Dmitry Safonov wrote: > On 04/06/2017 09:43 PM, Dmitry Safonov wrote: > > Hi Kirill, > > > > On 04/06/2017 05:01 PM, Kirill A. Shutemov wrote: > > > On x86, 5-level paging enables 56-bit userspace virtual address space. > > > Not all user space is ready to handle wide addresses. It's known that > > > at least some JIT compilers use higher bits in pointers to encode their > > > information. It collides with valid pointers with 5-level paging and > > > leads to crashes. > > > > > > To mitigate this, we are not going to allocate virtual address space > > > above 47-bit by default. > > > > > > But userspace can ask for allocation from full address space by > > > specifying hint address (with or without MAP_FIXED) above 47-bits. > > > > > > If hint address set above 47-bit, but MAP_FIXED is not specified, we try > > > to look for unmapped area by specified address. If it's already > > > occupied, we look for unmapped area in *full* address space, rather than > > > from 47-bit window. > > > > Do you wish after the first over-47-bit mapping the following mmap() > > calls return also over-47-bits if there is free space? > > It so, you could simplify all this code by changing only mm->mmap_base > > on the first over-47-bit mmap() call. > > This will do simple trick. No. I want every allocation to explicitely opt-in large address space. It's additional fail-safe: if a library can't handle large addresses it has better chance to survive if its own allocation will stay within 47-bits. > I just tried to define it like this: > -#define DEFAULT_MAP_WINDOW ((1UL << 47) - PAGE_SIZE) > +#define DEFAULT_MAP_WINDOW (test_thread_flag(TIF_ADDR32) ? \ > + IA32_PAGE_OFFSET : ((1UL << 47) - > PAGE_SIZE)) > > And it looks working better. Okay, thanks. I'll send v2. > > > + if (addr > DEFAULT_MAP_WINDOW && !in_compat_syscall()) > > > + info.high_limit += TASK_SIZE - DEFAULT_MAP_WINDOW; > > > > Hmm, TASK_SIZE depends now on TIF_ADDR32, which is set during exec(). > > That means for ia32/x32 ELF which has TASK_SIZE < 4Gb as TIF_ADDR32 > > is set, which can do 64-bit syscalls - the subtraction will be > > a negative.. With your proposed change to DEFAULT_MAP_WINDOW difinition it should be okay, right? -- Kirill A. Shutemov -- 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: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2017-04-06 23:22 UTC|newest] Thread overview: 101+ messages / expand[flat|nested] mbox.gz Atom feed top 2017-04-06 14:00 [PATCH 0/8] x86: 5-level paging enabling for v4.12, Part 4 Kirill A. Shutemov 2017-04-06 14:00 ` Kirill A. Shutemov 2017-04-06 14:00 ` [PATCH 1/8] x86/boot/64: Rewrite startup_64 in C Kirill A. Shutemov 2017-04-06 14:00 ` Kirill A. Shutemov 2017-04-11 7:58 ` [tip:x86/mm] x86/boot/64: Rewrite startup_64() " tip-bot for Kirill A. Shutemov 2017-04-11 8:54 ` Ingo Molnar 2017-04-11 12:29 ` Kirill A. Shutemov 2017-04-06 14:01 ` [PATCH 2/8] x86/boot/64: Rename init_level4_pgt and early_level4_pgt Kirill A. Shutemov 2017-04-06 14:01 ` Kirill A. Shutemov 2017-04-11 7:59 ` [tip:x86/mm] x86/boot/64: Rename init_level4_pgt() and early_level4_pgt[] tip-bot for Kirill A. Shutemov 2017-04-06 14:01 ` [PATCH 3/8] x86/boot/64: Add support of additional page table level during early boot Kirill A. Shutemov 2017-04-06 14:01 ` Kirill A. Shutemov 2017-04-11 7:02 ` Ingo Molnar 2017-04-11 7:02 ` Ingo Molnar 2017-04-11 10:51 ` Kirill A. Shutemov 2017-04-11 10:51 ` Kirill A. Shutemov 2017-04-11 11:28 ` Ingo Molnar 2017-04-11 11:28 ` Ingo Molnar 2017-04-11 11:46 ` Kirill A. Shutemov 2017-04-11 11:46 ` Kirill A. Shutemov 2017-04-11 14:09 ` Andi Kleen 2017-04-11 14:09 ` Andi Kleen 2017-04-12 10:18 ` Kirill A. Shutemov 2017-04-12 10:18 ` Kirill A. Shutemov 2017-04-17 10:32 ` Ingo Molnar 2017-04-17 10:32 ` Ingo Molnar 2017-04-18 8:59 ` Kirill A. Shutemov 2017-04-18 8:59 ` Kirill A. Shutemov 2017-04-18 10:15 ` Kirill A. Shutemov 2017-04-18 10:15 ` Kirill A. Shutemov 2017-04-18 11:10 ` Kirill A. Shutemov 2017-04-18 11:10 ` Kirill A. Shutemov 2017-04-06 14:01 ` [PATCH 4/8] x86/mm: Add sync_global_pgds() for configuration with 5-level paging Kirill A. Shutemov 2017-04-06 14:01 ` Kirill A. Shutemov 2017-04-06 14:01 ` [PATCH 5/8] x86/mm: Make kernel_physical_mapping_init() support " Kirill A. Shutemov 2017-04-06 14:01 ` Kirill A. Shutemov 2017-04-06 14:01 ` [PATCH 6/8] x86/mm: Add support for 5-level paging for KASLR Kirill A. Shutemov 2017-04-06 14:01 ` Kirill A. Shutemov 2017-04-06 14:01 ` [PATCH 7/8] x86: Enable 5-level paging support Kirill A. Shutemov 2017-04-06 14:01 ` Kirill A. Shutemov 2017-04-06 14:52 ` Juergen Gross 2017-04-06 14:52 ` Juergen Gross 2017-04-06 15:24 ` Kirill A. Shutemov 2017-04-06 15:24 ` Kirill A. Shutemov 2017-04-06 15:56 ` Juergen Gross 2017-04-06 15:56 ` Juergen Gross 2017-04-06 14:01 ` [PATCH 8/8] x86/mm: Allow to have userspace mappings above 47-bits Kirill A. Shutemov 2017-04-06 14:01 ` Kirill A. Shutemov 2017-04-06 18:43 ` Dmitry Safonov 2017-04-06 18:43 ` Dmitry Safonov 2017-04-06 18:43 ` Dmitry Safonov 2017-04-06 19:15 ` Dmitry Safonov 2017-04-06 19:15 ` Dmitry Safonov 2017-04-06 19:15 ` Dmitry Safonov 2017-04-06 23:21 ` Kirill A. Shutemov [this message] 2017-04-06 23:21 ` Kirill A. Shutemov 2017-04-06 23:24 ` [PATCHv2 " Kirill A. Shutemov 2017-04-06 23:24 ` Kirill A. Shutemov 2017-04-07 11:32 ` Dmitry Safonov 2017-04-07 11:32 ` Dmitry Safonov 2017-04-07 11:32 ` Dmitry Safonov 2017-04-07 15:44 ` [PATCHv3 " Kirill A. Shutemov 2017-04-07 15:44 ` Kirill A. Shutemov 2017-04-07 16:37 ` Dmitry Safonov 2017-04-07 16:37 ` Dmitry Safonov 2017-04-07 16:37 ` Dmitry Safonov 2017-04-13 11:30 ` [PATCHv4 0/9] x86: 5-level paging enabling for v4.12, Part 4 Kirill A. Shutemov 2017-04-13 11:30 ` Kirill A. Shutemov 2017-04-13 11:30 ` [PATCHv4 1/9] x86/asm: Fix comment in return_from_SYSCALL_64 Kirill A. Shutemov 2017-04-13 11:30 ` Kirill A. Shutemov 2017-04-13 11:30 ` [PATCHv4 2/9] x86/boot/64: Rewrite startup_64 in C Kirill A. Shutemov 2017-04-13 11:30 ` Kirill A. Shutemov 2017-04-13 11:30 ` [PATCHv4 3/9] x86/boot/64: Rename init_level4_pgt and early_level4_pgt Kirill A. Shutemov 2017-04-13 11:30 ` Kirill A. Shutemov 2017-04-13 11:30 ` [PATCHv4 4/9] x86/boot/64: Add support of additional page table level during early boot Kirill A. Shutemov 2017-04-13 11:30 ` Kirill A. Shutemov 2017-04-13 11:30 ` [PATCHv4 5/9] x86/mm: Add sync_global_pgds() for configuration with 5-level paging Kirill A. Shutemov 2017-04-13 11:30 ` Kirill A. Shutemov 2017-04-13 11:30 ` [PATCHv4 6/9] x86/mm: Make kernel_physical_mapping_init() support " Kirill A. Shutemov 2017-04-13 11:30 ` Kirill A. Shutemov 2017-04-13 11:30 ` [PATCHv4 7/9] x86/mm: Add support for 5-level paging for KASLR Kirill A. Shutemov 2017-04-13 11:30 ` Kirill A. Shutemov 2017-04-13 11:30 ` [PATCHv4 8/9] x86: Enable 5-level paging support Kirill A. Shutemov 2017-04-13 11:30 ` Kirill A. Shutemov 2017-04-13 11:30 ` [PATCHv4 9/9] x86/mm: Allow to have userspace mappings above 47-bits Kirill A. Shutemov 2017-04-13 11:30 ` Kirill A. Shutemov 2017-04-07 10:06 ` [PATCH 8/8] " Dmitry Safonov 2017-04-07 10:06 ` Dmitry Safonov 2017-04-07 10:06 ` Dmitry Safonov 2017-04-07 13:35 ` Anshuman Khandual 2017-04-07 13:35 ` Anshuman Khandual 2017-04-07 15:59 ` Kirill A. Shutemov 2017-04-07 15:59 ` Kirill A. Shutemov 2017-04-07 16:09 ` hpa 2017-04-07 16:09 ` hpa 2017-04-07 16:20 ` Kirill A. Shutemov 2017-04-07 16:20 ` Kirill A. Shutemov 2017-04-12 10:41 ` Michael Ellerman 2017-04-12 10:41 ` Michael Ellerman 2017-04-12 11:11 ` Kirill A. Shutemov 2017-04-12 11:11 ` Kirill A. Shutemov
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20170406232137.uk7y2knbkcsru4pi@black.fi.intel.com \ --to=kirill.shutemov@linux.intel.com \ --cc=ak@linux.intel.com \ --cc=akpm@linux-foundation.org \ --cc=dave.hansen@intel.com \ --cc=dsafonov@virtuozzo.com \ --cc=hpa@zytor.com \ --cc=linux-arch@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-mm@kvack.org \ --cc=luto@amacapital.net \ --cc=mingo@redhat.com \ --cc=tglx@linutronix.de \ --cc=torvalds@linux-foundation.org \ --cc=x86@kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.