From: Dave Hansen <dave.hansen@intel.com>
To: Qiaowei Ren <qiaowei.ren@intel.com>,
"H. Peter Anvin" <hpa@zytor.com>,
Thomas Gleixner <tglx@linutronix.de>,
Ingo Molnar <mingo@redhat.com>
Cc: x86@kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v5 2/3] x86, mpx: hook #BR exception handler to allocate bound tables
Date: Mon, 24 Feb 2014 09:27:46 -0800 [thread overview]
Message-ID: <530B8112.5080400@intel.com> (raw)
In-Reply-To: <1393162071-23995-3-git-send-email-qiaowei.ren@intel.com>
On 02/23/2014 05:27 AM, Qiaowei Ren wrote:
> +static bool allocate_bt(unsigned long bd_entry)
> +{
> + unsigned long bt_size = 1UL << (MPX_L2_BITS+MPX_L2_SHIFT);
> + unsigned long bt_addr, old_val = 0;
> +
> + bt_addr = sys_mmap_pgoff(0, bt_size, PROT_READ | PROT_WRITE,
> + MAP_ANONYMOUS | MAP_PRIVATE | MAP_POPULATE, -1, 0);
> + if (bt_addr == -1) {
> + pr_err("L2 Node Allocation Failed at L1 addr %lx\n",
> + bd_entry);
> + return false;
> + }
> + bt_addr = (bt_addr & MPX_L2_NODE_ADDR_MASK) | 0x01;
> +
> + user_atomic_cmpxchg_inatomic(&old_val,
> + (long __user *)bd_entry, 0, bt_addr);
> + if (old_val)
> + vm_munmap(bt_addr & MPX_L2_NODE_ADDR_MASK, bt_size);
> +
> + return true;
> +}
> +
> +bool do_mpx_bt_fault(struct xsave_struct *xsave_buf)
> +{
> + unsigned long status;
> + unsigned long bd_entry, bd_base;
> + unsigned long bd_size = 1UL << (MPX_L1_BITS+MPX_L1_SHIFT);
> +
> + bd_base = xsave_buf->bndcsr.cfg_reg_u & MPX_BNDCFG_ADDR_MASK;
> + status = xsave_buf->bndcsr.status_reg;
> +
> + bd_entry = status & MPX_BNDSTA_ADDR_MASK;
> + if ((bd_entry >= bd_base) && (bd_entry < bd_base + bd_size))
> + return allocate_bt(bd_entry);
> +
> + return false;
> +}
Can you talk a little bit about what the design is here? Why does the
kernel have to do the allocation of the virtual address space? Does it
really need to MAP_POPULATE? bt_size looks like 4MB, and that's an
awful lot of memory to eat up at once. Shouldn't we just let the kernel
demand-fault this like everything else?
next prev parent reply other threads:[~2014-02-24 17:28 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-02-23 13:27 [PATCH v5 0/3] Intel MPX support Qiaowei Ren
2014-02-23 13:27 ` [PATCH v5 1/3] x86, mpx: add documentation on Intel MPX Qiaowei Ren
2014-02-26 19:17 ` Dave Hansen
2014-02-26 20:58 ` Dave Hansen
2014-02-26 21:44 ` H. Peter Anvin
2014-02-27 2:03 ` Ren Qiaowei
2014-02-26 21:19 ` Dave Hansen
2014-02-27 1:58 ` Ren Qiaowei
2014-02-23 13:27 ` [PATCH v5 2/3] x86, mpx: hook #BR exception handler to allocate bound tables Qiaowei Ren
2014-02-24 17:27 ` Dave Hansen [this message]
2014-02-24 17:51 ` H. Peter Anvin
2014-02-25 13:34 ` Ren, Qiaowei
2014-02-23 13:27 ` [PATCH v5 3/3] x86, mpx: extend siginfo structure to include bound violation information Qiaowei Ren
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=530B8112.5080400@intel.com \
--to=dave.hansen@intel.com \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--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.