Merge branch 'x86-boot-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git...
[firefly-linux-kernel-4.4.55.git] / arch / x86 / include / asm / processor.h
index 3aeb31cc0511afe4d44abeb4cca62736a0c0c63f..25b8de0f21c077c9261524e6bf65b7378fef0431 100644 (file)
@@ -374,13 +374,14 @@ struct lwp_struct {
        u8 reserved[128];
 };
 
-struct bndregs_struct {
-       u64 bndregs[8];
+struct bndreg {
+       u64 lower_bound;
+       u64 upper_bound;
 } __packed;
 
-struct bndcsr_struct {
-       u64 cfg_reg_u;
-       u64 status_reg;
+struct bndcsr {
+       u64 bndcfgu;
+       u64 bndstatus;
 } __packed;
 
 struct xsave_hdr_struct {
@@ -394,8 +395,8 @@ struct xsave_struct {
        struct xsave_hdr_struct xsave_hdr;
        struct ymmh_struct ymmh;
        struct lwp_struct lwp;
-       struct bndregs_struct bndregs;
-       struct bndcsr_struct bndcsr;
+       struct bndreg bndreg[4];
+       struct bndcsr bndcsr;
        /* new processor state extensions will go here */
 } __attribute__ ((packed, aligned (64)));
 
@@ -953,6 +954,24 @@ extern void start_thread(struct pt_regs *regs, unsigned long new_ip,
 extern int get_tsc_mode(unsigned long adr);
 extern int set_tsc_mode(unsigned int val);
 
+/* Register/unregister a process' MPX related resource */
+#define MPX_ENABLE_MANAGEMENT(tsk)     mpx_enable_management((tsk))
+#define MPX_DISABLE_MANAGEMENT(tsk)    mpx_disable_management((tsk))
+
+#ifdef CONFIG_X86_INTEL_MPX
+extern int mpx_enable_management(struct task_struct *tsk);
+extern int mpx_disable_management(struct task_struct *tsk);
+#else
+static inline int mpx_enable_management(struct task_struct *tsk)
+{
+       return -EINVAL;
+}
+static inline int mpx_disable_management(struct task_struct *tsk)
+{
+       return -EINVAL;
+}
+#endif /* CONFIG_X86_INTEL_MPX */
+
 extern u16 amd_get_nb_id(int cpu);
 
 static inline uint32_t hypervisor_cpuid_base(const char *sig, uint32_t leaves)