#
df114dae |
| 03-Jul-2025 |
Ruslan Bukin <br@FreeBSD.org> |
Import the Hardware Trace (HWT) framework.
The HWT framework provides infrastructure for hardware-assisted tracing. It collects detailed information about software execution and records it as "event
Import the Hardware Trace (HWT) framework.
The HWT framework provides infrastructure for hardware-assisted tracing. It collects detailed information about software execution and records it as "events" in highly compressed format into DRAM. The events cover information about control flow changes of a program, whether branches taken or not, exceptions taken, timing information, cycles elapsed and more. This allows to reconstruct entire program flow of a given application.
This comes with separate machine-dependent tracing backends for trace collection, trace decoder libraries and an instrumentation tool.
Reviewed by: kib (sys/kern bits) Sponsored by: UKRI Differential Revision: https://reviews.freebsd.org/D40466
show more ...
|
Revision tags: release/14.3.0 |
|
#
56a4d1a4 |
| 04-Jun-2025 |
Konstantin Belousov <kib@FreeBSD.org> |
ktrace: trace and decode thr_new() thr_param
Sponsored by: The FreeBSD Foundation MFC after: 1 week
|
#
3556ffa6 |
| 31-May-2025 |
Konstantin Belousov <kib@FreeBSD.org> |
kern_thr.c: fix typo
Fixes: c25ddffc51a1e2c0e03fa Sponsored by: The FreeBSD Foundation MFC after: 1 week
|
#
c25ddffc |
| 31-May-2025 |
Konstantin Belousov <kib@FreeBSD.org> |
thr_new(2): check param.flags for reserved bits
Sponsored by: The FreeBSD Foundation MFC after: 1 week
|
#
2b8b37c8 |
| 30-May-2025 |
Konstantin Belousov <kib@FreeBSD.org> |
thr_new: pass params.flags to cpu_set_user_tls()
Sponsored by: The FreeBSD Foundation MFC after: 1 week
|
Revision tags: release/13.4.0-p5, release/13.5.0-p1, release/14.2.0-p3, release/13.5.0, release/14.2.0-p2, release/14.1.0-p8, release/13.4.0-p4, release/14.1.0-p7, release/14.2.0-p1, release/13.4.0-p3, release/14.2.0, release/13.4.0, release/14.1.0 |
|
#
0c11c179 |
| 19-Apr-2024 |
Konstantin Belousov <kib@FreeBSD.org> |
kern_thr.c: normalize includes
Remove extra sys/param.h, provided by sys/systm.h. Order the rest alphabetically.
Reviewed by: markj Sponsored by: The FreeBSD Foundation MFC after: 1 week Differenti
kern_thr.c: normalize includes
Remove extra sys/param.h, provided by sys/systm.h. Order the rest alphabetically.
Reviewed by: markj Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D44867
show more ...
|
#
2effad53 |
| 19-Apr-2024 |
Konstantin Belousov <kib@FreeBSD.org> |
kern_thr.c/kern_sig.c: remove sys/cdefs.h
Reviewed by: markj Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D44867
|
Revision tags: release/13.3.0 |
|
#
f450277f |
| 26-Dec-2023 |
Mark Johnston <markj@FreeBSD.org> |
thread: Ignore errors when copying out during thr_exit()
It does not seem reasonable to return to userspace after calling umtx_thread_exit().
This is in preparation for annotating copyin() and rela
thread: Ignore errors when copying out during thr_exit()
It does not seem reasonable to return to userspace after calling umtx_thread_exit().
This is in preparation for annotating copyin() and related functions with __result_use_check.
Reviewed by: olce, kib MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D43143
show more ...
|
#
7b68fb5a |
| 26-Dec-2023 |
Mark Johnston <markj@FreeBSD.org> |
thread: Add a return value to cpu_set_upcall()
Some implementations copy data to userspace, an operation which can in principle fail. In preparation for adding a __result_use_check annotation to co
thread: Add a return value to cpu_set_upcall()
Some implementations copy data to userspace, an operation which can in principle fail. In preparation for adding a __result_use_check annotation to copyin() and related functions, let implementations of cpu_set_upcall() return an error, and check for errors when copying data to user memory.
Reviewed by: kib, jhb MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D43100
show more ...
|
Revision tags: release/14.0.0 |
|
#
685dc743 |
| 16-Aug-2023 |
Warner Losh <imp@FreeBSD.org> |
sys: Remove $FreeBSD$: one-line .c pattern
Remove /^[\s*]*__FBSDID\("\$FreeBSD\$"\);?\s*\n/
|
#
4d846d26 |
| 10-May-2023 |
Warner Losh <imp@FreeBSD.org> |
spdx: The BSD-2-Clause-FreeBSD identifier is obsolete, drop -FreeBSD
The SPDX folks have obsoleted the BSD-2-Clause-FreeBSD identifier. Catch up to that fact and revert to their recommended match of
spdx: The BSD-2-Clause-FreeBSD identifier is obsolete, drop -FreeBSD
The SPDX folks have obsoleted the BSD-2-Clause-FreeBSD identifier. Catch up to that fact and revert to their recommended match of BSD-2-Clause.
Discussed with: pfg MFC After: 3 days Sponsored by: Netflix
show more ...
|
Revision tags: release/13.2.0, release/12.4.0 |
|
#
1b0a4974 |
| 07-Aug-2022 |
Konstantin Belousov <kib@FreeBSD.org> |
thread_create(): call cpu_copy_thread() after td_pflags is zeroed
By calling the function too early we might still have the td_pflags value cached from the previous struct thread use. cpu_copy_threa
thread_create(): call cpu_copy_thread() after td_pflags is zeroed
By calling the function too early we might still have the td_pflags value cached from the previous struct thread use. cpu_copy_thread() depends on correct value for TDP_KTHREAD at least on x86.
Reported, bisected, and tested by: pho Reviewed by: markj Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D36069
show more ...
|
#
c6d31b83 |
| 18-Jul-2022 |
Konstantin Belousov <kib@FreeBSD.org> |
AST: rework
Make most AST handlers dynamically registered. This allows to have subsystem-specific handler source located in the subsystem files, instead of making subr_trap.c aware of it. For inst
AST: rework
Make most AST handlers dynamically registered. This allows to have subsystem-specific handler source located in the subsystem files, instead of making subr_trap.c aware of it. For instance, signal delivery code on return to userspace is now moved to kern_sig.c.
Also, it allows to have some handlers designated as the cleanup (kclear) type, which are called both at AST and on thread/process exit. For instance, ast(), exit1(), and NFS server no longer need to be aware about UFS softdep processing.
The dynamic registration also allows third-party modules to register AST handlers if needed. There is one caveat with loadable modules: the code does not make any effort to ensure that the module is not unloaded before all threads processed through AST handler in it. In fact, this is already present behavior for hwpmc.ko and ufs.ko. I do not think it is worth the efforts and the runtime overhead to try to fix it.
Reviewed by: markj Tested by: emaste (arm64), pho Discussed with: jhb Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D35888
show more ...
|
Revision tags: release/13.1.0, release/12.3.0 |
|
#
af29f399 |
| 29-Jul-2021 |
Dmitry Chagin <dchagin@FreeBSD.org> |
umtx: Split umtx.h on two counterparts.
To prevent umtx.h polluting by future changes split it on two headers: umtx.h - ABI header for userspace; umtxvar.h - the kernel staff.
While here fix umtx_k
umtx: Split umtx.h on two counterparts.
To prevent umtx.h polluting by future changes split it on two headers: umtx.h - ABI header for userspace; umtxvar.h - the kernel staff.
While here fix umtx_key_match style.
Reviewed by: kib Differential Revision: https://reviews.freebsd.org/D31248 MFC after: 2 weeks
show more ...
|
Revision tags: release/13.0.0 |
|
#
87a9b18d |
| 23-Nov-2020 |
Konstantin Belousov <kib@FreeBSD.org> |
Provide ABI modules hooks for process exec/exit and thread exit.
Exec and exit are same as corresponding eventhandler hooks.
Thread exit hook is called somewhat earlier, while thread is still owned
Provide ABI modules hooks for process exec/exit and thread exit.
Exec and exit are same as corresponding eventhandler hooks.
Thread exit hook is called somewhat earlier, while thread is still owned by the process and enough context is available. Note that the process lock is owned when the hook is called.
Reviewed by: markj Sponsored by: The FreeBSD Foundation Differential revision: https://reviews.freebsd.org/D27309
show more ...
|
#
aae3547b |
| 11-Nov-2020 |
Mateusz Guzik <mjg@FreeBSD.org> |
thread: rework tidhash vs proc lock interaction
Apart from minor clean up this gets rid of proc unlock/lock cycle on thread exit to work around LOR against tidhash lock.
|
#
1bd3cf5d |
| 10-Nov-2020 |
Mateusz Guzik <mjg@FreeBSD.org> |
threads: introduce a limit for total number
The intent is to replace the current id allocation method and a known upper bound will be useful.
Reviewed by: kib (previous version), markj (previous ve
threads: introduce a limit for total number
The intent is to replace the current id allocation method and a known upper bound will be useful.
Reviewed by: kib (previous version), markj (previous version) Tested by: pho Differential Revision: https://reviews.freebsd.org/D27100
show more ...
|
Revision tags: release/12.2.0, release/11.4.0 |
|
#
75dfc66c |
| 27-Feb-2020 |
Dimitry Andric <dim@FreeBSD.org> |
Merge ^/head r358269 through r358399.
|
#
7029da5c |
| 26-Feb-2020 |
Pawel Biernacki <kaktus@FreeBSD.org> |
Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (17 of many)
r357614 added CTLFLAG_NEEDGIANT to make it easier to find nodes that are still not MPSAFE (or already are but aren’t properly mark
Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (17 of many)
r357614 added CTLFLAG_NEEDGIANT to make it easier to find nodes that are still not MPSAFE (or already are but aren’t properly marked). Use it in preparation for a general review of all nodes.
This is non-functional change that adds annotations to SYSCTL_NODE and SYSCTL_PROC nodes using one of the soon-to-be-required flags.
Mark all obvious cases as MPSAFE. All entries that haven't been marked as MPSAFE before are by default marked as NEEDGIANT
Approved by: kib (mentor, blanket) Commented by: kib, gallatin, melifaro Differential Revision: https://reviews.freebsd.org/D23718
show more ...
|
#
bc02c18c |
| 07-Feb-2020 |
Dimitry Andric <dim@FreeBSD.org> |
Merge ^/head r357408 through r357661.
|
#
c8ea36e8 |
| 04-Feb-2020 |
Jeff Roberson <jeff@FreeBSD.org> |
Fix a recursion on the thread lock by acquiring it after call rtp_to_pri().
Reported by: swills Reviewed by: kib, markj Differential Revision: https://reviews.freebsd.org/D23495
|
#
61a74c5c |
| 15-Dec-2019 |
Jeff Roberson <jeff@FreeBSD.org> |
schedlock 1/4
Eliminate recursion from most thread_lock consumers. Return from sched_add() without the thread_lock held. This eliminates unnecessary atomics and lock word loads as well as reducing
schedlock 1/4
Eliminate recursion from most thread_lock consumers. Return from sched_add() without the thread_lock held. This eliminates unnecessary atomics and lock word loads as well as reducing the hold time for scheduler locks. This will eventually allow for lockless remote adds.
Discussed with: kib Reviewed by: jhb Tested by: pho Differential Revision: https://reviews.freebsd.org/D22626
show more ...
|
Revision tags: release/12.1.0, release/11.3.0, release/12.0.0 |
|
#
8a894c1a |
| 11-Jul-2018 |
Alan Somers <asomers@FreeBSD.org> |
Don't acquire evclass_lock with a spinlock held
When the "pc" audit class is enabled and auditd is running, witness will panic during thread exit because au_event_class tries to lock an rwlock while
Don't acquire evclass_lock with a spinlock held
When the "pc" audit class is enabled and auditd is running, witness will panic during thread exit because au_event_class tries to lock an rwlock while holding a spinlock acquired upstack by thread_exit.
To fix this, move AUDIT_SYSCALL_EXIT futher upstack, before the spinlock is acquired. Of thread_exit's 16 callers, it's only necessary to call AUDIT_SYSCALL_EXIT from two, exit1 (for exiting processes) and kern_thr_exit (for exiting threads). The other callers are all kernel threads, which needen't call AUDIT_SYSCALL_EXIT because since they can't make syscalls there will be nothing to audit. And exit1 already does call AUDIT_SYSCALL_EXIT, making the second call in thread_exit redundant for that case.
PR: 228444 Reported by: aniketp Reviewed by: aniketp, kib MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D16210
show more ...
|
Revision tags: release/11.2.0 |
|
#
ebfaf69c |
| 05-Jun-2018 |
Matt Macy <mmacy@FreeBSD.org> |
hwpmc: log name->pid, name->tid mappings
By logging all threads and processes 'pmc filter' can now filter on process or thread name, relieving the user of the burden of determining which tid or pid
hwpmc: log name->pid, name->tid mappings
By logging all threads and processes 'pmc filter' can now filter on process or thread name, relieving the user of the burden of determining which tid or pid was which when the sample was taken.
% pmc filter -T if_io_tqg -P nginx pmc.log pmc-iflib.log
% pmc filter -x -T idle pmc.log pmc-noidle.log
show more ...
|
#
6161b98c |
| 17-May-2018 |
Matt Macy <mmacy@FreeBSD.org> |
hwpmc: Implement per-thread counters for PMC sampling
This implements per-thread counters for PMC sampling. The thread descriptors are stored in a list attached to the process descriptor. These thre
hwpmc: Implement per-thread counters for PMC sampling
This implements per-thread counters for PMC sampling. The thread descriptors are stored in a list attached to the process descriptor. These thread descriptors can store any per-thread information necessary for current or future features. For the moment, they just store the counters for sampling.
The thread descriptors are created when the process descriptor is created. Additionally, thread descriptors are created or freed when threads are started or stopped. Because the thread exit function is called in a critical section, we can't directly free the thread descriptors. Hence, they are freed to a cache, which is also used as a source of allocations when needed for new threads.
Approved by: sbruno Obtained from: jtl Sponsored by: Juniper Networks, Limelight Networks Differential Revision: https://reviews.freebsd.org/D15335
show more ...
|