From: Dave Hansen <dave.hansen@intel.com>
To: Andy Lutomirski <luto@amacapital.net>
Cc: "Ren, Qiaowei" <qiaowei.ren@intel.com>,
"H. Peter Anvin" <hpa@zytor.com>,
Thomas Gleixner <tglx@linutronix.de>,
Ingo Molnar <mingo@redhat.com>, X86 ML <x86@kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
Linux MM <linux-mm@kvack.org>
Subject: Re: [PATCH v6 02/10] x86, mpx: add MPX specific mmap interface
Date: Thu, 26 Jun 2014 17:19:51 -0700 [thread overview]
Message-ID: <53ACB8A7.9050002@intel.com> (raw)
In-Reply-To: <CALCETrVceOhRunCg1b9Q3VL10Kcb+uA-HFUURnq5f2S63_jACg@mail.gmail.com>
On 06/26/2014 04:15 PM, Andy Lutomirski wrote:
> So here's my mental image of how I might do this if I were doing it
> entirely in userspace: I'd create a file or memfd for the bound tables
> and another for the bound directory. These files would be *huge*: the
> bound directory file would be 2GB and the bounds table file would be
> 2^48 bytes or whatever it is. (Maybe even bigger?)
>
> Then I'd just map pieces of those files wherever they'd need to be,
> and I'd make the mappings sparse. I suspect that you don't actually
> want a vma for each piece of bound table that gets mapped -- the space
> of vmas could end up incredibly sparse. So I'd at least map (in the
> vma sense, not the pte sense) and entire bound table at a time. And
> I'd probably just map the bound directory in one big piece.
>
> Then I'd populate it in the fault handler.
>
> This is almost what the code is doing, I think, modulo the files.
>
> This has one killer problem: these mappings need to be private (cowed
> on fork). So memfd is no good.
This essentially uses the page cache's radix tree as a parallel data
structure in order to keep a vaddr->mpx_vma map. That's not a bad idea,
but it is a parallel data structure that does not handle copy-on-write
very well.
I'm pretty sure we need the semantics that anonymous memory provides.
> There's got to be an easyish way to
> modify the mm code to allow anonymous maps with vm_ops. Maybe a new
> mmap_region parameter or something? Maybe even a special anon_vma,
> but I don't really understand how those work.
Yeah, we very well might end up having to go down that path.
> Also, egads: what happens when a bound table entry is associated with
> a MAP_SHARED page?
Bounds table entries are for pointers. Do we keep pointers inside of
MAP_SHARED-mapped things? :)
--
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>
WARNING: multiple messages have this Message-ID (diff)
From: Dave Hansen <dave.hansen@intel.com>
To: Andy Lutomirski <luto@amacapital.net>
Cc: "Ren, Qiaowei" <qiaowei.ren@intel.com>,
"H. Peter Anvin" <hpa@zytor.com>,
Thomas Gleixner <tglx@linutronix.de>,
Ingo Molnar <mingo@redhat.com>, X86 ML <x86@kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
Linux MM <linux-mm@kvack.org>
Subject: Re: [PATCH v6 02/10] x86, mpx: add MPX specific mmap interface
Date: Thu, 26 Jun 2014 17:19:51 -0700 [thread overview]
Message-ID: <53ACB8A7.9050002@intel.com> (raw)
In-Reply-To: <CALCETrVceOhRunCg1b9Q3VL10Kcb+uA-HFUURnq5f2S63_jACg@mail.gmail.com>
On 06/26/2014 04:15 PM, Andy Lutomirski wrote:
> So here's my mental image of how I might do this if I were doing it
> entirely in userspace: I'd create a file or memfd for the bound tables
> and another for the bound directory. These files would be *huge*: the
> bound directory file would be 2GB and the bounds table file would be
> 2^48 bytes or whatever it is. (Maybe even bigger?)
>
> Then I'd just map pieces of those files wherever they'd need to be,
> and I'd make the mappings sparse. I suspect that you don't actually
> want a vma for each piece of bound table that gets mapped -- the space
> of vmas could end up incredibly sparse. So I'd at least map (in the
> vma sense, not the pte sense) and entire bound table at a time. And
> I'd probably just map the bound directory in one big piece.
>
> Then I'd populate it in the fault handler.
>
> This is almost what the code is doing, I think, modulo the files.
>
> This has one killer problem: these mappings need to be private (cowed
> on fork). So memfd is no good.
This essentially uses the page cache's radix tree as a parallel data
structure in order to keep a vaddr->mpx_vma map. That's not a bad idea,
but it is a parallel data structure that does not handle copy-on-write
very well.
I'm pretty sure we need the semantics that anonymous memory provides.
> There's got to be an easyish way to
> modify the mm code to allow anonymous maps with vm_ops. Maybe a new
> mmap_region parameter or something? Maybe even a special anon_vma,
> but I don't really understand how those work.
Yeah, we very well might end up having to go down that path.
> Also, egads: what happens when a bound table entry is associated with
> a MAP_SHARED page?
Bounds table entries are for pointers. Do we keep pointers inside of
MAP_SHARED-mapped things? :)
next prev parent reply other threads:[~2014-06-27 0:19 UTC|newest]
Thread overview: 87+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-06-18 9:44 [PATCH v6 00/10] Intel MPX support Qiaowei Ren
2014-06-18 9:44 ` [PATCH v6 01/10] x86, mpx: introduce VM_MPX to indicate that a VMA is MPX specific Qiaowei Ren
2014-06-18 9:44 ` [PATCH v6 02/10] x86, mpx: add MPX specific mmap interface Qiaowei Ren
2014-06-23 19:49 ` Andy Lutomirski
2014-06-23 19:49 ` Andy Lutomirski
2014-06-23 20:03 ` Dave Hansen
2014-06-23 20:03 ` Dave Hansen
2014-06-23 20:06 ` Andy Lutomirski
2014-06-23 20:06 ` Andy Lutomirski
2014-06-23 20:28 ` Dave Hansen
2014-06-23 20:28 ` Dave Hansen
2014-06-23 21:04 ` Andy Lutomirski
2014-06-23 21:04 ` Andy Lutomirski
2014-06-24 5:53 ` Ren, Qiaowei
2014-06-24 5:53 ` Ren, Qiaowei
2014-06-24 23:55 ` Andy Lutomirski
2014-06-24 23:55 ` Andy Lutomirski
2014-06-25 1:40 ` Ren, Qiaowei
2014-06-25 1:40 ` Ren, Qiaowei
2014-06-25 21:04 ` Andy Lutomirski
2014-06-25 21:04 ` Andy Lutomirski
2014-06-25 21:05 ` Andy Lutomirski
2014-06-25 21:05 ` Andy Lutomirski
2014-06-25 21:45 ` Dave Hansen
2014-06-25 21:45 ` Dave Hansen
2014-06-26 22:19 ` Andy Lutomirski
2014-06-26 22:19 ` Andy Lutomirski
2014-06-26 22:58 ` Dave Hansen
2014-06-26 22:58 ` Dave Hansen
2014-06-26 23:15 ` Andy Lutomirski
2014-06-26 23:15 ` Andy Lutomirski
2014-06-27 0:19 ` Dave Hansen [this message]
2014-06-27 0:19 ` Dave Hansen
2014-06-27 0:26 ` Andy Lutomirski
2014-06-27 0:26 ` Andy Lutomirski
2014-06-27 17:34 ` Dave Hansen
2014-06-27 17:34 ` Dave Hansen
2014-06-27 17:42 ` Dave Hansen
2014-06-27 17:42 ` Dave Hansen
2014-06-27 18:57 ` Andy Lutomirski
2014-06-27 18:57 ` Andy Lutomirski
2014-06-25 21:43 ` Dave Hansen
2014-06-25 21:43 ` Dave Hansen
2014-06-24 2:53 ` Ren, Qiaowei
2014-06-24 2:53 ` Ren, Qiaowei
2014-06-18 9:44 ` [PATCH v6 03/10] x86, mpx: add macro cpu_has_mpx Qiaowei Ren
2014-06-18 9:57 ` Borislav Petkov
2014-06-18 14:35 ` Dave Hansen
2014-06-18 14:44 ` Borislav Petkov
2014-06-18 14:58 ` Dave Hansen
2014-06-18 15:25 ` Borislav Petkov
2014-06-18 16:17 ` Dave Hansen
2014-06-18 15:00 ` H. Peter Anvin
2014-06-18 15:27 ` Borislav Petkov
2014-06-18 14:59 ` H. Peter Anvin
2014-06-18 16:25 ` Dave Hansen
2014-06-18 17:21 ` Borislav Petkov
2014-06-19 18:02 ` H. Peter Anvin
2014-06-19 18:50 ` Dave Hansen
2014-06-20 3:28 ` H. Peter Anvin
2014-06-18 9:44 ` [PATCH v6 04/10] x86, mpx: hook #BR exception handler to allocate bound tables Qiaowei Ren
2014-06-23 19:54 ` Andy Lutomirski
2014-06-24 1:53 ` Ren, Qiaowei
2014-07-11 16:23 ` Dave Hansen
2014-06-18 9:44 ` [PATCH v6 05/10] x86, mpx: extend siginfo structure to include bound violation information Qiaowei Ren
2014-06-18 9:44 ` [PATCH v6 06/10] mips: sync struct siginfo with general version Qiaowei Ren
2014-06-18 9:44 ` [PATCH v6 07/10] x86, mpx: decode MPX instruction to get bound violation information Qiaowei Ren
2014-06-18 10:07 ` Borislav Petkov
2014-06-19 1:13 ` Ren, Qiaowei
2014-06-19 6:28 ` Borislav Petkov
2014-06-19 6:53 ` Ren, Qiaowei
2014-06-19 17:04 ` Dave Hansen
2014-06-19 17:32 ` H. Peter Anvin
2014-06-20 3:21 ` Ren, Qiaowei
2014-06-18 9:44 ` [PATCH v6 08/10] x86, mpx: add prctl commands PR_MPX_REGISTER, PR_MPX_UNREGISTER Qiaowei Ren
2014-06-19 20:58 ` Dave Hansen
2014-06-23 20:00 ` Andy Lutomirski
2014-06-23 20:09 ` Dave Hansen
2014-06-23 22:00 ` Andy Lutomirski
2014-06-23 23:42 ` Dave Hansen
2014-06-24 0:01 ` Andy Lutomirski
2014-06-24 0:10 ` Dave Hansen
2014-06-18 9:44 ` [PATCH v6 09/10] x86, mpx: cleanup unused bound tables Qiaowei Ren
2014-06-23 19:57 ` Andy Lutomirski
2014-06-18 9:44 ` [PATCH v6 10/10] x86, mpx: add documentation on Intel MPX Qiaowei Ren
2014-06-18 14:41 ` [PATCH v6 00/10] Intel MPX support Dave Hansen
2014-06-18 14:41 ` Dave Hansen
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=53ACB8A7.9050002@intel.com \
--to=dave.hansen@intel.com \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=luto@amacapital.net \
--cc=mingo@redhat.com \
--cc=qiaowei.ren@intel.com \
--cc=tglx@linutronix.de \
--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: link
Be 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.