| /linux/kernel/ |
| H A D | rseq.c | 241 struct rseq __user *urseq = t->rseq.usrptr; in rseq_handle_cs() 292 event = t->rseq.event.sched_switch; in rseq_slowpath_update_usr() 293 t->rseq.event.all &= evt_mask.all; in rseq_slowpath_update_usr() 308 t->rseq.event.error = 0; in rseq_slowpath_update_usr() 347 current->rseq.event.error = 0; in __rseq_signal_deliver() 368 if (!t->rseq.event.has_rseq) in __rseq_debug_syscall_return() 370 if (get_user(csaddr, &t->rseq.usrptr->rseq_cs)) in __rseq_debug_syscall_return() 392 struct rseq __user *rseq = current->rseq.usrptr; in rseq_reset_ids() local 399 scoped_user_rw_access(rseq, efault) { in rseq_reset_ids() 400 unsafe_put_user(0, &rseq->cpu_id_start, efault); in rseq_reset_ids() [all …]
|
| H A D | ptrace.c | 807 .rseq_abi_pointer = (u64)(uintptr_t)task->rseq.usrptr, in ptrace_get_rseq_configuration() 808 .rseq_abi_size = task->rseq.len, in ptrace_get_rseq_configuration() 809 .signature = task->rseq.sig, in ptrace_get_rseq_configuration()
|
| /linux/include/linux/ |
| H A D | rseq_entry.h | 101 if (likely(!current->rseq.slice.state.granted)) in rseq_arm_slice_extension_timer() 109 if (IS_ENABLED(CONFIG_RSEQ_STATS) && t->rseq.slice.state.granted) in rseq_slice_clear_grant() 111 t->rseq.slice.state.granted = false; in rseq_slice_clear_grant() 122 #define rseq_slice_clear_user(rseq, efault) \ argument 125 unsafe_put_user(0U, &rseq->slice_ctrl.all, efault); \ 133 struct rseq __user *rseq; in __rseq_grant_slice_extension() local 139 state = curr->rseq.slice.state; in __rseq_grant_slice_extension() 140 state.enabled &= curr->rseq.event.user_irq; in __rseq_grant_slice_extension() 144 rseq = curr->rseq.usrptr; in __rseq_grant_slice_extension() 145 scoped_user_rw_access(rseq, efault) { in __rseq_grant_slice_extension() [all …]
|
| H A D | rseq.h | 14 return IS_ENABLED(CONFIG_GENERIC_IRQ_ENTRY) && likely(t->rseq.event.has_rseq > 1); in rseq_v2() 21 if (current->rseq.event.slowpath) in rseq_handle_slowpath() 24 if (current->rseq.event.sched_switch && current->rseq.event.has_rseq) in rseq_handle_slowpath() 39 if (current->rseq.event.user_irq) in rseq_signal_deliver() 42 if (current->rseq.event.has_rseq) in rseq_signal_deliver() 55 struct rseq_event *ev = &t->rseq.event; in rseq_sched_switch_event() 80 t->rseq.event.ids_changed = true; in rseq_sched_switch_event() 81 t->rseq.event.sched_switch = true; in rseq_sched_switch_event() 96 t->rseq.event.ids_changed = true; in rseq_sched_set_ids_changed() 102 if (current->rseq.event.has_rseq) { in rseq_force_update() [all …]
|
| H A D | rseq_types.h | 10 struct rseq; 120 struct rseq __user *usrptr;
|
| H A D | sched.h | 1414 struct rseq_data rseq; member
|
| /linux/tools/testing/selftests/rseq/ |
| H A D | Makefile | 36 $(OUTPUT)/librseq.so: rseq.c rseq.h rseq-*.h 39 $(OUTPUT)/%: %.c $(TEST_GEN_PROGS_EXTENDED) rseq.h rseq-*.h 42 …T)/basic_percpu_ops_mm_cid_test: basic_percpu_ops_test.c $(TEST_GEN_PROGS_EXTENDED) rseq.h rseq-*.h 46 rseq.h rseq-*.h 50 rseq.h rseq-*.h 54 rseq.h rseq-*.h 58 rseq.h rseq-*.h 62 rseq.h rseq-*.h 66 rseq.h rseq-*.h 69 $(OUTPUT)/slice_test: slice_test.c $(TEST_GEN_PROGS_EXTENDED) rseq.h rseq-*.h [all …]
|
| /linux/Documentation/userspace-api/ |
| H A D | rseq.rst | 131 * A rseq userspace pointer has been registered for the thread in 147 ENXIO Available, but no rseq user struct registered 164 The availability and status is also exposed via the rseq ABI struct flags 170 slice extension by setting rseq::slice_ctrl::request to 1. If the thread is 174 determined by debugfs:rseq/slice_ext_nsec. The default value is 5 usec; which 179 rseq-slice-hist.py output that shows the new value has merrit. 181 The kernel indicates the grant by clearing rseq::slice_ctrl::request and 182 setting rseq::slice_ctrl::granted to 1. If there is a reschedule of the 200 rseq->slice_ctrl.request = 1; 204 rseq->slice_ctrl.request = 0; [all …]
|
| /linux/include/uapi/linux/ |
| H A D | rseq.h | 102 struct rseq { struct
|
| /linux/tools/testing/selftests/ |
| H A D | Makefile | 105 TARGETS += rseq
|
| /linux/tools/perf/arch/mips/entry/syscalls/ |
| H A D | syscall_n64.tbl | 338 327 n64 rseq sys_rseq
|
| /linux/tools/testing/selftests/kvm/ |
| H A D | Makefile.kvm | 270 -I ../rseq -I.. $(EXTRA_CFLAGS) $(KHDR_INCLUDES)
|
| /linux/scripts/ |
| H A D | syscall.tbl | 344 293 common rseq sys_rseq
|
| /linux/tools/scripts/ |
| H A D | syscall.tbl | 344 293 common rseq sys_rseq
|
| /linux/tools/perf/arch/s390/entry/syscalls/ |
| H A D | syscall.tbl | 337 383 common rseq sys_rseq
|
| /linux/tools/perf/arch/sh/entry/syscalls/ |
| H A D | syscall.tbl | 397 387 common rseq sys_rseq
|
| /linux/tools/perf/arch/xtensa/entry/syscalls/ |
| H A D | syscall.tbl | 375 352 common rseq sys_rseq
|
| /linux/tools/perf/arch/x86/entry/syscalls/ |
| H A D | syscall_64.tbl | 346 334 common rseq sys_rseq
|
| H A D | syscall_32.tbl | 401 386 i386 rseq sys_rseq
|
| /linux/tools/perf/arch/sparc/entry/syscalls/ |
| H A D | syscall.tbl | 439 365 common rseq sys_rseq
|
| /linux/tools/perf/arch/arm/entry/syscalls/ |
| H A D | syscall.tbl | 416 398 common rseq sys_rseq
|
| /linux/tools/perf/arch/powerpc/entry/syscalls/ |
| H A D | syscall.tbl | 482 387 nospu rseq sys_rseq
|
| /linux/init/ |
| H A D | Kconfig | 1964 bool "Enable rseq() system call" if EXPERT 1978 bool "Enable rseq-based time slice extension mechanism" 2016 bool "Enable debugging of rseq() system call" if EXPERT 2020 Enable extra debugging checks for the rseq system call.
|
| /linux/fs/ |
| H A D | binfmt_elf.c | 289 NEW_AUX_ENT(AT_RSEQ_FEATURE_SIZE, offsetof(struct rseq, end)); in create_elf_tables()
|
| /linux/ |
| H A D | MAINTAINERS | 22871 F: include/trace/events/rseq.h 22872 F: include/uapi/linux/rseq.h 22873 F: kernel/rseq.c 22874 F: tools/testing/selftests/rseq/
|