CVS log for src/sys/kern/subr_kcov.c
Up to [cvs.NetBSD.org] / src / sys / kern
Request diff between arbitrary revisions
Keyword substitution: kv
Default branch: MAIN
Revision 1.18: download - view: text, markup, annotated - select for diffs
Wed Oct 26 23:24:21 2022 UTC (2 years, 3 months ago) by riastradh
Branches: MAIN
CVS tags: thorpej-ifq-base,
thorpej-ifq,
thorpej-altq-separation-base,
thorpej-altq-separation,
perseant-exfatfs-base-20240630,
perseant-exfatfs-base,
perseant-exfatfs,
netbsd-10-base,
netbsd-10-1-RELEASE,
netbsd-10-0-RELEASE,
netbsd-10-0-RC6,
netbsd-10-0-RC5,
netbsd-10-0-RC4,
netbsd-10-0-RC3,
netbsd-10-0-RC2,
netbsd-10-0-RC1,
netbsd-10,
HEAD
Diff to: previous 1.17: preferred, colored
Changes since revision 1.17: +1 -3
lines
kern/subr_kcov.c: We already get cold from sys/kernel.h.
Revision 1.17: download - view: text, markup, annotated - select for diffs
Wed Jul 6 01:12:46 2022 UTC (2 years, 7 months ago) by riastradh
Branches: MAIN
CVS tags: bouyer-sunxi-drm-base,
bouyer-sunxi-drm
Diff to: previous 1.16: preferred, colored
Changes since revision 1.16: +3 -1
lines
uvm(9): fo_mmap caller guarantees positive size.
No functional change intended, just sprinkling assertions to make it
clearer.
Revision 1.16: download - view: text, markup, annotated - select for diffs
Fri Jul 3 16:11:11 2020 UTC (4 years, 7 months ago) by maxv
Branches: MAIN
CVS tags: thorpej-i2c-spi-conf2-base,
thorpej-i2c-spi-conf2,
thorpej-i2c-spi-conf-base,
thorpej-i2c-spi-conf,
thorpej-futex2-base,
thorpej-futex2,
thorpej-futex-base,
thorpej-futex,
thorpej-cfargs2-base,
thorpej-cfargs2,
thorpej-cfargs-base,
thorpej-cfargs,
cjep_sun2x-base1,
cjep_sun2x-base,
cjep_sun2x,
cjep_staticlib_x-base1,
cjep_staticlib_x-base,
cjep_staticlib_x
Diff to: previous 1.15: preferred, colored
Changes since revision 1.15: +7 -1
lines
Sync trace-pc and trace-cmp.
Revision 1.15: download - view: text, markup, annotated - select for diffs
Sat May 16 17:42:06 2020 UTC (4 years, 8 months ago) by hannken
Branches: MAIN
Diff to: previous 1.14: preferred, colored
Changes since revision 1.14: +3 -3
lines
Add __diagused, amd64 kernel ALL compiles again.
Revision 1.14: download - view: text, markup, annotated - select for diffs
Fri May 15 13:09:02 2020 UTC (4 years, 9 months ago) by maxv
Branches: MAIN
Diff to: previous 1.13: preferred, colored
Changes since revision 1.13: +27 -1
lines
Introduce kcov_silence_enter() and kcov_silence_leave(), to allow to
temporarily disable KCOV on the current lwp. Should be used in the rare
but problematic cases where extreme noise is introduced by an
uninteresting subsystem.
Use this capability to silence KCOV during the LOCKDEBUG lookups. This
divides the size of the KCOV output by more than two in my KCOV+vHCI
tests.
Revision 1.13: download - view: text, markup, annotated - select for diffs
Fri May 15 12:34:52 2020 UTC (4 years, 9 months ago) by maxv
Branches: MAIN
Diff to: previous 1.12: preferred, colored
Changes since revision 1.12: +253 -52
lines
Introduce KCOV remote support. This allows to collect KCOV coverage on
threads other than curlwp, which is useful when fuzzing components that
defer processing, such as the network stack (partially runs in softints)
and the USB stack (partially runs in uhub kthreads).
A subsystem that whishes to provide coverage for its threads creates a
"mailbox" via kcov_remote_register() and gives it a (subsystem, id)
identifier. There is one mailbox per "target lwp". The target lwp(s)
must then call kcov_remote_enter() and kcov_remote_leave() with the
identifier, to respectively enable and disable coverage within the
thread.
On the userland side, the fuzzer has access to the mailboxes on the
system with the KCOV_IOC_REMOTE_ATTACH and KCOV_IOC_REMOTE_DETACH ioctls.
When attached to a mailbox with a given identifier, the KCOV_IOC_ENABLE,
KCOV_IOC_DISABLE and mmap() operations will affect the mailbox.
As a demonstrator, the vHCI subsystem is changed to use KCOV mailboxes.
When the vHCI bus attaches it creates as many mailboxes as it has USB
ports, each mailbox being associated with a distinct port. Uhub is changed
to enable KCOV coverage in usbd_new_device(). With that in place, all of
the USB enumeration procedure can be traced with KCOV.
Revision 1.8.2.3: download - view: text, markup, annotated - select for diffs
Mon Apr 13 08:05:04 2020 UTC (4 years, 10 months ago) by martin
Branches: phil-wifi
Diff to: previous 1.8.2.2: preferred, colored; branchpoint 1.8: preferred, colored; next MAIN 1.9: preferred, colored
Changes since revision 1.8.2.2: +31 -33
lines
Mostly merge changes from HEAD upto 20200411
Revision 1.12: download - view: text, markup, annotated - select for diffs
Sat Apr 4 06:51:46 2020 UTC (4 years, 10 months ago) by maxv
Branches: MAIN
CVS tags: phil-wifi-20200421,
phil-wifi-20200411,
phil-wifi-20200406,
bouyer-xenpvh-base2,
bouyer-xenpvh-base1,
bouyer-xenpvh-base,
bouyer-xenpvh
Diff to: previous 1.11: preferred, colored
Changes since revision 1.11: +19 -21
lines
Drop specificdata from KCOV, kMSan doesn't interact well with it. Also
reduces the overhead.
Revision 1.11: download - view: text, markup, annotated - select for diffs
Sat Dec 7 19:50:33 2019 UTC (5 years, 2 months ago) by kamil
Branches: MAIN
CVS tags: is-mlppp-base,
is-mlppp,
ad-namecache-base3,
ad-namecache-base2,
ad-namecache-base1,
ad-namecache-base,
ad-namecache
Diff to: previous 1.10: preferred, colored
Changes since revision 1.10: +2 -3
lines
Revert the in_interrupt() change to use again the x86 specific code
This is prerequisite for kMSan and upcoming kernel changes.
Discussed with <maxv>
Revision 1.10: download - view: text, markup, annotated - select for diffs
Sun Dec 1 17:41:11 2019 UTC (5 years, 2 months ago) by kamil
Branches: MAIN
Diff to: previous 1.9: preferred, colored
Changes since revision 1.9: +3 -2
lines
Switch in_interrupt() in KCOV to cpu_intr_p()
This makes KCOV more MI friendly and removes x86-specific in_interrupt()
implementation.
Revision 1.9: download - view: text, markup, annotated - select for diffs
Fri Nov 15 09:44:44 2019 UTC (5 years, 2 months ago) by maxv
Branches: MAIN
CVS tags: phil-wifi-20191119
Diff to: previous 1.8: preferred, colored
Changes since revision 1.8: +13 -13
lines
Make kMSan compatible with KCOV. With kMSan we are forced to stay with the
fsanitize flag on subr_kcov.c, which means that kMSan will instrument KCOV.
We add a bunch of __nomsan attributes to reduce this instrumentation, but
it does not remove it completely. That's fine.
Revision 1.8.2.2: download - view: text, markup, annotated - select for diffs
Mon Jun 10 22:09:03 2019 UTC (5 years, 8 months ago) by christos
Branches: phil-wifi
Diff to: previous 1.8.2.1: preferred, colored; branchpoint 1.8: preferred, colored
Changes since revision 1.8.2.1: +572 -0
lines
Sync with HEAD
Revision 1.8.2.1
Sun May 26 05:41:45 2019 UTC (5 years, 8 months ago) by christos
Branches: phil-wifi
FILE REMOVED
Changes since revision 1.8: +0 -572
lines
file subr_kcov.c was added on branch phil-wifi on 2019-06-10 22:09:03 +0000
Revision 1.8: download - view: text, markup, annotated - select for diffs
Sun May 26 05:41:45 2019 UTC (5 years, 8 months ago) by kamil
Branches: MAIN
CVS tags: phil-wifi-20190609,
netbsd-9-base,
netbsd-9-4-RELEASE,
netbsd-9-3-RELEASE,
netbsd-9-2-RELEASE,
netbsd-9-1-RELEASE,
netbsd-9-0-RELEASE,
netbsd-9-0-RC2,
netbsd-9-0-RC1,
netbsd-9
Branch point for: phil-wifi
Diff to: previous 1.7: preferred, colored
Changes since revision 1.7: +11 -11
lines
Drop no longer available macros KCOV_STORE() KCOV_LOAD() in kcov(4)
Recently KCOV_STORE() and KCOV_LOAD() were equivalent to x=y.
Obtained from <R3x>
Revision 1.7: download - view: text, markup, annotated - select for diffs
Sun Apr 7 21:01:43 2019 UTC (5 years, 10 months ago) by kamil
Branches: MAIN
CVS tags: isaki-audio2-base,
isaki-audio2
Diff to: previous 1.6: preferred, colored
Changes since revision 1.6: +2 -2
lines
Switch kcov module class to MODULE_CLASS_MISC
MODULE_CLASS_ANY is not intended to be used by modules.
Noted by <pgoyette>
Revision 1.6: download - view: text, markup, annotated - select for diffs
Sun Mar 10 22:34:14 2019 UTC (5 years, 11 months ago) by kamil
Branches: MAIN
Diff to: previous 1.5: preferred, colored
Changes since revision 1.5: +2 -2
lines
Introduce enhancements to the kcov(4) code
Add new tests verifying dup2(2) scenarios:
- kcov_dup2
- kcov_basic_dup2_pc
- kcov_basic_dup2_cmp
The dup2(2) trick is used by syzkaller and assert that it works.
All new tests pass.
While there add minor non-functional cleanup changes.
Revision 1.5: download - view: text, markup, annotated - select for diffs
Sun Mar 10 17:51:00 2019 UTC (5 years, 11 months ago) by kamil
Branches: MAIN
Diff to: previous 1.4: preferred, colored
Changes since revision 1.4: +182 -1
lines
Add support for trace type selection in kcov(4)
Allow to specify mode in KCOV_IOC_ENABLE synchronizing the functionality
with Linux, FreeBSD and OpenBSD. As a NetBSD (and OpenBSD) specific of
the ioctl(2) interface, the mode argument has to be specified as &value
rather than value.
There are 3 modes available:
1. KCOV_MODE_NONE -- no trace specified, useful for testing purposes
2. KCOV_MODE_TRACE_PC -- trace the kernel program counter
3. KCOV_MODE_TRACE_CMP -- trace comparison instructions and switch statements
Adapt the ATF tests and documentation for new API.
The KCOV_MODE_TRACE_CMP mode is implemented but still awaits for the
GCC 8.x upgrade or selection of Clang/LLVM as the kernel compiler.
Obtained from OpenBSD and adapted for NetBSD by myself.
Revision 1.4: download - view: text, markup, annotated - select for diffs
Sun Mar 10 12:54:39 2019 UTC (5 years, 11 months ago) by kamil
Branches: MAIN
Diff to: previous 1.3: preferred, colored
Changes since revision 1.3: +158 -106
lines
Add support for multiple threads in kcov(4)
Reuse the fd_clone() API to associate kcov descriptors (KD) with a file
descriptor. Each fd (/dev/kcov) can be reused for a single LWP.
Add new ATF regression tests and cleanup existing code there. All tests
pass.
Refresh the kcov(4) man page documentation.
Developed with help from <maxv>.
Revision 1.3: download - view: text, markup, annotated - select for diffs
Sat Feb 23 12:07:40 2019 UTC (5 years, 11 months ago) by kamil
Branches: MAIN
Diff to: previous 1.2: preferred, colored
Changes since revision 1.2: +1 -2
lines
Stop including <sys/atomic.h> in KCOV
This header is not needed.
Noted by <martin>
Revision 1.2: download - view: text, markup, annotated - select for diffs
Sat Feb 23 12:03:07 2019 UTC (5 years, 11 months ago) by kamil
Branches: MAIN
Diff to: previous 1.1: preferred, colored
Changes since revision 1.1: +2 -2
lines
Fix subr_kcov build on NetBSD/i386
Cast the pointer returned from __builtin_return_address() to intptr_t
before converting it to uint64_t.
Revision 1.1: download - view: text, markup, annotated - select for diffs
Sat Feb 23 03:10:06 2019 UTC (5 years, 11 months ago) by kamil
Branches: MAIN
Add KCOV - kernel code coverage tracing device
The KCOV driver implements collection of code coverage inside the kernel.
It can be enabled on a per process basis from userland, allowing the kernel
program counter to be collected during syscalls triggered by the same
process.
The device is oriented towards kernel fuzzers, in particular syzkaller.
Currently the only supported coverage type is -fsanitize-coverage=trace-pc.
The KCOV driver was initially developed in Linux. A driver based on the
same concept was then implemented in FreeBSD and OpenBSD.
Documentation is borrowed from OpenBSD and ATF tests from FreeBSD.
This patch has been prepared by Siddharth Muralee, improved by <maxv>
and polished by myself before importing into the mainline tree.
All ATF tests pass.
CVSweb <webmaster@jp.NetBSD.org>