x86/intel_rdt: Add scheduler hook
[linux-2.6-microblaze.git] / arch / x86 / kernel / process_64.c
1 /*
2  *  Copyright (C) 1995  Linus Torvalds
3  *
4  *  Pentium III FXSR, SSE support
5  *      Gareth Hughes <gareth@valinux.com>, May 2000
6  *
7  *  X86-64 port
8  *      Andi Kleen.
9  *
10  *      CPU hotplug support - ashok.raj@intel.com
11  */
12
13 /*
14  * This file handles the architecture-dependent parts of process handling..
15  */
16
17 #include <linux/cpu.h>
18 #include <linux/errno.h>
19 #include <linux/sched.h>
20 #include <linux/fs.h>
21 #include <linux/kernel.h>
22 #include <linux/mm.h>
23 #include <linux/elfcore.h>
24 #include <linux/smp.h>
25 #include <linux/slab.h>
26 #include <linux/user.h>
27 #include <linux/interrupt.h>
28 #include <linux/delay.h>
29 #include <linux/export.h>
30 #include <linux/ptrace.h>
31 #include <linux/notifier.h>
32 #include <linux/kprobes.h>
33 #include <linux/kdebug.h>
34 #include <linux/prctl.h>
35 #include <linux/uaccess.h>
36 #include <linux/io.h>
37 #include <linux/ftrace.h>
38
39 #include <asm/pgtable.h>
40 #include <asm/processor.h>
41 #include <asm/fpu/internal.h>
42 #include <asm/mmu_context.h>
43 #include <asm/prctl.h>
44 #include <asm/desc.h>
45 #include <asm/proto.h>
46 #include <asm/ia32.h>
47 #include <asm/idle.h>
48 #include <asm/syscalls.h>
49 #include <asm/debugreg.h>
50 #include <asm/switch_to.h>
51 #include <asm/xen/hypervisor.h>
52 #include <asm/vdso.h>
53 #include <asm/intel_rdt.h>
54
55 __visible DEFINE_PER_CPU(unsigned long, rsp_scratch);
56
57 /* Prints also some state that isn't saved in the pt_regs */
58 void __show_regs(struct pt_regs *regs, int all)
59 {
60         unsigned long cr0 = 0L, cr2 = 0L, cr3 = 0L, cr4 = 0L, fs, gs, shadowgs;
61         unsigned long d0, d1, d2, d3, d6, d7;
62         unsigned int fsindex, gsindex;
63         unsigned int ds, cs, es;
64
65         printk(KERN_DEFAULT "RIP: %04lx:[<%016lx>] ", regs->cs & 0xffff, regs->ip);
66         printk_address(regs->ip);
67         printk(KERN_DEFAULT "RSP: %04lx:%016lx  EFLAGS: %08lx\n", regs->ss,
68                         regs->sp, regs->flags);
69         printk(KERN_DEFAULT "RAX: %016lx RBX: %016lx RCX: %016lx\n",
70                regs->ax, regs->bx, regs->cx);
71         printk(KERN_DEFAULT "RDX: %016lx RSI: %016lx RDI: %016lx\n",
72                regs->dx, regs->si, regs->di);
73         printk(KERN_DEFAULT "RBP: %016lx R08: %016lx R09: %016lx\n",
74                regs->bp, regs->r8, regs->r9);
75         printk(KERN_DEFAULT "R10: %016lx R11: %016lx R12: %016lx\n",
76                regs->r10, regs->r11, regs->r12);
77         printk(KERN_DEFAULT "R13: %016lx R14: %016lx R15: %016lx\n",
78                regs->r13, regs->r14, regs->r15);
79
80         asm("movl %%ds,%0" : "=r" (ds));
81         asm("movl %%cs,%0" : "=r" (cs));
82         asm("movl %%es,%0" : "=r" (es));
83         asm("movl %%fs,%0" : "=r" (fsindex));
84         asm("movl %%gs,%0" : "=r" (gsindex));
85
86         rdmsrl(MSR_FS_BASE, fs);
87         rdmsrl(MSR_GS_BASE, gs);
88         rdmsrl(MSR_KERNEL_GS_BASE, shadowgs);
89
90         if (!all)
91                 return;
92
93         cr0 = read_cr0();
94         cr2 = read_cr2();
95         cr3 = read_cr3();
96         cr4 = __read_cr4();
97
98         printk(KERN_DEFAULT "FS:  %016lx(%04x) GS:%016lx(%04x) knlGS:%016lx\n",
99                fs, fsindex, gs, gsindex, shadowgs);
100         printk(KERN_DEFAULT "CS:  %04x DS: %04x ES: %04x CR0: %016lx\n", cs, ds,
101                         es, cr0);
102         printk(KERN_DEFAULT "CR2: %016lx CR3: %016lx CR4: %016lx\n", cr2, cr3,
103                         cr4);
104
105         get_debugreg(d0, 0);
106         get_debugreg(d1, 1);
107         get_debugreg(d2, 2);
108         get_debugreg(d3, 3);
109         get_debugreg(d6, 6);
110         get_debugreg(d7, 7);
111
112         /* Only print out debug registers if they are in their non-default state. */
113         if (!((d0 == 0) && (d1 == 0) && (d2 == 0) && (d3 == 0) &&
114             (d6 == DR6_RESERVED) && (d7 == 0x400))) {
115                 printk(KERN_DEFAULT "DR0: %016lx DR1: %016lx DR2: %016lx\n",
116                        d0, d1, d2);
117                 printk(KERN_DEFAULT "DR3: %016lx DR6: %016lx DR7: %016lx\n",
118                        d3, d6, d7);
119         }
120
121         if (boot_cpu_has(X86_FEATURE_OSPKE))
122                 printk(KERN_DEFAULT "PKRU: %08x\n", read_pkru());
123 }
124
125 void release_thread(struct task_struct *dead_task)
126 {
127         if (dead_task->mm) {
128 #ifdef CONFIG_MODIFY_LDT_SYSCALL
129                 if (dead_task->mm->context.ldt) {
130                         pr_warn("WARNING: dead process %s still has LDT? <%p/%d>\n",
131                                 dead_task->comm,
132                                 dead_task->mm->context.ldt->entries,
133                                 dead_task->mm->context.ldt->size);
134                         BUG();
135                 }
136 #endif
137         }
138 }
139
140 int copy_thread_tls(unsigned long clone_flags, unsigned long sp,
141                 unsigned long arg, struct task_struct *p, unsigned long tls)
142 {
143         int err;
144         struct pt_regs *childregs;
145         struct fork_frame *fork_frame;
146         struct inactive_task_frame *frame;
147         struct task_struct *me = current;
148
149         p->thread.sp0 = (unsigned long)task_stack_page(p) + THREAD_SIZE;
150         childregs = task_pt_regs(p);
151         fork_frame = container_of(childregs, struct fork_frame, regs);
152         frame = &fork_frame->frame;
153         frame->bp = 0;
154         frame->ret_addr = (unsigned long) ret_from_fork;
155         p->thread.sp = (unsigned long) fork_frame;
156         p->thread.io_bitmap_ptr = NULL;
157
158         savesegment(gs, p->thread.gsindex);
159         p->thread.gsbase = p->thread.gsindex ? 0 : me->thread.gsbase;
160         savesegment(fs, p->thread.fsindex);
161         p->thread.fsbase = p->thread.fsindex ? 0 : me->thread.fsbase;
162         savesegment(es, p->thread.es);
163         savesegment(ds, p->thread.ds);
164         memset(p->thread.ptrace_bps, 0, sizeof(p->thread.ptrace_bps));
165
166         if (unlikely(p->flags & PF_KTHREAD)) {
167                 /* kernel thread */
168                 memset(childregs, 0, sizeof(struct pt_regs));
169                 frame->bx = sp;         /* function */
170                 frame->r12 = arg;
171                 return 0;
172         }
173         frame->bx = 0;
174         *childregs = *current_pt_regs();
175
176         childregs->ax = 0;
177         if (sp)
178                 childregs->sp = sp;
179
180         err = -ENOMEM;
181         if (unlikely(test_tsk_thread_flag(me, TIF_IO_BITMAP))) {
182                 p->thread.io_bitmap_ptr = kmemdup(me->thread.io_bitmap_ptr,
183                                                   IO_BITMAP_BYTES, GFP_KERNEL);
184                 if (!p->thread.io_bitmap_ptr) {
185                         p->thread.io_bitmap_max = 0;
186                         return -ENOMEM;
187                 }
188                 set_tsk_thread_flag(p, TIF_IO_BITMAP);
189         }
190
191         /*
192          * Set a new TLS for the child thread?
193          */
194         if (clone_flags & CLONE_SETTLS) {
195 #ifdef CONFIG_IA32_EMULATION
196                 if (in_ia32_syscall())
197                         err = do_set_thread_area(p, -1,
198                                 (struct user_desc __user *)tls, 0);
199                 else
200 #endif
201                         err = do_arch_prctl(p, ARCH_SET_FS, tls);
202                 if (err)
203                         goto out;
204         }
205         err = 0;
206 out:
207         if (err && p->thread.io_bitmap_ptr) {
208                 kfree(p->thread.io_bitmap_ptr);
209                 p->thread.io_bitmap_max = 0;
210         }
211
212         return err;
213 }
214
215 static void
216 start_thread_common(struct pt_regs *regs, unsigned long new_ip,
217                     unsigned long new_sp,
218                     unsigned int _cs, unsigned int _ss, unsigned int _ds)
219 {
220         loadsegment(fs, 0);
221         loadsegment(es, _ds);
222         loadsegment(ds, _ds);
223         load_gs_index(0);
224         regs->ip                = new_ip;
225         regs->sp                = new_sp;
226         regs->cs                = _cs;
227         regs->ss                = _ss;
228         regs->flags             = X86_EFLAGS_IF;
229         force_iret();
230 }
231
232 void
233 start_thread(struct pt_regs *regs, unsigned long new_ip, unsigned long new_sp)
234 {
235         start_thread_common(regs, new_ip, new_sp,
236                             __USER_CS, __USER_DS, 0);
237 }
238
239 #ifdef CONFIG_COMPAT
240 void compat_start_thread(struct pt_regs *regs, u32 new_ip, u32 new_sp)
241 {
242         start_thread_common(regs, new_ip, new_sp,
243                             test_thread_flag(TIF_X32)
244                             ? __USER_CS : __USER32_CS,
245                             __USER_DS, __USER_DS);
246 }
247 #endif
248
249 /*
250  *      switch_to(x,y) should switch tasks from x to y.
251  *
252  * This could still be optimized:
253  * - fold all the options into a flag word and test it with a single test.
254  * - could test fs/gs bitsliced
255  *
256  * Kprobes not supported here. Set the probe on schedule instead.
257  * Function graph tracer not supported too.
258  */
259 __visible __notrace_funcgraph struct task_struct *
260 __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
261 {
262         struct thread_struct *prev = &prev_p->thread;
263         struct thread_struct *next = &next_p->thread;
264         struct fpu *prev_fpu = &prev->fpu;
265         struct fpu *next_fpu = &next->fpu;
266         int cpu = smp_processor_id();
267         struct tss_struct *tss = &per_cpu(cpu_tss, cpu);
268         unsigned prev_fsindex, prev_gsindex;
269         fpu_switch_t fpu_switch;
270
271         fpu_switch = switch_fpu_prepare(prev_fpu, next_fpu, cpu);
272
273         /* We must save %fs and %gs before load_TLS() because
274          * %fs and %gs may be cleared by load_TLS().
275          *
276          * (e.g. xen_load_tls())
277          */
278         savesegment(fs, prev_fsindex);
279         savesegment(gs, prev_gsindex);
280
281         /*
282          * Load TLS before restoring any segments so that segment loads
283          * reference the correct GDT entries.
284          */
285         load_TLS(next, cpu);
286
287         /*
288          * Leave lazy mode, flushing any hypercalls made here.  This
289          * must be done after loading TLS entries in the GDT but before
290          * loading segments that might reference them, and and it must
291          * be done before fpu__restore(), so the TS bit is up to
292          * date.
293          */
294         arch_end_context_switch(next_p);
295
296         /* Switch DS and ES.
297          *
298          * Reading them only returns the selectors, but writing them (if
299          * nonzero) loads the full descriptor from the GDT or LDT.  The
300          * LDT for next is loaded in switch_mm, and the GDT is loaded
301          * above.
302          *
303          * We therefore need to write new values to the segment
304          * registers on every context switch unless both the new and old
305          * values are zero.
306          *
307          * Note that we don't need to do anything for CS and SS, as
308          * those are saved and restored as part of pt_regs.
309          */
310         savesegment(es, prev->es);
311         if (unlikely(next->es | prev->es))
312                 loadsegment(es, next->es);
313
314         savesegment(ds, prev->ds);
315         if (unlikely(next->ds | prev->ds))
316                 loadsegment(ds, next->ds);
317
318         /*
319          * Switch FS and GS.
320          *
321          * These are even more complicated than DS and ES: they have
322          * 64-bit bases are that controlled by arch_prctl.  The bases
323          * don't necessarily match the selectors, as user code can do
324          * any number of things to cause them to be inconsistent.
325          *
326          * We don't promise to preserve the bases if the selectors are
327          * nonzero.  We also don't promise to preserve the base if the
328          * selector is zero and the base doesn't match whatever was
329          * most recently passed to ARCH_SET_FS/GS.  (If/when the
330          * FSGSBASE instructions are enabled, we'll need to offer
331          * stronger guarantees.)
332          *
333          * As an invariant,
334          * (fsbase != 0 && fsindex != 0) || (gsbase != 0 && gsindex != 0) is
335          * impossible.
336          */
337         if (next->fsindex) {
338                 /* Loading a nonzero value into FS sets the index and base. */
339                 loadsegment(fs, next->fsindex);
340         } else {
341                 if (next->fsbase) {
342                         /* Next index is zero but next base is nonzero. */
343                         if (prev_fsindex)
344                                 loadsegment(fs, 0);
345                         wrmsrl(MSR_FS_BASE, next->fsbase);
346                 } else {
347                         /* Next base and index are both zero. */
348                         if (static_cpu_has_bug(X86_BUG_NULL_SEG)) {
349                                 /*
350                                  * We don't know the previous base and can't
351                                  * find out without RDMSR.  Forcibly clear it.
352                                  */
353                                 loadsegment(fs, __USER_DS);
354                                 loadsegment(fs, 0);
355                         } else {
356                                 /*
357                                  * If the previous index is zero and ARCH_SET_FS
358                                  * didn't change the base, then the base is
359                                  * also zero and we don't need to do anything.
360                                  */
361                                 if (prev->fsbase || prev_fsindex)
362                                         loadsegment(fs, 0);
363                         }
364                 }
365         }
366         /*
367          * Save the old state and preserve the invariant.
368          * NB: if prev_fsindex == 0, then we can't reliably learn the base
369          * without RDMSR because Intel user code can zero it without telling
370          * us and AMD user code can program any 32-bit value without telling
371          * us.
372          */
373         if (prev_fsindex)
374                 prev->fsbase = 0;
375         prev->fsindex = prev_fsindex;
376
377         if (next->gsindex) {
378                 /* Loading a nonzero value into GS sets the index and base. */
379                 load_gs_index(next->gsindex);
380         } else {
381                 if (next->gsbase) {
382                         /* Next index is zero but next base is nonzero. */
383                         if (prev_gsindex)
384                                 load_gs_index(0);
385                         wrmsrl(MSR_KERNEL_GS_BASE, next->gsbase);
386                 } else {
387                         /* Next base and index are both zero. */
388                         if (static_cpu_has_bug(X86_BUG_NULL_SEG)) {
389                                 /*
390                                  * We don't know the previous base and can't
391                                  * find out without RDMSR.  Forcibly clear it.
392                                  *
393                                  * This contains a pointless SWAPGS pair.
394                                  * Fixing it would involve an explicit check
395                                  * for Xen or a new pvop.
396                                  */
397                                 load_gs_index(__USER_DS);
398                                 load_gs_index(0);
399                         } else {
400                                 /*
401                                  * If the previous index is zero and ARCH_SET_GS
402                                  * didn't change the base, then the base is
403                                  * also zero and we don't need to do anything.
404                                  */
405                                 if (prev->gsbase || prev_gsindex)
406                                         load_gs_index(0);
407                         }
408                 }
409         }
410         /*
411          * Save the old state and preserve the invariant.
412          * NB: if prev_gsindex == 0, then we can't reliably learn the base
413          * without RDMSR because Intel user code can zero it without telling
414          * us and AMD user code can program any 32-bit value without telling
415          * us.
416          */
417         if (prev_gsindex)
418                 prev->gsbase = 0;
419         prev->gsindex = prev_gsindex;
420
421         switch_fpu_finish(next_fpu, fpu_switch);
422
423         /*
424          * Switch the PDA and FPU contexts.
425          */
426         this_cpu_write(current_task, next_p);
427
428         /* Reload esp0 and ss1.  This changes current_thread_info(). */
429         load_sp0(tss, next);
430
431         /*
432          * Now maybe reload the debug registers and handle I/O bitmaps
433          */
434         if (unlikely(task_thread_info(next_p)->flags & _TIF_WORK_CTXSW_NEXT ||
435                      task_thread_info(prev_p)->flags & _TIF_WORK_CTXSW_PREV))
436                 __switch_to_xtra(prev_p, next_p, tss);
437
438 #ifdef CONFIG_XEN
439         /*
440          * On Xen PV, IOPL bits in pt_regs->flags have no effect, and
441          * current_pt_regs()->flags may not match the current task's
442          * intended IOPL.  We need to switch it manually.
443          */
444         if (unlikely(static_cpu_has(X86_FEATURE_XENPV) &&
445                      prev->iopl != next->iopl))
446                 xen_set_iopl_mask(next->iopl);
447 #endif
448
449         if (static_cpu_has_bug(X86_BUG_SYSRET_SS_ATTRS)) {
450                 /*
451                  * AMD CPUs have a misfeature: SYSRET sets the SS selector but
452                  * does not update the cached descriptor.  As a result, if we
453                  * do SYSRET while SS is NULL, we'll end up in user mode with
454                  * SS apparently equal to __USER_DS but actually unusable.
455                  *
456                  * The straightforward workaround would be to fix it up just
457                  * before SYSRET, but that would slow down the system call
458                  * fast paths.  Instead, we ensure that SS is never NULL in
459                  * system call context.  We do this by replacing NULL SS
460                  * selectors at every context switch.  SYSCALL sets up a valid
461                  * SS, so the only way to get NULL is to re-enter the kernel
462                  * from CPL 3 through an interrupt.  Since that can't happen
463                  * in the same task as a running syscall, we are guaranteed to
464                  * context switch between every interrupt vector entry and a
465                  * subsequent SYSRET.
466                  *
467                  * We read SS first because SS reads are much faster than
468                  * writes.  Out of caution, we force SS to __KERNEL_DS even if
469                  * it previously had a different non-NULL value.
470                  */
471                 unsigned short ss_sel;
472                 savesegment(ss, ss_sel);
473                 if (ss_sel != __KERNEL_DS)
474                         loadsegment(ss, __KERNEL_DS);
475         }
476
477         /* Load the Intel cache allocation PQR MSR. */
478         intel_rdt_sched_in();
479
480         return prev_p;
481 }
482
483 void set_personality_64bit(void)
484 {
485         /* inherit personality from parent */
486
487         /* Make sure to be in 64bit mode */
488         clear_thread_flag(TIF_IA32);
489         clear_thread_flag(TIF_ADDR32);
490         clear_thread_flag(TIF_X32);
491
492         /* Ensure the corresponding mm is not marked. */
493         if (current->mm)
494                 current->mm->context.ia32_compat = 0;
495
496         /* TBD: overwrites user setup. Should have two bits.
497            But 64bit processes have always behaved this way,
498            so it's not too bad. The main problem is just that
499            32bit childs are affected again. */
500         current->personality &= ~READ_IMPLIES_EXEC;
501 }
502
503 void set_personality_ia32(bool x32)
504 {
505         /* inherit personality from parent */
506
507         /* Make sure to be in 32bit mode */
508         set_thread_flag(TIF_ADDR32);
509
510         /* Mark the associated mm as containing 32-bit tasks. */
511         if (x32) {
512                 clear_thread_flag(TIF_IA32);
513                 set_thread_flag(TIF_X32);
514                 if (current->mm)
515                         current->mm->context.ia32_compat = TIF_X32;
516                 current->personality &= ~READ_IMPLIES_EXEC;
517                 /* in_compat_syscall() uses the presence of the x32
518                    syscall bit flag to determine compat status */
519                 current->thread.status &= ~TS_COMPAT;
520         } else {
521                 set_thread_flag(TIF_IA32);
522                 clear_thread_flag(TIF_X32);
523                 if (current->mm)
524                         current->mm->context.ia32_compat = TIF_IA32;
525                 current->personality |= force_personality32;
526                 /* Prepare the first "return" to user space */
527                 current->thread.status |= TS_COMPAT;
528         }
529 }
530 EXPORT_SYMBOL_GPL(set_personality_ia32);
531
532 #ifdef CONFIG_CHECKPOINT_RESTORE
533 static long prctl_map_vdso(const struct vdso_image *image, unsigned long addr)
534 {
535         int ret;
536
537         ret = map_vdso_once(image, addr);
538         if (ret)
539                 return ret;
540
541         return (long)image->size;
542 }
543 #endif
544
545 long do_arch_prctl(struct task_struct *task, int code, unsigned long addr)
546 {
547         int ret = 0;
548         int doit = task == current;
549         int cpu;
550
551         switch (code) {
552         case ARCH_SET_GS:
553                 if (addr >= TASK_SIZE_MAX)
554                         return -EPERM;
555                 cpu = get_cpu();
556                 task->thread.gsindex = 0;
557                 task->thread.gsbase = addr;
558                 if (doit) {
559                         load_gs_index(0);
560                         ret = wrmsrl_safe(MSR_KERNEL_GS_BASE, addr);
561                 }
562                 put_cpu();
563                 break;
564         case ARCH_SET_FS:
565                 /* Not strictly needed for fs, but do it for symmetry
566                    with gs */
567                 if (addr >= TASK_SIZE_MAX)
568                         return -EPERM;
569                 cpu = get_cpu();
570                 task->thread.fsindex = 0;
571                 task->thread.fsbase = addr;
572                 if (doit) {
573                         /* set the selector to 0 to not confuse __switch_to */
574                         loadsegment(fs, 0);
575                         ret = wrmsrl_safe(MSR_FS_BASE, addr);
576                 }
577                 put_cpu();
578                 break;
579         case ARCH_GET_FS: {
580                 unsigned long base;
581                 if (doit)
582                         rdmsrl(MSR_FS_BASE, base);
583                 else
584                         base = task->thread.fsbase;
585                 ret = put_user(base, (unsigned long __user *)addr);
586                 break;
587         }
588         case ARCH_GET_GS: {
589                 unsigned long base;
590                 if (doit)
591                         rdmsrl(MSR_KERNEL_GS_BASE, base);
592                 else
593                         base = task->thread.gsbase;
594                 ret = put_user(base, (unsigned long __user *)addr);
595                 break;
596         }
597
598 #ifdef CONFIG_CHECKPOINT_RESTORE
599 # ifdef CONFIG_X86_X32_ABI
600         case ARCH_MAP_VDSO_X32:
601                 return prctl_map_vdso(&vdso_image_x32, addr);
602 # endif
603 # if defined CONFIG_X86_32 || defined CONFIG_IA32_EMULATION
604         case ARCH_MAP_VDSO_32:
605                 return prctl_map_vdso(&vdso_image_32, addr);
606 # endif
607         case ARCH_MAP_VDSO_64:
608                 return prctl_map_vdso(&vdso_image_64, addr);
609 #endif
610
611         default:
612                 ret = -EINVAL;
613                 break;
614         }
615
616         return ret;
617 }
618
619 long sys_arch_prctl(int code, unsigned long addr)
620 {
621         return do_arch_prctl(current, code, addr);
622 }
623
624 unsigned long KSTK_ESP(struct task_struct *task)
625 {
626         return task_pt_regs(task)->sp;
627 }