#include #define AX 0 #define BX 1 * 8 #define CX 2 * 8 #define DX 3 * 8 #define SI 4 * 8 #define DI 5 * 8 #define BP 6 * 8 #define SP 7 * 8 #define IP 8 * 8 #define FLAGS 9 * 8 #define CS 10 * 8 #define SS 11 * 8 #define DS 12 * 8 #define ES 13 * 8 #define FS 14 * 8 #define GS 15 * 8 #define R8 16 * 8 #define R9 17 * 8 #define R10 18 * 8 #define R11 19 * 8 #define R12 20 * 8 #define R13 21 * 8 #define R14 22 * 8 #define R15 23 * 8 .text #ifdef HAVE_ARCH_X86_64_SUPPORT ENTRY(perf_regs_load) movq %rax, AX(%rdi) movq %rbx, BX(%rdi) movq %rcx, CX(%rdi) movq %rdx, DX(%rdi) movq %rsi, SI(%rdi) movq %rdi, DI(%rdi) movq %rbp, BP(%rdi) leaq 8(%rsp), %rax /* exclude this call. */ movq %rax, SP(%rdi) movq 0(%rsp), %rax movq %rax, IP(%rdi) movq $0, FLAGS(%rdi) movq $0, CS(%rdi) movq $0, SS(%rdi) movq $0, DS(%rdi) movq $0, ES(%rdi) movq $0, FS(%rdi) movq $0, GS(%rdi) movq %r8, R8(%rdi) movq %r9, R9(%rdi) movq %r10, R10(%rdi) movq %r11, R11(%rdi) movq %r12, R12(%rdi) movq %r13, R13(%rdi) movq %r14, R14(%rdi) movq %r15, R15(%rdi) ret ENDPROC(perf_regs_load) #else ENTRY(perf_regs_load) push %edi movl 8(%esp), %edi movl %eax, AX(%edi) movl %ebx, BX(%edi) movl %ecx, CX(%edi) movl %edx, DX(%edi) movl %esi, SI(%edi) pop %eax movl %eax, DI(%edi) movl %ebp, BP(%edi) leal 4(%esp), %eax /* exclude this call. */ movl %eax, SP(%edi) movl 0(%esp), %eax movl %eax, IP(%edi) movl $0, FLAGS(%edi) movl $0, CS(%edi) movl $0, SS(%edi) movl $0, DS(%edi) movl $0, ES(%edi) movl $0, FS(%edi) movl $0, GS(%edi) ret ENDPROC(perf_regs_load) #endif /* * We need to provide note.GNU-stack section, saying that we want * NOT executable stack. Otherwise the final linking will assume that * the ELF stack should not be restricted at all and set it RWX. */ .section .note.GNU-stack,"",@progbits c421a4ca76468'>treecommitdiff
path: root/fs/nfsd/flexfilelayoutxdr.h
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2017-01-31 23:58:38 +0100
committerIngo Molnar <mingo@kernel.org>2017-02-01 08:37:27 +0100
commitdd86e373e09fb16b83e8adf5c48c421a4ca76468 (patch)
tree55703c2ea8584e303e342090614e0aab3509ab21 /fs/nfsd/flexfilelayoutxdr.h
parent0b3589be9b98994ce3d5aeca52445d1f5627c4ba (diff)
perf/x86/intel/rapl: Make package handling more robust
The package management code in RAPL relies on package mapping being available before a CPU is started. This changed with: 9d85eb9119f4 ("x86/smpboot: Make logical package management more robust") because the ACPI/BIOS information turned out to be unreliable, but that left RAPL in broken state. This was not noticed because on a regular boot all CPUs are online before RAPL is initialized. A possible fix would be to reintroduce the mess which allocates a package data structure in CPU prepare and when it turns out to already exist in starting throw it away later in the CPU online callback. But that's a horrible hack and not required at all because RAPL becomes functional for perf only in the CPU online callback. That's correct because user space is not yet informed about the CPU being onlined, so nothing caan rely on RAPL being available on that particular CPU. Move the allocation to the CPU online callback and simplify the hotplug handling. At this point the package mapping is established and correct. This also adds a missing check for available package data in the event_init() function. Reported-by: Yasuaki Ishimatsu <yasu.isimatu@gmail.com> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Arnaldo Carvalho de Melo <acme@redhat.com> Cc: Jiri Olsa <jolsa@redhat.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Sebastian Siewior <bigeasy@linutronix.de> Cc: Stephane Eranian <eranian@google.com> Cc: Vince Weaver <vincent.weaver@maine.edu> Fixes: 9d85eb9119f4 ("x86/smpboot: Make logical package management more robust") Link: http://lkml.kernel.org/r/20170131230141.212593966@linutronix.de Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'fs/nfsd/flexfilelayoutxdr.h')