freebsd-dev/sys
Mark Johnston 2bed14192c pvclock: Export a vDSO page even without rdtscp available
When the cycle counter is "stable", i.e., synchronized across vCPUs by
the hypervisor, userspace can use a serialized rdtsc instead of relying
on rdtscp, just like the kernel timecounter does.  This can be useful
for performance in guests where the hypervisor hides rdtscp for some
reason.

To avoid breaking compatibility with older userspace which expects
rdtscp to be usable when pvclock exports timekeeping info, hide this
feature behind a sysctl.

Reviewed by:	kib
Tested by:	Shrikanth R Kamath <kshrikanth@juniper.net>
MFC after:	2 weeks
Sponsored by:	Klara, Inc.
Sponsored by:	Juniper Networks, Inc.
Differential Revision:	https://reviews.freebsd.org/D38342
2023-02-03 11:48:25 -05:00
..
amd64 linux(4): Remove stale comment that no longer applies. 2023-02-02 20:21:37 +03:00
arm Limit where we disable the Arm generic timer 2023-02-02 16:43:15 +00:00
arm64 Read the arm64 far early in el0 exceptions 2023-02-02 16:43:15 +00:00
bsm
cam CTL: Allow userland supply tags via ioctl frontend. 2022-12-03 12:05:05 -05:00
cddl dtrace: Improve a verifier error message 2023-01-24 09:09:27 -05:00
compat linux(4): Microoptimize linux_ipc code to unindent else blocks. 2023-02-03 19:17:34 +03:00
conf Add tarfs, a filesystem backed by tarballs. 2023-02-02 18:19:29 +01:00
contrib MFV: zstd 1.5.2 2023-01-27 17:22:31 +00:00
crypto aesni: Remove misleading array bounds for aesni_decryt_ecb. 2022-12-07 12:32:19 -08:00
ddb Move kstack_contains() and GET_STACK_USAGE() to MD machine/stack.h 2023-02-02 00:59:26 +02:00
dev Mechanically convert wg(4) to IfAPI 2023-02-03 09:38:03 -05:00
dts arm64/rockchip: Remove rk3328-dwc3 overlays 2022-11-16 11:58:32 +01:00
fs tarfs: Remove unused code. 2023-02-02 23:16:17 +00:00
gdb
geom Move kstack_contains() and GET_STACK_USAGE() to MD machine/stack.h 2023-02-02 00:59:26 +02:00
gnu
i386 linux(4): Deduplicate linux_trans_osrel(). 2023-02-02 17:58:07 +03:00
isa
kern kern_prot.c p_candebug(): Remove single-use variable. 2023-02-02 17:00:24 -08:00
kgssapi kgssapi: Increase timeout for kernel to gssd(8) upcalls 2023-01-11 13:20:31 -08:00
libkern ashldi3: Use C89-style function definition 2022-11-27 13:23:25 -07:00
modules Add tarfs, a filesystem backed by tarballs. 2023-02-02 18:19:29 +01:00
net IfAPI: Add iterator to loop over all interfaces 2023-02-03 09:38:02 -05:00
net80211 IfAPI: Explicitly include <net/if_private.h> in netstack 2023-01-31 15:02:16 -05:00
netgraph Move kstack_contains() and GET_STACK_USAGE() to MD machine/stack.h 2023-02-02 00:59:26 +02:00
netinet sctp: improve delivery of stream reset notifications 2023-02-02 14:46:10 +01:00
netinet6 IfAPI: Explicitly include <net/if_private.h> in netstack 2023-01-31 15:02:16 -05:00
netipsec IfAPI: Explicitly include <net/if_private.h> in netstack 2023-01-31 15:02:16 -05:00
netlink netlink: add "netlink" to the list of kernel features 2023-01-30 11:23:53 +00:00
netpfil pfsync: add missing bucket lock 2023-02-03 09:39:09 +01:00
netsmb
nfs Allow any user to read the NFS stats, for example with nfsstat(1). 2022-12-01 22:21:14 -07:00
nfsclient
nfsserver
nlm nlm: only access refcounts using dedicated primitives 2022-11-24 19:46:43 +00:00
ofed
opencrypto crypto: move all zeroing into crypto_getreq 2022-11-22 12:28:07 +00:00
powerpc kstack_contains(): account for struct pcb on stack 2023-02-02 00:59:27 +02:00
riscv kstack_contains(): account for struct pcb on stack 2023-02-02 00:59:27 +02:00
rpc krpc: Allow mountd/nfsd to optionally run in a jail 2022-12-18 12:40:48 -08:00
security IfAPI: Add if_get/setmaclabel() and use it. 2023-01-31 15:02:15 -05:00
sys vfs_export: Add checks for correct prison when updating exports 2023-02-02 16:20:58 -08:00
teken
tests
tools Improve debuggability of VOP_* locking assertions 2023-01-18 22:11:05 -06:00
ufs ffs_syncvnode(): avoid a LoR for SU 2023-01-14 20:28:11 +02:00
vm vm: centralize VM_BATCHQUEUE_SIZE definition 2023-01-21 14:30:00 -05:00
x86 pvclock: Export a vDSO page even without rdtscp available 2023-02-03 11:48:25 -05:00
xdr xdr: store chars consistently 2023-01-12 18:16:17 +00:00
xen
Makefile Remove dead code in the cscope target 2022-11-11 15:53:57 +00:00
README.md

FreeBSD Kernel Source:

This directory contains the source files and build glue that make up the FreeBSD kernel and its modules, including both original and contributed software.

Kernel configuration files are located in the conf/ subdirectory of each architecture. GENERIC is the configuration used in release builds. NOTES contains documentation of all possible entries. LINT is a compile-only configuration used to maximize build coverage and detect regressions.

Source Roadmap:

Directory Description
amd64 AMD64 (64-bit x86) architecture support
arm 32-bit ARM architecture support
arm64 64-bit ARM (AArch64) architecture support
cam Common Access Method storage subsystem - cam(4) and ctl(4)
cddl CDDL-licensed optional sources such as DTrace
conf kernel build glue
compat Linux compatibility layer, FreeBSD 32-bit compatibility
contrib 3rd-party imported software such as OpenZFS
crypto crypto drivers
ddb interactive kernel debugger - ddb(4)
fs most filesystems, excluding UFS, NFS, and ZFS
dev device drivers
gdb kernel remote GDB stub - gdb(4)
geom GEOM framework - geom(4)
i386 i386 (32-bit x86) architecture support
kern main part of the kernel
libkern libc-like and other support functions for kernel use
modules kernel module infrastructure
net core networking code
net80211 wireless networking (IEEE 802.11) - net80211(4)
netgraph graph-based networking subsystem - netgraph(4)
netinet IPv4 protocol implementation - inet(4)
netinet6 IPv6 protocol implementation - inet6(4)
netipsec IPsec protocol implementation - ipsec(4)
netpfil packet filters - ipfw(4), pf(4), and ipfilter(4)
opencrypto OpenCrypto framework - crypto(7)
powerpc PowerPC/POWER (32 and 64-bit) architecture support
riscv 64-bit RISC-V architecture support
security security facilities - audit(4) and mac(4)
sys kernel headers
tests kernel unit tests
ufs Unix File System - ffs(7)
vm virtual memory system
x86 code shared by AMD64 and i386 architectures