Compare commits
13 Commits
31ded414b1
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| fa3531fc47 | |||
| d886b7b242 | |||
| 5e674e848e | |||
| fa75c1cc24 | |||
| db887713de | |||
| 1c601bf516 | |||
| 134e90e01d | |||
| b662295ecb | |||
| baf8561bdc | |||
| b8ec4929e9 | |||
| 84008e34ce | |||
| 3fa40c5eb8 | |||
| 009d92b25f |
@@ -1,22 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
set -e
|
|
||||||
|
|
||||||
start_time=$(date +%s)
|
|
||||||
pkg install -y "$@" && exit 0
|
|
||||||
|
|
||||||
cat <<EOF
|
|
||||||
pkg install failed after $(($(date +%s) - $start_time))s
|
|
||||||
|
|
||||||
dmesg tail:
|
|
||||||
$(dmesg | tail)
|
|
||||||
|
|
||||||
trying again
|
|
||||||
EOF
|
|
||||||
|
|
||||||
start_time=$(date +%s)
|
|
||||||
pkg install -y "$@" && exit 0
|
|
||||||
|
|
||||||
cat <<EOF
|
|
||||||
second pkg install failed after $(($(date +%s) - $start_time))s
|
|
||||||
EOF
|
|
||||||
exit 1
|
|
||||||
-237
@@ -1,237 +0,0 @@
|
|||||||
|
|
||||||
compute_engine_instance:
|
|
||||||
# Image list available via
|
|
||||||
# gcloud compute images list --project freebsd-org-cloud-dev --no-standard-images
|
|
||||||
platform: freebsd
|
|
||||||
image_project: freebsd-org-cloud-dev
|
|
||||||
image: freebsd-15-0-release-amd64-ufs
|
|
||||||
cpu: 8
|
|
||||||
memory: 8G
|
|
||||||
disk: 40
|
|
||||||
|
|
||||||
env:
|
|
||||||
PKG_LEVEL: 1
|
|
||||||
|
|
||||||
task:
|
|
||||||
matrix:
|
|
||||||
- name: amd64-llvm16 World and kernel build and boot smoke test (manual)
|
|
||||||
only_if: $CIRRUS_REPO_FULL_NAME != 'freebsd/freebsd-src'
|
|
||||||
trigger_type: manual
|
|
||||||
env:
|
|
||||||
TARGET: amd64
|
|
||||||
TARGET_ARCH: amd64
|
|
||||||
TOOLCHAIN: llvm16
|
|
||||||
TOOLCHAIN_PKG: ${TOOLCHAIN}-lite
|
|
||||||
- name: amd64-llvm17 World and kernel build and boot smoke test (manual)
|
|
||||||
only_if: $CIRRUS_REPO_FULL_NAME != 'freebsd/freebsd-src'
|
|
||||||
trigger_type: manual
|
|
||||||
env:
|
|
||||||
TARGET: amd64
|
|
||||||
TARGET_ARCH: amd64
|
|
||||||
TOOLCHAIN: llvm17
|
|
||||||
TOOLCHAIN_PKG: ${TOOLCHAIN}-lite
|
|
||||||
- name: amd64-llvm18 World and kernel build and boot smoke test (manual)
|
|
||||||
only_if: $CIRRUS_REPO_FULL_NAME != 'freebsd/freebsd-src'
|
|
||||||
trigger_type: manual
|
|
||||||
env:
|
|
||||||
TARGET: amd64
|
|
||||||
TARGET_ARCH: amd64
|
|
||||||
TOOLCHAIN: llvm18
|
|
||||||
TOOLCHAIN_PKG: ${TOOLCHAIN}-lite
|
|
||||||
- name: amd64-llvm19 World and kernel build and boot smoke test
|
|
||||||
only_if: $CIRRUS_REPO_FULL_NAME != 'freebsd/freebsd-src'
|
|
||||||
trigger_type: manual
|
|
||||||
env:
|
|
||||||
TARGET: amd64
|
|
||||||
TARGET_ARCH: amd64
|
|
||||||
TOOLCHAIN: llvm19
|
|
||||||
TOOLCHAIN_PKG: ${TOOLCHAIN}-lite
|
|
||||||
- name: amd64-llvm21 World and kernel build and boot smoke test
|
|
||||||
only_if: $CIRRUS_REPO_FULL_NAME != 'freebsd/freebsd-src' || $CIRRUS_BRANCH =~ 'pull/.*'
|
|
||||||
env:
|
|
||||||
TARGET: amd64
|
|
||||||
TARGET_ARCH: amd64
|
|
||||||
TOOLCHAIN: llvm21
|
|
||||||
TOOLCHAIN_PKG: ${TOOLCHAIN}-lite
|
|
||||||
- name: arm64-llvm16 World and kernel build and boot smoke test (manual)
|
|
||||||
only_if: $CIRRUS_REPO_FULL_NAME != 'freebsd/freebsd-src'
|
|
||||||
trigger_type: manual
|
|
||||||
env:
|
|
||||||
TARGET: arm64
|
|
||||||
TARGET_ARCH: aarch64
|
|
||||||
TOOLCHAIN: llvm16
|
|
||||||
TOOLCHAIN_PKG: ${TOOLCHAIN}
|
|
||||||
- name: arm64-llvm17 World and kernel build and boot smoke test (manual)
|
|
||||||
only_if: $CIRRUS_REPO_FULL_NAME != 'freebsd/freebsd-src'
|
|
||||||
trigger_type: manual
|
|
||||||
env:
|
|
||||||
TARGET: arm64
|
|
||||||
TARGET_ARCH: aarch64
|
|
||||||
TOOLCHAIN: llvm17
|
|
||||||
TOOLCHAIN_PKG: ${TOOLCHAIN}
|
|
||||||
- name: arm64-llvm18 World and kernel build and boot smoke test (manual)
|
|
||||||
only_if: $CIRRUS_REPO_FULL_NAME != 'freebsd/freebsd-src'
|
|
||||||
trigger_type: manual
|
|
||||||
env:
|
|
||||||
TARGET: arm64
|
|
||||||
TARGET_ARCH: aarch64
|
|
||||||
TOOLCHAIN: llvm18
|
|
||||||
TOOLCHAIN_PKG: ${TOOLCHAIN}
|
|
||||||
- name: arm64-llvm19 World and kernel build and boot smoke test (manual)
|
|
||||||
only_if: $CIRRUS_REPO_FULL_NAME != 'freebsd/freebsd-src'
|
|
||||||
trigger_type: manual
|
|
||||||
env:
|
|
||||||
TARGET: arm64
|
|
||||||
TARGET_ARCH: aarch64
|
|
||||||
TOOLCHAIN: llvm19
|
|
||||||
TOOLCHAIN_PKG: ${TOOLCHAIN}
|
|
||||||
- name: arm64-llvm21 World and kernel build and boot smoke test (manual)
|
|
||||||
only_if: $CIRRUS_REPO_FULL_NAME != 'freebsd/freebsd-src'
|
|
||||||
trigger_type: manual
|
|
||||||
env:
|
|
||||||
TARGET: arm64
|
|
||||||
TARGET_ARCH: aarch64
|
|
||||||
TOOLCHAIN: llvm21
|
|
||||||
TOOLCHAIN_PKG: ${TOOLCHAIN}
|
|
||||||
- name: amd64-gcc12 World and kernel build and boot smoke test (manual)
|
|
||||||
only_if: $CIRRUS_REPO_FULL_NAME != 'freebsd/freebsd-src'
|
|
||||||
trigger_type: manual
|
|
||||||
env:
|
|
||||||
TARGET: amd64
|
|
||||||
TARGET_ARCH: amd64
|
|
||||||
TOOLCHAIN: amd64-gcc12
|
|
||||||
TOOLCHAIN_PKG: ${TOOLCHAIN}
|
|
||||||
EXTRA_MAKE_FLAGS: -s
|
|
||||||
- name: amd64-gcc13 World and kernel build and boot smoke test (manual)
|
|
||||||
only_if: $CIRRUS_REPO_FULL_NAME != 'freebsd/freebsd-src'
|
|
||||||
trigger_type: manual
|
|
||||||
env:
|
|
||||||
TARGET: amd64
|
|
||||||
TARGET_ARCH: amd64
|
|
||||||
TOOLCHAIN: amd64-gcc13
|
|
||||||
TOOLCHAIN_PKG: ${TOOLCHAIN}
|
|
||||||
EXTRA_MAKE_FLAGS: -s
|
|
||||||
- name: amd64-gcc14 World and kernel build and boot smoke test (manual)
|
|
||||||
only_if: $CIRRUS_REPO_FULL_NAME != 'freebsd/freebsd-src'
|
|
||||||
trigger_type: manual
|
|
||||||
env:
|
|
||||||
TARGET: amd64
|
|
||||||
TARGET_ARCH: amd64
|
|
||||||
TOOLCHAIN: amd64-gcc14
|
|
||||||
TOOLCHAIN_PKG: ${TOOLCHAIN}
|
|
||||||
EXTRA_MAKE_FLAGS: -s
|
|
||||||
- name: aarch64-gcc12 World and kernel build and boot smoke test (manual)
|
|
||||||
only_if: $CIRRUS_REPO_FULL_NAME != 'freebsd/freebsd-src'
|
|
||||||
trigger_type: manual
|
|
||||||
env:
|
|
||||||
TARGET: arm64
|
|
||||||
TARGET_ARCH: aarch64
|
|
||||||
TOOLCHAIN: aarch64-gcc12
|
|
||||||
TOOLCHAIN_PKG: ${TOOLCHAIN}
|
|
||||||
EXTRA_MAKE_FLAGS: -s
|
|
||||||
- name: aarch64-gcc13 World and kernel build and boot smoke test (manual)
|
|
||||||
only_if: $CIRRUS_REPO_FULL_NAME != 'freebsd/freebsd-src'
|
|
||||||
trigger_type: manual
|
|
||||||
env:
|
|
||||||
TARGET: arm64
|
|
||||||
TARGET_ARCH: aarch64
|
|
||||||
TOOLCHAIN: aarch64-gcc13
|
|
||||||
TOOLCHAIN_PKG: ${TOOLCHAIN}
|
|
||||||
EXTRA_MAKE_FLAGS: -s
|
|
||||||
- name: aarch64-gcc14 World and kernel build and boot smoke test (manual)
|
|
||||||
only_if: $CIRRUS_REPO_FULL_NAME != 'freebsd/freebsd-src'
|
|
||||||
trigger_type: manual
|
|
||||||
env:
|
|
||||||
TARGET: arm64
|
|
||||||
TARGET_ARCH: aarch64
|
|
||||||
TOOLCHAIN: aarch64-gcc14
|
|
||||||
TOOLCHAIN_PKG: ${TOOLCHAIN}
|
|
||||||
EXTRA_MAKE_FLAGS: -s
|
|
||||||
- name: amd64-gcc14 World and kernel build and boot smoke test (FreeBSD repo)
|
|
||||||
only_if: $CIRRUS_REPO_FULL_NAME == 'freebsd/freebsd-src' && $CIRRUS_BRANCH =~ 'pull/.*'
|
|
||||||
env:
|
|
||||||
TARGET: amd64
|
|
||||||
TARGET_ARCH: amd64
|
|
||||||
TOOLCHAIN: amd64-gcc14
|
|
||||||
TOOLCHAIN_PKG: ${TOOLCHAIN}
|
|
||||||
EXTRA_MAKE_FLAGS: -s
|
|
||||||
timeout_in: 120m
|
|
||||||
install_script:
|
|
||||||
- sh .cirrus-ci/pkg-install.sh ${TOOLCHAIN_PKG} git-lite
|
|
||||||
|
|
||||||
setup_script:
|
|
||||||
- uname -a
|
|
||||||
- gpart show
|
|
||||||
- df -m
|
|
||||||
- pkg --version
|
|
||||||
- pw useradd -n user -m
|
|
||||||
- mkdir -p /usr/obj/$(pwd -P)
|
|
||||||
- chown user:user /usr/obj/$(pwd -P)
|
|
||||||
- su user -c "git config --global --add safe.directory $(pwd -P)"
|
|
||||||
|
|
||||||
build_world_script:
|
|
||||||
- su user -c "make -j$(nproc) ${EXTRA_MAKE_FLAGS} CROSS_TOOLCHAIN=${TOOLCHAIN} WITHOUT_TOOLCHAIN=yes buildworld"
|
|
||||||
|
|
||||||
build_kernel_script:
|
|
||||||
- su user -c "make -j$(nproc) CROSS_TOOLCHAIN=${TOOLCHAIN} WITHOUT_TOOLCHAIN=yes buildkernel"
|
|
||||||
|
|
||||||
package_script:
|
|
||||||
- su user -c "make -j$(nproc) CROSS_TOOLCHAIN=${TOOLCHAIN} WITHOUT_TOOLCHAIN=yes packages"
|
|
||||||
|
|
||||||
test_script:
|
|
||||||
- sh .cirrus-ci/pkg-install.sh qemu-nox11
|
|
||||||
- sh tools/boot/ci-qemu-test.sh
|
|
||||||
|
|
||||||
package_check_script:
|
|
||||||
- su user -c "/usr/libexec/flua tools/pkgbase/metalog_reader.lua -c /usr/obj/$(pwd -P)/${TARGET}.${TARGET_ARCH}/worldstage/METALOG"
|
|
||||||
|
|
||||||
make_sysent_script:
|
|
||||||
# Check that make sysent results were committed if required
|
|
||||||
- make sysent
|
|
||||||
- if ! git diff --exit-code; then printf "\n>>> Generated sysent files not updated, run make sysent <<<\n"; false; fi
|
|
||||||
|
|
||||||
include_ldirs_script:
|
|
||||||
# Check that includes/Makefile refers to existing directories
|
|
||||||
- if ! make -C include/ check-ldirs; then printf "\n>>> include/Makefile lists nonexistant directories <<<\n"; false; fi
|
|
||||||
|
|
||||||
makeman_script:
|
|
||||||
# Check that the committed src.conf.5 matches the one generated by
|
|
||||||
# tools/build/options/makeman (modulo the date which always updates)
|
|
||||||
# XXX: This script is slow so keep it last
|
|
||||||
- (make makeman 2> /tmp/makeman.out); cat /tmp/makeman.out
|
|
||||||
- if ! git diff --exit-code --ignore-matching-lines "^.Dd" share/man/man5/src.conf.5; then printf "\n>>> src.conf.5 was not updated as required <<<\n"; false; fi
|
|
||||||
- if grep -q "no description found" /tmp/makeman.out; then printf "\n>>> Missing description files <<<\n"; false; fi
|
|
||||||
|
|
||||||
post_script:
|
|
||||||
- df -m
|
|
||||||
- du -m -s /usr/obj
|
|
||||||
|
|
||||||
precommit_task:
|
|
||||||
persistent_worker:
|
|
||||||
labels:
|
|
||||||
jail: FreeBSD-src
|
|
||||||
matrix:
|
|
||||||
- name: amd64 smoke test using internal ci systems
|
|
||||||
only_if: $CIRRUS_REPO_FULL_NAME != 'freebsd/freebsd-src' || $CIRRUS_BRANCH =~ 'pull/.*'
|
|
||||||
env:
|
|
||||||
TARGET: amd64
|
|
||||||
TARGET_ARCH: amd64
|
|
||||||
- name: aarch64 smoke test using internal ci systems
|
|
||||||
only_if: $CIRRUS_REPO_FULL_NAME != 'freebsd/freebsd-src' || $CIRRUS_BRANCH =~ 'pull/.*'
|
|
||||||
env:
|
|
||||||
TARGET: arm64
|
|
||||||
TARGET_ARCH: aarch64
|
|
||||||
timeout_in: 120m
|
|
||||||
|
|
||||||
setup_script:
|
|
||||||
- uname -a
|
|
||||||
- gpart show
|
|
||||||
- df -m
|
|
||||||
- pkg --version
|
|
||||||
|
|
||||||
ci_script:
|
|
||||||
- make -C tests/ci TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} CIENV=cirrus CITYPE=smoke ci
|
|
||||||
|
|
||||||
post_script:
|
|
||||||
- df -m
|
|
||||||
- du -m -s /usr/obj
|
|
||||||
@@ -1,145 +0,0 @@
|
|||||||
# Please note that the content of this file is strictly advisory.
|
|
||||||
# No locks listed here are valid. The only strict review requirements
|
|
||||||
# are granted by core. These are documented in head/LOCKS and enforced
|
|
||||||
# by gitadm@.
|
|
||||||
#
|
|
||||||
# The source tree is a community effort. However, some folks go to the
|
|
||||||
# trouble of looking after particular areas of the tree. In return for
|
|
||||||
# their active caretaking of the code it is polite to coordinate changes
|
|
||||||
# with them. This is a list of people who have expressed an interest in
|
|
||||||
# part of the code or listed their active caretaking role so that other
|
|
||||||
# committers can easily find somebody who is familiar with it. The notes
|
|
||||||
# should specify if there is a 3rd party source tree involved or other
|
|
||||||
# things that should be kept in mind.
|
|
||||||
#
|
|
||||||
# However, this is not a 'big stick', it is an offer to help and a
|
|
||||||
# source of guidance. It does not override the communal nature of the
|
|
||||||
# tree. It is not a registry of 'turf' or private property.
|
|
||||||
#
|
|
||||||
# ***
|
|
||||||
# This list is prone to becoming stale quickly. The best way to find the
|
|
||||||
# recent maintainer of a sub-system is to check recent logs for that
|
|
||||||
# directory or sub-system.
|
|
||||||
# ***
|
|
||||||
#
|
|
||||||
# ***
|
|
||||||
# Maintainers are encouraged to visit:
|
|
||||||
# https://reviews.freebsd.org/herald
|
|
||||||
#
|
|
||||||
# and configure Phabricator notifications for parts of the tree which
|
|
||||||
# they maintain. Notifications can automatically be sent when someone
|
|
||||||
# proposes a revision or makes a commit to the specified subtree.
|
|
||||||
# ***
|
|
||||||
|
|
||||||
/bin/sh @jillest
|
|
||||||
/contrib/atf @ngie-eign
|
|
||||||
/contrib/blocklist @jlduran
|
|
||||||
/contrib/googletest @ngie-eign
|
|
||||||
/contrib/libcxxrt @DimitryAndric @emaste
|
|
||||||
/contrib/llvm-project @DimitryAndric
|
|
||||||
/contrib/llvm-project/libunwind @DimitryAndric @emaste @bsdjhb
|
|
||||||
/contrib/llvm-project/lldb @DimitryAndric @emaste
|
|
||||||
/contrib/llvm-project/openmp @DimitryAndric @emaste
|
|
||||||
/contrib/mandoc @concussious
|
|
||||||
/contrib/netbsd-tests @ngie-eign
|
|
||||||
/contrib/netbsd-tests/crypto/opencrypto/ @jmgurney
|
|
||||||
/contrib/netbsd-tests/kernel/kqueue/ @jmgurney
|
|
||||||
/contrib/one-true-awk/ @bsdimp
|
|
||||||
/contrib/openpam/ @dag-erling
|
|
||||||
/contrib/pjdfstest @ngie-eign @asomers
|
|
||||||
/contrib/wpa @cschuber
|
|
||||||
/crypto/heimdal @cschuber
|
|
||||||
/crypto/krb5 @cschuber
|
|
||||||
/crypto/openssh @dag-erling @emaste
|
|
||||||
/crypto/openssl/ @ngie-eign
|
|
||||||
/etc/mail @gshapiro
|
|
||||||
/etc/sendmail @gshapiro
|
|
||||||
/kerberos5 @cschuber
|
|
||||||
/krb5 @cschuber
|
|
||||||
/lib/libblocklist @jlduran
|
|
||||||
/lib/libc/string/ @fuz
|
|
||||||
/lib/libc/*/string/ @fuz
|
|
||||||
/lib/libc/gen/fts.? @dag-erling
|
|
||||||
/lib/libc/stdio/ @dag-erling
|
|
||||||
/lib/libc/sys/kevent.c @jmgurney
|
|
||||||
/lib/libc/tests/gen/fts* @dag-erling
|
|
||||||
/lib/libc/tests/stdio/ @dag-erling
|
|
||||||
/lib/libefivar/ @bsdimp
|
|
||||||
/lib/libfetch @dag-erling
|
|
||||||
/lib/libpam/ @dag-erling
|
|
||||||
/lib/libsecureboot/ @stephane-rochoy-stormshield
|
|
||||||
/lib/libveriexec/ @stephane-rochoy-stormshield
|
|
||||||
/lib/libvmmapi @bsdjhb @bryanv @markjdb @khng300 @markpeek
|
|
||||||
/libexec/nuageinit/ @bapt
|
|
||||||
/libexec/rc/rc.d/rctl/ @trasz
|
|
||||||
/sbin/ipf @cschuber
|
|
||||||
/sbin/mount_fusefs @asomers
|
|
||||||
/sbin/nvmecontrol @bsdimp
|
|
||||||
/sbin/veriexec/ @stephane-rochoy-stormshield
|
|
||||||
/secure/lib/libcrypto/ @ngie-eign
|
|
||||||
/secure/lib/libssl/ @ngie-eign
|
|
||||||
/share/man/ @concussious
|
|
||||||
/share/mk @bsdimp @bapt @bdrewery @brooksdavis @emaste
|
|
||||||
/stand @bsdimp
|
|
||||||
/stand/lua @kevans91
|
|
||||||
/stand/veriexec.mk @stephane-rochoy-stormshield
|
|
||||||
/sys/amd64/pci @bsdimp @bsdjhb
|
|
||||||
/sys/amd64/vmm/ @bsdjhb @bryanv @markjdb @khng300 @markpeek
|
|
||||||
/sys/arm/allwinner @evadot
|
|
||||||
/sys/arm64/arm64 @zxombie
|
|
||||||
/sys/arm64/include @zxombie
|
|
||||||
/sys/arm64/rockchip @evadot
|
|
||||||
/sys/arm64/vmm @zxombie
|
|
||||||
/sys/compat/linprocfs/ @dag-erling
|
|
||||||
/sys/crypto/openssl/ @ngie-eign
|
|
||||||
/sys/dev/drm2 @bsdimp
|
|
||||||
/sys/dev/ftgpio/ @stephane-rochoy-stormshield
|
|
||||||
/sys/dev/ftwd/ @stephane-rochoy-stormshield
|
|
||||||
/sys/dev/iscsi/ @trasz
|
|
||||||
/sys/dev/nctgpio/ @stephane-rochoy-stormshield
|
|
||||||
/sys/dev/ncthwm/ @stephane-rochoy-stormshield
|
|
||||||
/sys/dev/mpi3mr @bsdimp
|
|
||||||
/sys/dev/mps @bsdimp
|
|
||||||
/sys/dev/mpr @bsdimp
|
|
||||||
/sys/dev/nvd @bsdimp
|
|
||||||
/sys/dev/nvme @bsdimp
|
|
||||||
/sys/dev/pci @bsdimp @bsdjhb
|
|
||||||
/sys/dev/superio/ @stephane-rochoy-stormshield
|
|
||||||
/sys/dev/veriexec/ @stephane-rochoy-stormshield
|
|
||||||
/sys/dev/vt/ @emaste
|
|
||||||
/sys/fs/autofs/ @trasz
|
|
||||||
/sys/fs/fuse/ @asomers
|
|
||||||
/sys/fs/procfs/ @dag-erling
|
|
||||||
/sys/fs/pseudofs/ @dag-erling
|
|
||||||
/sys/kern/syscalls.master @brooksdavis
|
|
||||||
/sys/kern/vfs_aio.c @asomers
|
|
||||||
/sys/netinet/ip_carp.c @glebius
|
|
||||||
/sys/netpfil/ipfilter @cschuber
|
|
||||||
/sys/netpfil/pf @glebius
|
|
||||||
/sys/opencrypto/ @jmgurney
|
|
||||||
/sys/security/mac_veriexec/ @stephane-rochoy-stormshield
|
|
||||||
/sys/security/mac_veriexec_parser/ @stephane-rochoy-stormshield
|
|
||||||
/sys/tools/syscalls/ @brooksdavis
|
|
||||||
/sys/x86/pci @bsdimp @bsdjhb
|
|
||||||
/tests @ngie-eign
|
|
||||||
/tests/sys/aio/ @asomers
|
|
||||||
/tests/sys/capsicum/ @ngie-eign @emaste
|
|
||||||
/tests/sys/fs/fusefs/ @asomers
|
|
||||||
/tests/sys/kqueue/ @jmgurney
|
|
||||||
/tests/sys/opencrypto/ @jmgurney
|
|
||||||
/tools/build @bsdimp
|
|
||||||
/tools/regression/iscsi/ @trasz
|
|
||||||
/tools/regression/sockets/kqueue/ @jmgurney
|
|
||||||
/tools/tools/nanobsd @bsdimp
|
|
||||||
/usr.bin/fetch @dag-erling
|
|
||||||
/usr.bin/rctl/ @trasz
|
|
||||||
/usr.bin/top @grimreaper
|
|
||||||
/usr.sbin/autofs/ @trasz
|
|
||||||
/usr.sbin/bhyve @bsdjhb @bryanv @markjdb @khng300 @markpeek
|
|
||||||
/usr.sbin/bhyvectl @bsdjhb @bryanv @markjdb @khng300 @markpeek
|
|
||||||
/usr.sbin/bhyveload @bsdjhb @bryanv @markjdb @khng300 @markpeek
|
|
||||||
/usr.sbin/blocklistctl @jlduran
|
|
||||||
/usr.sbin/blocklistd @jlduran
|
|
||||||
/usr.sbin/lpr @gbergling
|
|
||||||
/usr.sbin/makefs @emaste
|
|
||||||
/usr.sbin/wpa @cschuber
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
Please include this information, either here or in your commit messages for the
|
|
||||||
pull request, as appropriate (or delete the line if there's nothing relevant.
|
|
||||||
|
|
||||||
PR: <If and which Problem Report is related.>
|
|
||||||
Reported by: <If someone else reported the issue.>
|
|
||||||
Reviewed by: <If someone else reviewed your modification.>
|
|
||||||
Tested by: <If someone else tested the change.>
|
|
||||||
Approved by: <If you needed approval for this commit.>
|
|
||||||
Obtained from: <If the change is from a third party.>
|
|
||||||
Fixes: <Short hash and title line of commit fixed by this change>
|
|
||||||
MFC after: <N [day[s]|week[s]|month[s]]. Request a reminder email>
|
|
||||||
Relnotes: <Set to 'yes' for mention in release notes.>
|
|
||||||
Security: <Vulnerability reference (one per line) or description.>
|
|
||||||
Sponsored by: <If the change was sponsored by an organization.>
|
|
||||||
Pull Request: <https://github.com/freebsd/<repo>/pull/###>
|
|
||||||
Differential Revision: <https://reviews.freebsd.org/D###>
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
#
|
|
||||||
# Format the similar to CODEOWNERS: Each line has a path, whitespace and a
|
|
||||||
# message for contributors.
|
|
||||||
#
|
|
||||||
sys/contrib/device-tree :caution: No changes should be made here by pull request
|
|
||||||
# Catch all
|
|
||||||
contrib :warning: Contributed software usually managed by vendor branch
|
|
||||||
crypto :warning: Contributed crypto software usually managed by vendor branch
|
|
||||||
sys/contrib :warning: Contributed software usually managed by vendor branch
|
|
||||||
sys/crypto/skein :warning: Contributed crypto software usually managed by vendor branch
|
|
||||||
@@ -1,194 +0,0 @@
|
|||||||
name: Checklist
|
|
||||||
|
|
||||||
# Produce a list of things that need to be changed
|
|
||||||
# for the submission to align with CONTRIBUTING.md
|
|
||||||
|
|
||||||
on:
|
|
||||||
pull_request_target:
|
|
||||||
types: [ opened, reopened, edited, synchronize ]
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
pull-requests: write
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
checklist:
|
|
||||||
name: commit
|
|
||||||
if: github.repository == 'freebsd/freebsd-src'
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/github-script@v7
|
|
||||||
with:
|
|
||||||
# An asynchronous javascript function
|
|
||||||
script: |
|
|
||||||
/*
|
|
||||||
* Github's API returns the results in pages of 30, so
|
|
||||||
* pass the function we want, along with it's arguments,
|
|
||||||
* to paginate() which will handle gathering all the results.
|
|
||||||
*/
|
|
||||||
const comments = await github.paginate(github.rest.issues.listComments, {
|
|
||||||
owner: context.repo.owner,
|
|
||||||
repo: context.repo.repo,
|
|
||||||
issue_number: context.issue.number
|
|
||||||
});
|
|
||||||
|
|
||||||
const commits = await github.paginate(github.rest.pulls.listCommits, {
|
|
||||||
owner: context.repo.owner,
|
|
||||||
repo: context.repo.repo,
|
|
||||||
pull_number: context.issue.number
|
|
||||||
});
|
|
||||||
|
|
||||||
/* Get owners */
|
|
||||||
|
|
||||||
let owners = [];
|
|
||||||
const { data: ownerData } = await github.rest.repos.getContent({
|
|
||||||
owner: context.repo.owner,
|
|
||||||
repo: context.repo.repo,
|
|
||||||
path: '.github/CODEOWNERS',
|
|
||||||
ref: context.payload.pull_request.base.ref // Or a specific branch
|
|
||||||
});
|
|
||||||
const oc = Buffer.from(ownerData.content, 'base64').toString();
|
|
||||||
owners = oc.split(/\r?\n/)
|
|
||||||
.map(line => line.trim())
|
|
||||||
// Filter out comments and empty lines
|
|
||||||
.filter(line => line && !line.startsWith('#'))
|
|
||||||
.map(line => {
|
|
||||||
// Split by the first block of whitespace to separate path and message
|
|
||||||
const [path, ...ownerParts] = line.substring(1).split(/\s+/);
|
|
||||||
return { path, owner: ownerParts.join(' ') };
|
|
||||||
});
|
|
||||||
|
|
||||||
/* Get rules -- maybe refactor to a function for ownerPath too */
|
|
||||||
let rules = [];
|
|
||||||
const { data: rulesData } = await github.rest.repos.getContent({
|
|
||||||
owner: context.repo.owner,
|
|
||||||
repo: context.repo.repo,
|
|
||||||
path: '.github/path-rules.txt',
|
|
||||||
ref: context.payload.pull_request.base.ref // Or a specific branch
|
|
||||||
});
|
|
||||||
const rc = Buffer.from(rulesData.content, 'base64').toString();
|
|
||||||
rules = rc.split(/\r?\n/)
|
|
||||||
.map(line => line.trim())
|
|
||||||
// Filter out comments and empty lines
|
|
||||||
.filter(line => line && !line.startsWith('#'))
|
|
||||||
.map(line => {
|
|
||||||
// Split by the first block of whitespace to separate path and message
|
|
||||||
const [path, ...messageParts] = line.split(/\s+/);
|
|
||||||
return { path, message: messageParts.join(' ') };
|
|
||||||
});
|
|
||||||
|
|
||||||
let checklist = {};
|
|
||||||
let checklist_len = 0;
|
|
||||||
let comment_id = -1;
|
|
||||||
|
|
||||||
const addToChecklist = (msg, sha) => {
|
|
||||||
if (!checklist[msg]) {
|
|
||||||
checklist[msg] = [];
|
|
||||||
checklist_len++;
|
|
||||||
}
|
|
||||||
checklist[msg].push(sha);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (const commit of commits) {
|
|
||||||
const sob_lines = commit.commit.message.match(/^[^\S\r\n]*signed-off-by:.*/gim);
|
|
||||||
|
|
||||||
if (sob_lines == null && !commit.commit.author.email.toLowerCase().endsWith("freebsd.org"))
|
|
||||||
addToChecklist("Missing Signed-off-by lines", commit.sha);
|
|
||||||
else if (sob_lines != null) {
|
|
||||||
let author_signed = false;
|
|
||||||
for (const line of sob_lines) {
|
|
||||||
if (!line.includes("Signed-off-by: "))
|
|
||||||
/* Only display the part we care about. */
|
|
||||||
addToChecklist("Expected `Signed-off-by: `, got `" + line.match(/^[^\S\r\n]*signed-off-by:./i) + "`", commit.sha);
|
|
||||||
if (line.includes(commit.commit.author.email))
|
|
||||||
author_signed = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!author_signed)
|
|
||||||
console.log("::warning title=Missing-Author-Signature::Missing Signed-off-by from author");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (commit.commit.author.email.toLowerCase().includes("noreply"))
|
|
||||||
addToChecklist("Real email address is needed", commit.sha);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Check for different paths that have issues and/or owners */
|
|
||||||
const { data: files } = await github.rest.pulls.listFiles({
|
|
||||||
owner: context.repo.owner,
|
|
||||||
repo: context.repo.repo,
|
|
||||||
pull_number: context.payload.pull_request.number,
|
|
||||||
});
|
|
||||||
|
|
||||||
let infolist = {};
|
|
||||||
let infolist_len = 0;
|
|
||||||
const addToInfolist = (msg) => {
|
|
||||||
if (!infolist[msg]) {
|
|
||||||
infolist[msg] = [];
|
|
||||||
infolist_len++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Give advice based on what's in the commit */
|
|
||||||
for (const file of files) {
|
|
||||||
for (const owner of owners) {
|
|
||||||
if (file.filename.startsWith(owner.path)) {
|
|
||||||
addToInfolist("> [!IMPORTANT]\n> " + owner.owner + " wants to review changes to " + owner.path + "\n");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for (const rule of rules) {
|
|
||||||
// Consider regexp in the future maybe?
|
|
||||||
if (file.filename.startsWith(rule.path)) {
|
|
||||||
if (rule.message.startsWith(":caution: ")) {
|
|
||||||
addToInfolist("> [!CAUTION]\n> " + rule.path + ": " + rule.message.substring(10) + "\n");
|
|
||||||
} else if (rule.message.startsWith(":warning: ")) {
|
|
||||||
addToInfolist("> [!WARNING]\n> " + rule.path + ": " + rule.message.substring(10) + "\n");
|
|
||||||
} else {
|
|
||||||
addToInfolist("> [!IMPORTANT]\n> " + rule.path + ": " + rule.message + "\n");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Check if we've commented before. */
|
|
||||||
for (const comment of comments) {
|
|
||||||
if (comment.user.login == "github-actions[bot]") {
|
|
||||||
comment_id = comment.id;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const msg_prefix = "Thank you for taking the time to contribute to FreeBSD!\n\n";
|
|
||||||
if (checklist_len != 0 || infolist_len != 0) {
|
|
||||||
let msg = msg_prefix;
|
|
||||||
let comment_func = comment_id == -1 ? github.rest.issues.createComment : github.rest.issues.updateComment;
|
|
||||||
if (checklist_len != 0) {
|
|
||||||
msg +=
|
|
||||||
"There " + (checklist_len > 1 ? "are a few issues that need " : "is an issue that needs ") +
|
|
||||||
"to be resolved:\n";
|
|
||||||
|
|
||||||
/* Loop for each key in "checklist". */
|
|
||||||
for (const c in checklist)
|
|
||||||
msg += "- " + c + " (" + checklist[c].join(", ") + ")\n";
|
|
||||||
msg += "\n> [!NOTE]\n> Please review [CONTRIBUTING.md](https://github.com/freebsd/freebsd-src/blob/main/CONTRIBUTING.md), then update and push your branch again.\n\n"
|
|
||||||
} else {
|
|
||||||
let msg = "No Issues found.\n\n";
|
|
||||||
}
|
|
||||||
if (infolist_len != 0) {
|
|
||||||
msg += "Some of files have special handling:\n"
|
|
||||||
for (const i in infolist)
|
|
||||||
msg += i + "\n";
|
|
||||||
msg += "\n\n";
|
|
||||||
}
|
|
||||||
comment_func({
|
|
||||||
owner: context.repo.owner,
|
|
||||||
repo: context.repo.repo,
|
|
||||||
body: msg,
|
|
||||||
...(comment_id == -1 ? {issue_number: context.issue.number} : {comment_id: comment_id})
|
|
||||||
});
|
|
||||||
} else if (comment_id != -1) {
|
|
||||||
github.rest.issues.updateComment({
|
|
||||||
owner: context.repo.owner,
|
|
||||||
repo: context.repo.repo,
|
|
||||||
comment_id: comment_id,
|
|
||||||
body: msg_prefix + "All issues resolved."
|
|
||||||
});
|
|
||||||
}
|
|
||||||
@@ -1,70 +0,0 @@
|
|||||||
name: Cross-build Kernel
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches: [ main, 'stable/[1-9][0-9]' ]
|
|
||||||
pull_request:
|
|
||||||
branches: [ main ]
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
name: ${{ matrix.target_arch }} ${{ matrix.os }} (${{ matrix.compiler }})
|
|
||||||
runs-on: ${{ matrix.os }}
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
target_arch: [ amd64, aarch64 ]
|
|
||||||
os: [ ubuntu-22.04, ubuntu-24.04, macos-latest ]
|
|
||||||
include:
|
|
||||||
# TODO: both Ubuntu and macOS have bmake packages, we should try them instead of bootstrapping our own copy.
|
|
||||||
- os: ubuntu-22.04
|
|
||||||
compiler: clang-15
|
|
||||||
cross-bindir: /usr/lib/llvm-15/bin
|
|
||||||
pkgs: bmake libarchive-dev clang-15 lld-15
|
|
||||||
- os: ubuntu-24.04
|
|
||||||
compiler: clang-18
|
|
||||||
cross-bindir: /usr/lib/llvm-18/bin
|
|
||||||
pkgs: bmake libarchive-dev clang-18 lld-18
|
|
||||||
- os: macos-latest
|
|
||||||
compiler: clang-18
|
|
||||||
cross-toolchain: llvm@18
|
|
||||||
pkgs: bmake libarchive llvm@18
|
|
||||||
- target_arch: amd64
|
|
||||||
target: amd64
|
|
||||||
- target_arch: aarch64
|
|
||||||
target: arm64
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
- name: install packages (Ubuntu)
|
|
||||||
if: runner.os == 'Linux'
|
|
||||||
run: |
|
|
||||||
sudo apt-get update --quiet || true
|
|
||||||
sudo apt-get -yq --no-install-suggests --no-install-recommends install ${{ matrix.pkgs }}
|
|
||||||
- name: install packages (macOS)
|
|
||||||
if: runner.os == 'macOS'
|
|
||||||
run: |
|
|
||||||
brew update --quiet || true
|
|
||||||
brew install ${{ matrix.pkgs }} || true
|
|
||||||
- name: create environment
|
|
||||||
run: |
|
|
||||||
echo "GITHUB_WORKSPACE = $GITHUB_WORKSPACE"
|
|
||||||
if [ -n "${{ matrix.cross-bindir }}" ]; then
|
|
||||||
echo "EXTRA_BUILD_ARGS=--cross-bindir=${{ matrix.cross-bindir }}" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
if [ -n "${{ matrix.cross-toolchain }}" ]; then
|
|
||||||
echo "EXTRA_BUILD_ARGS=--cross-toolchain=${{ matrix.cross-toolchain }}" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
mkdir -p ../build
|
|
||||||
echo "MAKEOBJDIRPREFIX=${PWD%/*}/build" >> $GITHUB_ENV
|
|
||||||
# heh, works on Linux/BSD/macOS ...
|
|
||||||
echo "NPROC=`getconf _NPROCESSORS_ONLN 2>/dev/null || getconf NPROCESSORS_ONLN 2>/dev/null || echo 1`" >> $GITHUB_ENV
|
|
||||||
- name: bootstrap bmake
|
|
||||||
run: ./tools/build/make.py --debug $EXTRA_BUILD_ARGS TARGET=${{ matrix.target }} TARGET_ARCH=${{ matrix.target_arch }} -n
|
|
||||||
- name: make kernel-toolchain
|
|
||||||
run: ./tools/build/make.py --debug $EXTRA_BUILD_ARGS TARGET=${{ matrix.target }} TARGET_ARCH=${{ matrix.target_arch }} kernel-toolchain -s -j$NPROC -DWITH_DISK_IMAGE_TOOLS_BOOTSTRAP
|
|
||||||
- name: make buildkernel
|
|
||||||
run: ./tools/build/make.py --debug $EXTRA_BUILD_ARGS TARGET=${{ matrix.target }} TARGET_ARCH=${{ matrix.target_arch }} KERNCONF=GENERIC NO_MODULES=yes buildkernel -s -j$NPROC $EXTRA_MAKE_ARGS
|
|
||||||
@@ -1,36 +0,0 @@
|
|||||||
name: Style Checker
|
|
||||||
|
|
||||||
# Runs my simple style(9) checker on pull requests.
|
|
||||||
|
|
||||||
on:
|
|
||||||
pull_request: # maybe pull_request_target
|
|
||||||
branches: [ main ]
|
|
||||||
types: [ opened, reopened, edited, synchronize ]
|
|
||||||
paths: [ '**.S', '**.c', '**.cc', '**.cpp', '**.h', '**.hh', '**.hpp' ]
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
name: Style Checker
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
# Unfortunately there doesn't seem to be a way to
|
|
||||||
# do this without an extra step.
|
|
||||||
- name: Get depth
|
|
||||||
run: |
|
|
||||||
echo "DEPTH=$(( ${{ github.event.pull_request.commits }} + 1 ))" >> $GITHUB_ENV
|
|
||||||
- name: checkout
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
fetch-depth: ${{ env.DEPTH }}
|
|
||||||
ref: ${{ github.event.pull_request.head.sha }}
|
|
||||||
- name: Install packages
|
|
||||||
run: |
|
|
||||||
sudo apt-get update --quiet || true
|
|
||||||
sudo apt-get -yq --no-install-suggests --no-install-recommends install perl
|
|
||||||
- name: Run checker
|
|
||||||
run: |
|
|
||||||
sha=$(git rev-parse HEAD~${{ github.event.pull_request.commits }})
|
|
||||||
tools/build/checkstyle9.pl --github ${sha}..${{ github.event.pull_request.head.sha }}
|
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
|
The compilation of software known as KekenoBSD is distributed under the
|
||||||
The compilation of software known as FreeBSD is distributed under the
|
|
||||||
following terms:
|
following terms:
|
||||||
|
|
||||||
Copyright (c) 1992-2026 The FreeBSD Project.
|
Copyright (c) 2026 chersbobers / The KekenoBSD Project. All rights reserved.
|
||||||
|
Copyright (c) 1992-2026 The FreeBSD Project. All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions
|
modification, are permitted provided that the following conditions
|
||||||
@@ -23,102 +23,4 @@ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|||||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||||
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||||
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
SUCH DAMAGE.
|
SUCH DAMAGE.
|
||||||
|
|
||||||
The 4.4BSD and 4.4BSD-Lite software is distributed under the following
|
|
||||||
terms:
|
|
||||||
|
|
||||||
All of the documentation and software included in the 4.4BSD and 4.4BSD-Lite
|
|
||||||
Releases is copyrighted by The Regents of the University of California.
|
|
||||||
|
|
||||||
Copyright 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
|
|
||||||
The Regents of the University of California. All rights reserved.
|
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
|
||||||
modification, are permitted provided that the following conditions
|
|
||||||
are met:
|
|
||||||
1. Redistributions of source code must retain the above copyright
|
|
||||||
notice, this list of conditions and the following disclaimer.
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright
|
|
||||||
notice, this list of conditions and the following disclaimer in the
|
|
||||||
documentation and/or other materials provided with the distribution.
|
|
||||||
3. All advertising materials mentioning features or use of this software
|
|
||||||
must display the following acknowledgement:
|
|
||||||
This product includes software developed by the University of
|
|
||||||
California, Berkeley and its contributors.
|
|
||||||
4. Neither the name of the University nor the names of its contributors
|
|
||||||
may be used to endorse or promote products derived from this software
|
|
||||||
without specific prior written permission.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
|
||||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
||||||
ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
|
||||||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
||||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
||||||
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
||||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
||||||
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
||||||
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
||||||
SUCH DAMAGE.
|
|
||||||
|
|
||||||
The Institute of Electrical and Electronics Engineers and the American
|
|
||||||
National Standards Committee X3, on Information Processing Systems have
|
|
||||||
given us permission to reprint portions of their documentation.
|
|
||||||
|
|
||||||
In the following statement, the phrase ``this text'' refers to portions
|
|
||||||
of the system documentation.
|
|
||||||
|
|
||||||
Portions of this text are reprinted and reproduced in electronic form in
|
|
||||||
the second BSD Networking Software Release, from IEEE Std 1003.1-1988, IEEE
|
|
||||||
Standard Portable Operating System Interface for Computer Environments
|
|
||||||
(POSIX), copyright C 1988 by the Institute of Electrical and Electronics
|
|
||||||
Engineers, Inc. In the event of any discrepancy between these versions
|
|
||||||
and the original IEEE Standard, the original IEEE Standard is the referee
|
|
||||||
document.
|
|
||||||
|
|
||||||
In the following statement, the phrase ``This material'' refers to portions
|
|
||||||
of the system documentation.
|
|
||||||
|
|
||||||
This material is reproduced with permission from American National
|
|
||||||
Standards Committee X3, on Information Processing Systems. Computer and
|
|
||||||
Business Equipment Manufacturers Association (CBEMA), 311 First St., NW,
|
|
||||||
Suite 500, Washington, DC 20001-2178. The developmental work of
|
|
||||||
Programming Language C was completed by the X3J11 Technical Committee.
|
|
||||||
|
|
||||||
The views and conclusions contained in the software and documentation are
|
|
||||||
those of the authors and should not be interpreted as representing official
|
|
||||||
policies, either expressed or implied, of the Regents of the University
|
|
||||||
of California.
|
|
||||||
|
|
||||||
|
|
||||||
NOTE: The copyright of UC Berkeley's Berkeley Software Distribution ("BSD")
|
|
||||||
source has been updated. The copyright addendum may be found at
|
|
||||||
ftp://ftp.cs.berkeley.edu/pub/4bsd/README.Impt.License.Change and is
|
|
||||||
included below.
|
|
||||||
|
|
||||||
July 22, 1999
|
|
||||||
|
|
||||||
To All Licensees, Distributors of Any Version of BSD:
|
|
||||||
|
|
||||||
As you know, certain of the Berkeley Software Distribution ("BSD") source
|
|
||||||
code files require that further distributions of products containing all or
|
|
||||||
portions of the software, acknowledge within their advertising materials
|
|
||||||
that such products contain software developed by UC Berkeley and its
|
|
||||||
contributors.
|
|
||||||
|
|
||||||
Specifically, the provision reads:
|
|
||||||
|
|
||||||
" * 3. All advertising materials mentioning features or use of this software
|
|
||||||
* must display the following acknowledgement:
|
|
||||||
* This product includes software developed by the University of
|
|
||||||
* California, Berkeley and its contributors."
|
|
||||||
|
|
||||||
Effective immediately, licensees and distributors are no longer required to
|
|
||||||
include the acknowledgement within advertising materials. Accordingly, the
|
|
||||||
foregoing paragraph of those BSD Unix files containing it is hereby deleted
|
|
||||||
in its entirety.
|
|
||||||
|
|
||||||
William Hoskins
|
|
||||||
Director, Office of Technology Licensing
|
|
||||||
University of California, Berkeley
|
|
||||||
@@ -1,49 +1,36 @@
|
|||||||
FreeBSD Source:
|
<p align="center">
|
||||||
---------------
|
<img src="https://curds.dev/KekenoBSD/images/raw/commit/1bf653d7f0d73b447682ddf86c9b5cf680eefe17/IMG_3232-cropped.jpg" width="450" alt="KekenoBSD Mascot">
|
||||||
This is the top level of the FreeBSD source directory.
|
<br>
|
||||||
|
<i>The New Zealand Fur Seal (Kekeno) — the official inspiration for KekenoBSD (Photo taken by: chersbobers)</i>
|
||||||
|
</p>
|
||||||
|
|
||||||
FreeBSD is an operating system used to power modern servers, desktops, and embedded platforms.
|
# KekenoBSD Source
|
||||||
A large community has continually developed it for more than thirty years.
|
|
||||||
Its advanced networking, security, and storage features have made FreeBSD the platform of choice for many of the busiest web sites and most pervasive embedded networking and storage devices.
|
|
||||||
|
|
||||||
For copyright information, please see [the file COPYRIGHT](COPYRIGHT) in this directory.
|
> Note: KekenoBSD is a fork of FreeBSD that follows a semi-mirror release model, ensuring system updates land shortly after upstream FreeBSD releases.
|
||||||
Additional copyright information also exists for some sources in this tree - please see the specific source directories for more information.
|
|
||||||
|
|
||||||
The Makefile in this directory supports a number of targets for building components (or all) of the FreeBSD source tree.
|
KekenoBSD is a soft-fork of FreeBSD with more of a focus on laptops over desktop as freeBSD is an established desktop os.
|
||||||
See build(7), config(8), [FreeBSD handbook on building userland](https://docs.freebsd.org/en/books/handbook/cutting-edge/#makeworld), and [Handbook for kernels](https://docs.freebsd.org/en/books/handbook/kernelconfig/) for more information, including setting make(1) variables.
|
|
||||||
|
|
||||||
For information on the CPU architectures and platforms supported by FreeBSD, see the [FreeBSD
|
---
|
||||||
website's Platforms page](https://www.freebsd.org/platforms/).
|
# Installing
|
||||||
|
|
||||||
For official FreeBSD bootable images, see the [release page](https://download.freebsd.org/ftp/releases/ISO-IMAGES/).
|
KekenoBSD comes with a easy to use installer forked from the ghostBSD repos, <br>
|
||||||
|
Alternatively as its freeBSD based you can the freeBSD way
|
||||||
|
|
||||||
Source Roadmap:
|
---
|
||||||
---------------
|
|
||||||
| Directory | Description |
|
|
||||||
| --------- | ----------- |
|
|
||||||
| bin | System/user commands. |
|
|
||||||
| cddl | Source code for third-party software under the Common Development and Distribution License. |
|
|
||||||
| contrib | Source code for third-party software. |
|
|
||||||
| crypto | Source code for cryptographic libraries and commands (see [crypto/README](crypto/README)). |
|
|
||||||
| etc | Template files for /etc. |
|
|
||||||
| gnu | Source code for third-party software under the GNU General Public License (GPL) or Lesser General Public License (LGPL). Please see [gnu/COPYING](gnu/COPYING) and [gnu/COPYING.LIB](gnu/COPYING.LIB) for more information. |
|
|
||||||
| include | System include files. |
|
|
||||||
| kerberos5 | Build system for Kerberos 5 (Heimdal). |
|
|
||||||
| krb5 | Build system for Kerberos 5 (MIT). |
|
|
||||||
| lib | System libraries. |
|
|
||||||
| libexec | System commands intended to be executed by other commands or daemons. |
|
|
||||||
| packages | Base system packages. |
|
|
||||||
| release | Makefiles and scripts used for building releases and VM images. |
|
|
||||||
| rescue | Build system for statically linked /rescue commands. |
|
|
||||||
| sbin | System commands. |
|
|
||||||
| secure | Build system for cryptographic libraries and commands (excluding Kerberos). |
|
|
||||||
| share | Shared resources. |
|
|
||||||
| stand | Boot loader sources. |
|
|
||||||
| sys | Kernel sources (see [sys/README.md](sys/README.md)). |
|
|
||||||
| targets | Support for experimental `DIRDEPS_BUILD` |
|
|
||||||
| tests | Tests which can be run by Kyua. See [tests/README](tests/README) for additional information. |
|
|
||||||
| tools | Ancillary utilities and tests (not included in the build). |
|
|
||||||
| usr.bin | User commands. |
|
|
||||||
| usr.sbin | System administration commands. |
|
|
||||||
|
|
||||||
For information on synchronizing your source tree with one or more of the FreeBSD Project's development branches, please see [FreeBSD Handbook](https://docs.freebsd.org/en/books/handbook/cutting-edge/#current-stable).
|
## The Pup Profile Manager
|
||||||
|
`pup` is KekenoBSD's profile manager, allowing you to change you're os on the fly
|
||||||
|
| Profile | What It Does |
|
||||||
|
| :--- | :--- |
|
||||||
|
| (LIGHT) | Turns off unneeded background services and strips down desktop effects to save RAM and battery. |
|
||||||
|
| (PRIVACY) | Hardens system security, hides user processes, and sets up a strict, local firewall posture. |
|
||||||
|
| (DEAFULT) | Auto-detects graphics cards, enables USB auto-mounting, and sets up friendly terminal shortcuts. |
|
||||||
|
| (GAMING) | Optimizes the system for low latency, tweaks scheduler performance, and enables the Linux compatibility layer for games. |
|
||||||
|
|
||||||
|
---
|
||||||
|
# Credits
|
||||||
|
> as of 7:16 pm 15/6/26 NZDT
|
||||||
|
|
||||||
|
Copyright (c) FreeBSD project <br>
|
||||||
|
Copyright (c) GhostBSD <br>
|
||||||
|
Copyright (c) Chersbobers / KekenoBSD team
|
||||||
|
|||||||
@@ -1,291 +1,70 @@
|
|||||||
Release notes for FreeBSD 16.0.
|
Release Notes for KekenoBSD 1.0 (Based on FreeBSD 16.0)
|
||||||
|
|
||||||
This file describes new user-visible features, changes and updates relevant to
|
This file describes new user-visible features, changes and updates relevant to
|
||||||
users of binary FreeBSD releases. Each entry should describe the change in no
|
users of binary KekenoBSD releases. Entries wrap after 80 columns.
|
||||||
more than several sentences and should reference manual pages where an
|
|
||||||
interested user can find more information. Entries should wrap after 80
|
|
||||||
columns. Each entry should begin with one or more commit IDs on one line,
|
|
||||||
specified as a comma separated list and/or range, followed by a colon and a
|
|
||||||
newline. Entries should be separated by a newline.
|
|
||||||
|
|
||||||
Changes to this file should not be MFCed.
|
=============================================================================
|
||||||
|
KEKENOBSD 1.0 EMPOWERMENT NOTE:
|
||||||
b92b9da33006, 13d3bd165e22:
|
KekenoBSD 1.0 transitions fully to a Pkgbase infrastructure. The core
|
||||||
This patch allows vfs.nfsd.srvmaxio to be set to
|
system is now entirely modular, managed seamlessly via the 'pup' utility
|
||||||
a value as high as 4Mbytes. It is usually set
|
and underlying pkg(8) architecture.
|
||||||
via the nfs_server_maxio variable in /etc/rc.conf.
|
=============================================================================
|
||||||
|
|
||||||
4c486fe40267:
|
|
||||||
The multicast routing modules, ip_mroute and ip6_mroute, are now FIB-aware.
|
|
||||||
That is, there is a multicast routing table per FIB, rather than a global
|
|
||||||
table. One can run a multicast routing daemon within each FIB; the FIB of
|
|
||||||
the routing socket determines the corresponding multicast routing table.
|
|
||||||
|
|
||||||
5c2186b99254,628d7a3270b6:
|
|
||||||
When the sector size for an NVMe namespace changes, nda(4) now
|
|
||||||
reports this as a media change rather than a disk resize
|
|
||||||
event. nda(4) also no longer reports a disk resize event in
|
|
||||||
some cases when the namespace's size had not changed. nda(4)
|
|
||||||
also reprobes NVMe namespaces each time they are opened to
|
|
||||||
check for a new sector size or namespace size.
|
|
||||||
|
|
||||||
7a323f873662:
|
|
||||||
Remove the le(4) driver. This driver supported older 10Mbps
|
|
||||||
and 100Mbps Ethernet adapters. True hardware devices have not
|
|
||||||
been used in FreeBSD systems in many years, but the driver was
|
|
||||||
previously retained for use with MIPS QEMU virtual machines.
|
|
||||||
|
|
||||||
e51ef8ae490f:
|
|
||||||
Add initial support for instruction-based sampling (IBS)
|
|
||||||
performance counters on AMD processors to hwpmc(4).
|
|
||||||
|
|
||||||
d69fc3a9dc71:
|
|
||||||
The EFI boot loader now tries all ZFS pools found during
|
|
||||||
probing when looking for a boot pool. Previously it would try
|
|
||||||
only the first pool found.
|
|
||||||
|
|
||||||
4d5c434ed16e:
|
|
||||||
Use the BSD-licensed implementation of diff3 instead of GNU diff3
|
|
||||||
by default.
|
|
||||||
|
|
||||||
7f54c65abc67:
|
|
||||||
Update the smartpqi(4) driver to vendor version 14.4690.0.2008
|
|
||||||
- 15.2.0.2008. This includes support for new controllers and
|
|
||||||
renaming Microsemi to Microchip.
|
|
||||||
|
|
||||||
350c1232a57a:
|
|
||||||
nvmecontrol(8)'s telemetry-log now works reliably.
|
|
||||||
|
|
||||||
d14e018024bb,b125c4d13095,1322760fd127,0730a05cd383:
|
|
||||||
Permit both SCHED_ULE and SCHED_4BSD to be compiled into the
|
|
||||||
same kernel. The scheduler can be selected at boot time by
|
|
||||||
setting the kern.sched_name tunable to the scheduler name
|
|
||||||
("4BSD" or "ULE"). The default scheduler is ULE. This is
|
|
||||||
currently enabled in amd64 kernels by default.
|
|
||||||
|
|
||||||
90a7728cd890:
|
|
||||||
Update nuageinit to request configuration on all network
|
|
||||||
interfaces. nuageinit will now issue DHCP requests on all
|
|
||||||
network interfaces and request configuration data from the
|
|
||||||
first interface which successfully obtains a lease.
|
|
||||||
|
|
||||||
92ba9b2fe589:
|
|
||||||
Add RoCE support for Broadcom BCM576xx controllers.
|
|
||||||
|
|
||||||
fb4b0c911951:
|
|
||||||
Add a facility to witness(4) to provide more detailed information
|
|
||||||
about lock order reversals detailing when initial lock orders were
|
|
||||||
established.
|
|
||||||
|
|
||||||
65f5dd42f11c:
|
|
||||||
sh(1) add -l option which makes sh act as a login shell and read the profile.
|
|
||||||
|
|
||||||
beab8b1ddf86:
|
|
||||||
bintrans(1) now supports the RFC2047 variant of quoted print
|
|
||||||
|
|
||||||
9dc96d8bc3f2:
|
|
||||||
libusb(3) hotplug event are now really hotplugged using either
|
|
||||||
nlsysevent or devd(9) if available.
|
|
||||||
|
|
||||||
d64db8892f85:
|
|
||||||
sh(1) is the default shell in the release media.
|
|
||||||
|
|
||||||
68ad2b0d7af2:
|
|
||||||
ncurses has been updated to 6.6
|
|
||||||
|
|
||||||
52d19df19ed6:
|
|
||||||
nvi(1) has been update to 2.2.2
|
|
||||||
|
|
||||||
4d5c434ed16e, 2cfca8e710f2:
|
|
||||||
diff3(1) has replaced GNU diff3 and is now fully compatible.
|
|
||||||
|
|
||||||
625dc44832cd:
|
|
||||||
tr(1) is now UTF-8 compliant.
|
|
||||||
|
|
||||||
62fba0054d9e:
|
|
||||||
ee(1) is now UTF-8 compliant.
|
|
||||||
|
|
||||||
5df6aca10906:
|
|
||||||
ed(1) is now UTF-8 compliant.
|
|
||||||
|
|
||||||
28ff4d35f8b9:
|
|
||||||
Update libedit to 2026-04-03.
|
|
||||||
|
|
||||||
b42e852e89cb:
|
b42e852e89cb:
|
||||||
Add a new pkg-serve(8) to serve packages over TCP via inetd.
|
Add a new pkg-serve(8) utility to serve packages over TCP via inetd.
|
||||||
|
|
||||||
8b9775912cbc, 53b4ae3bf0f7:
|
d14e018024bb, b125c4d13095, 1322760fd127:
|
||||||
Add support for an NFSv4 root file system.
|
Permit both SCHED_ULE and SCHED_4BSD to be compiled into the same kernel.
|
||||||
Note that NFSv3 is still used for bootstrapping. See
|
The scheduler can be selected at boot time by setting the kern.sched_name
|
||||||
"Diskless Operation with PXE" under "Advanced Networking" in the
|
tunable to the scheduler name ("4BSD" or "ULE") in /boot/loader.conf.
|
||||||
FreeBSD Handbook. To configure an NFSv4 root fs, you will need
|
The default scheduler remains ULE.
|
||||||
a line in /boot/loader.conf like boot.nfsroot.options="nfsv4" and
|
|
||||||
either a line in /etc/sysctl.conf like vfs.nfs.enable_uidtostring=1
|
|
||||||
or an additional line in /boot/loader.conf like
|
|
||||||
boot.nfsroot.user_domain="<user-domain>",
|
|
||||||
if you are running nfsuserd(8).
|
|
||||||
|
|
||||||
ab9257599a5:
|
|
||||||
The src.conf(5) options WITHOUT_BZIP2 and WITHOUT_BZIP2_SUPPORT
|
|
||||||
have been removed.
|
|
||||||
|
|
||||||
af099eaa5ec:
|
|
||||||
Users belonging to the new vmm group can now create bhyve VMs. See the
|
|
||||||
vmm(4) man page for details.
|
|
||||||
|
|
||||||
c71354030a2:
|
|
||||||
Users wishing to use bhyve PCI passthrough in jails must create the
|
|
||||||
jail with the allow.vmm_ppt option configured.
|
|
||||||
|
|
||||||
4d707825bf62:
|
|
||||||
The pdwait(2) system call was added. It provides wait(2)-like
|
|
||||||
functionality for a process descriptor (see procdesc(4)).
|
|
||||||
|
|
||||||
5c2ee618d5ec:
|
|
||||||
The pdrfork(2) system call was added. It behaves like rfork(2) but
|
|
||||||
additionally returns a process descriptor (see procdesc(4)).
|
|
||||||
|
|
||||||
41ccf82b29f3, 591c7a08bf8a:
|
|
||||||
On arm64, memcpy(3), memmove(3) and memset(3) are now implemented using
|
|
||||||
the MOPS (Memory Operations) feature instructions when they are
|
|
||||||
implemented by the system.
|
|
||||||
|
|
||||||
3f0aea09689f:
|
|
||||||
posix_spawnattr_getexecfd_np(3) and posix_spawnattr_setexecfd_np(3)
|
|
||||||
functions were added to libc. The latter causes posix_spawn(3) to
|
|
||||||
call fexecve(2) on the specified file descriptor rather than executing
|
|
||||||
the file at the provided path.
|
|
||||||
|
|
||||||
fb4b0c911951:
|
|
||||||
witness(4) now prints additional information to the system console when
|
|
||||||
a lock order reversal is detected, making debugging such issues easier.
|
|
||||||
|
|
||||||
1322760fd127:
|
|
||||||
It is now possible to compile both the 4BSD and ULE schedulers into the
|
|
||||||
same kernel. The scheduler is selectable at boot-time using a tunable.
|
|
||||||
See the SCHEDULERS section of the tuning(7) man page for details.
|
|
||||||
|
|
||||||
627e126dbb07:
|
|
||||||
The default value of the net.inet6.ip6.connect_in6addr_wild has changed
|
|
||||||
to 0. This means that connecting to the all-zeroes IPv6 address no longer
|
|
||||||
implicitly results in a loopback connection.
|
|
||||||
|
|
||||||
afa70a8496e9:
|
|
||||||
The pthread_tryjoin_np(3) function was added to libthr(3). It provides
|
|
||||||
the same functionality as pthread_join(3) but returns instead of
|
|
||||||
blocking if the target thread has not yet exited.
|
|
||||||
|
|
||||||
ecc039be7fdd:
|
|
||||||
NanoBSD images can now be built as a non-root user.
|
|
||||||
|
|
||||||
7f54c65abc67:
|
|
||||||
Update smartpqi(4) to vendor version 14.4690.0.2008 - 15.2.0.2008
|
|
||||||
for the SmartArray storage controllers. This adds support for new
|
|
||||||
controllers, adds code that utilizes the new BIG_IOCTL_Command_struct
|
|
||||||
and allows the I/O buffer size for a single passthrough ioctl to be
|
|
||||||
stored as a 32 bit integer instead of the original 16 bit integer.
|
|
||||||
|
|
||||||
b0d997095022:
|
|
||||||
The pf firewall now supports passing IPv6 packets to divert(4)
|
|
||||||
sockets via divert-to actions.
|
|
||||||
|
|
||||||
0fa7b3bee72e, c71f18998e0b, 4162a419a475, f5a77dc8f8df:
|
|
||||||
LinuxKPI based wireless drivers, especially iwlwifi(4) are now
|
|
||||||
supported on RISC-V.
|
|
||||||
|
|
||||||
8254b0dec02b3, bd55cbb50c588:
|
|
||||||
The mac(4) framework has been extended to support jail operations,
|
|
||||||
allowing a policy to constrain jail creation, modification, removal, and
|
|
||||||
attachment. Jails have additionally been made a first-class mac(4)
|
|
||||||
object, and a mac.label jail(8) property has been added to facilitate
|
|
||||||
administration of their labels.
|
|
||||||
|
|
||||||
c558eca47970:
|
|
||||||
The smartpqi(4) driver was updated to vendor version 4660.0.2002
|
|
||||||
for the SmartArry storage controllers.
|
|
||||||
|
|
||||||
493d26c58e73:
|
|
||||||
The aq(4) driver was added, imported from the vendor repository.
|
|
||||||
This provides support for Aquantia / Marvell PCIe 1/2.5/5/10 Gigabit
|
|
||||||
Ethernet adapters (AQC107, AQC108, AQC109, AQC111, AQC112).
|
|
||||||
|
|
||||||
1a7151f79664:
|
|
||||||
A new CAM provider was added to dtrace. This enables tracing of I/O
|
|
||||||
requests through the CAM layer without relying on fragile function
|
|
||||||
boundary tracing. See dtrace_cam(4) for details.
|
|
||||||
|
|
||||||
b8c99e7d912f:
|
|
||||||
The tdestroy(3) function was added to libc. The tdestroy() function
|
|
||||||
destroys a whole search tree, freeing all allocated nodes.
|
|
||||||
|
|
||||||
4bf8ce037dc8:
|
|
||||||
The rge(4) driver was added, ported from OpenBSD. This provides
|
|
||||||
support for RealTek RTL8125, RTL8126 and RTL8127 PCIe Ethernet
|
|
||||||
controllers.
|
|
||||||
|
|
||||||
cbc6f7e941e4:
|
|
||||||
bhyve(8)'s VNC device can now listen on a unix(4) socket for VNC client
|
|
||||||
connections.
|
|
||||||
|
|
||||||
39ee24182b92:
|
|
||||||
An rc(8) service can now be started as a specific user for auditing
|
|
||||||
purposes by setting the <service>_audit_user rc.conf(5) variable.
|
|
||||||
|
|
||||||
dcb0790bad43:
|
|
||||||
A setaudit(8) utility was added to the base system. This provides a
|
|
||||||
simple command-line wrapper for the setaudit(2) and setaudit_addr(2)
|
|
||||||
system calls.
|
|
||||||
|
|
||||||
8e3fd450cc53, 949cff4dceff, 0e724de9ed6f, 9f49f436a9ec, e35191ccf3b3:
|
|
||||||
Add support for an extension to NFSv4.2 (RFCnnnn) that
|
|
||||||
supports handling of POSIX draft ACLs via getfacl(1)/setfacl(1).
|
|
||||||
|
|
||||||
dbac191956f9, fe21dbf70aa8:
|
|
||||||
Support for the kcmp(2) system call and fcntl(F_DUPFD_QUERY) for Linux
|
|
||||||
binaries.
|
|
||||||
|
|
||||||
a86dc94b84d1:
|
|
||||||
tzdata2025c was imported.
|
|
||||||
|
|
||||||
a98e5d785001:
|
|
||||||
Add strdupa(3) and strndupa(3) macros for compatability with glibc.
|
|
||||||
|
|
||||||
e967a2a03677:
|
|
||||||
divert socket compat removal, consumers must use PF_DIVERT instead of
|
|
||||||
PF_INET.
|
|
||||||
|
|
||||||
4453ec5b8716b, 2a3b1641756a:
|
4453ec5b8716b, 2a3b1641756a:
|
||||||
The reboot(8) and halt(8) commands now perform a graceful shutdown similar
|
The reboot(8) and halt(8) commands now perform a graceful shutdown by
|
||||||
to the shutdown(8) command including invoking rc.d scripts to shutdown
|
default, executing all rc.d service shutdown scripts. The fastboot(8)
|
||||||
services. The fastboot(8) and fasthalt(8) commands still perform a "fast"
|
and fasthalt(8) commands are retained for instant, non-graceful resets.
|
||||||
reboot or shutdown.
|
|
||||||
|
|
||||||
d9788eabffa4:
|
|
||||||
ipfilter cannot be used in a jail by default.
|
|
||||||
|
|
||||||
0ff0c19e7f70:
|
|
||||||
ipfs(8) is no longer built by default.
|
|
||||||
|
|
||||||
575efcfff22f:
|
|
||||||
sendfile(2)'s SF_SYNC flag was removed.
|
|
||||||
|
|
||||||
057dae35ffc6, 51a01f3debff, ca3e47b0ea68:
|
|
||||||
hwpmc(4) support for Intel Alder Lake 6-B7, 6-BA, and 6-BF CPU
|
|
||||||
hwpmc(4) support for Intel Emerald Rapids CPUs
|
|
||||||
hwpmc(4) support for Intel Alder Lake-N CPUs
|
|
||||||
|
|
||||||
1ecf01065b45:
|
|
||||||
New library libuvmem provides the vmem(9) API to userspace applications.
|
|
||||||
|
|
||||||
b6cad334e64:
|
b6cad334e64:
|
||||||
Make game controller devices accessible by members of the "game" group
|
Make game controller devices accessible by members of the "game" group
|
||||||
by default.
|
by default, removing the need for manual devfs rule adjustments.
|
||||||
|
|
||||||
791c531402bd:
|
128f63cedc14, 9e589b093857:
|
||||||
Add driver for Feature Integration Technology Inc. (aka Fintek) F81232
|
Added proper UTF-8 backspacing handling in the tty(4) driver, enabled via
|
||||||
USB to serial devices.
|
the new IUTF8 stty(1) flag. This flag is now active by default.
|
||||||
|
|
||||||
ec0cd287f55f:
|
625dc44832cd, 62fba0054d9e, 5df6aca10906:
|
||||||
Support for NVMe/TCP offload on Chelsio T7 adapters. The nvmf_che(4)
|
The tr(1), ee(1), and ed(1) utilities are now fully UTF-8 compliant.
|
||||||
module enables T7 adapters to process NVMe/TCP PDUs directly similar to
|
|
||||||
the PDU offload provided by cxgbei(4) for iSCSI.
|
65f5dd42f11c:
|
||||||
|
sh(1) adds a new -l option to explicitly force the shell to act as a
|
||||||
|
login shell and parse user profiles.
|
||||||
|
|
||||||
|
d64db8892f85:
|
||||||
|
sh(1) is now the default shell utilized in standard release media.
|
||||||
|
|
||||||
|
d69fc3a9dc71:
|
||||||
|
The EFI boot loader now probes all discovered ZFS pools when hunting for
|
||||||
|
a valid boot pool, rather than stopping after the first pool found.
|
||||||
|
|
||||||
|
4bf8ce037dc8:
|
||||||
|
The rge(4) driver was added (ported from OpenBSD), providing support for
|
||||||
|
RealTek RTL8125, RTL8126, and RTL8127 PCIe 2.5G/5G Ethernet controllers.
|
||||||
|
|
||||||
|
493d26c58e73:
|
||||||
|
The aq(4) driver was added, bringing support for Aquantia / Marvell PCIe
|
||||||
|
Multi-Gigabit Ethernet adapters (AQC107 through AQC112).
|
||||||
|
|
||||||
|
af099eaa5ec:
|
||||||
|
Unprivileged users belonging to the new "vmm" group can now create and
|
||||||
|
manage bhyve(8) virtual machines directly.
|
||||||
|
|
||||||
|
8254b0dec02b3, bd55cbb50c588:
|
||||||
|
The mac(4) framework now treats jails as first-class objects, allowing
|
||||||
|
MAC security policies to constrain jail actions via the mac.label property.
|
||||||
|
|
||||||
|
ab9257599a5:
|
||||||
|
The legacy src.conf(5) knobs WITHOUT_BZIP2 and WITHOUT_BZIP2_SUPPORT have
|
||||||
|
been permanently removed from the build system tree.
|
||||||
|
|
||||||
|
7a323f873662:
|
||||||
|
The legacy 10/100Mbps le(4) Ethernet driver has been removed.
|
||||||
@@ -12,6 +12,7 @@
|
|||||||
[EXTERR_CAT_FILEDESC] = "kern/kern_descrip.c",
|
[EXTERR_CAT_FILEDESC] = "kern/kern_descrip.c",
|
||||||
[EXTERR_CAT_PROCEXIT] = "kern/kern_exit.c",
|
[EXTERR_CAT_PROCEXIT] = "kern/kern_exit.c",
|
||||||
[EXTERR_CAT_FORK] = "kern/kern_fork.c",
|
[EXTERR_CAT_FORK] = "kern/kern_fork.c",
|
||||||
|
[EXTERR_CAT_LINKER] = "kern/kern_linker.c",
|
||||||
[EXTERR_CAT_GENIO] = "kern/sys_generic.c",
|
[EXTERR_CAT_GENIO] = "kern/sys_generic.c",
|
||||||
[EXTERR_CAT_VFSBIO] = "kern/vfs_bio.c",
|
[EXTERR_CAT_VFSBIO] = "kern/vfs_bio.c",
|
||||||
[EXTERR_CAT_INOTIFY] = "kern/vfs_inotify.c",
|
[EXTERR_CAT_INOTIFY] = "kern/vfs_inotify.c",
|
||||||
|
|||||||
@@ -95,8 +95,9 @@ path_check(const char *kldname, int quiet)
|
|||||||
|
|
||||||
if (sb.st_dev != dev || sb.st_ino != ino) {
|
if (sb.st_dev != dev || sb.st_ino != ino) {
|
||||||
if (!quiet)
|
if (!quiet)
|
||||||
warnx("%s will be loaded from %s, not the "
|
warnx(
|
||||||
"current directory", kldname, element);
|
"%s will be loaded from %s, not the current directory",
|
||||||
|
kldname, element);
|
||||||
break;
|
break;
|
||||||
} else if (sb.st_dev == dev && sb.st_ino == ino)
|
} else if (sb.st_dev == dev && sb.st_ino == ino)
|
||||||
break;
|
break;
|
||||||
@@ -171,15 +172,13 @@ main(int argc, char** argv)
|
|||||||
if (!quiet) {
|
if (!quiet) {
|
||||||
switch (errno) {
|
switch (errno) {
|
||||||
case EEXIST:
|
case EEXIST:
|
||||||
warnx("can't load %s: module "
|
warnx(
|
||||||
"already loaded or "
|
"can't load %s: module already loaded or in kernel", argv[0]);
|
||||||
"in kernel", argv[0]);
|
|
||||||
break;
|
break;
|
||||||
case ENOEXEC:
|
case ENOEXEC:
|
||||||
warnx("an error occurred while "
|
warnx(
|
||||||
"loading module %s. "
|
"an error occurred while loading module %s. Please check dmesg(8) for more details.",
|
||||||
"Please check dmesg(8) for "
|
argv[0]);
|
||||||
"more details.", argv[0]);
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
warn("can't load %s", argv[0]);
|
warn("can't load %s", argv[0]);
|
||||||
|
|||||||
@@ -191,8 +191,8 @@ debugfs_fill(PFS_FILL_ARGS)
|
|||||||
|
|
||||||
if (rc < 0) {
|
if (rc < 0) {
|
||||||
#ifdef INVARIANTS
|
#ifdef INVARIANTS
|
||||||
printf("%s:%d read/write failed with %zd\n", __func__, __LINE__,
|
printf("%s:%d %s failed with %zd\n", __func__, __LINE__,
|
||||||
rc);
|
(uio->uio_rw == UIO_READ) ? "read" : "write", rc);
|
||||||
#endif
|
#endif
|
||||||
return (-rc);
|
return (-rc);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -511,6 +511,8 @@ lkpi_sync_chanctx_cw_from_rx_bw(struct ieee80211_hw *hw,
|
|||||||
enum ieee80211_sta_rx_bandwidth old_bw;
|
enum ieee80211_sta_rx_bandwidth old_bw;
|
||||||
uint32_t changed;
|
uint32_t changed;
|
||||||
|
|
||||||
|
lockdep_assert_wiphy(hw->wiphy);
|
||||||
|
|
||||||
chanctx_conf = rcu_dereference_protected(vif->bss_conf.chanctx_conf,
|
chanctx_conf = rcu_dereference_protected(vif->bss_conf.chanctx_conf,
|
||||||
lockdep_is_held(&hw->wiphy->mtx));
|
lockdep_is_held(&hw->wiphy->mtx));
|
||||||
if (chanctx_conf == NULL)
|
if (chanctx_conf == NULL)
|
||||||
@@ -749,6 +751,9 @@ lkpi_sta_sync_from_ni(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
|
|||||||
struct ieee80211_sta *sta, struct ieee80211_node *ni, bool updchnctx)
|
struct ieee80211_sta *sta, struct ieee80211_node *ni, bool updchnctx)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
if (updchnctx)
|
||||||
|
lockdep_assert_wiphy(hw->wiphy);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Ensure rx_nss is at least 1 as otherwise drivers run into
|
* Ensure rx_nss is at least 1 as otherwise drivers run into
|
||||||
* unexpected problems.
|
* unexpected problems.
|
||||||
@@ -1950,7 +1955,7 @@ lkpi_ic_update_mcast_copy(void *arg, struct sockaddr_dl *sdl, u_int cnt)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
lkpi_update_mcast_filter(struct ieee80211com *ic)
|
lkpi_update_mcast_filter_locked(struct ieee80211com *ic)
|
||||||
{
|
{
|
||||||
struct lkpi_hw *lhw;
|
struct lkpi_hw *lhw;
|
||||||
struct ieee80211_hw *hw;
|
struct ieee80211_hw *hw;
|
||||||
@@ -1959,6 +1964,9 @@ lkpi_update_mcast_filter(struct ieee80211com *ic)
|
|||||||
bool scanning;
|
bool scanning;
|
||||||
|
|
||||||
lhw = ic->ic_softc;
|
lhw = ic->ic_softc;
|
||||||
|
hw = LHW_TO_HW(lhw);
|
||||||
|
|
||||||
|
lockdep_assert_wiphy(hw->wiphy);
|
||||||
|
|
||||||
LKPI_80211_LHW_SCAN_LOCK(lhw);
|
LKPI_80211_LHW_SCAN_LOCK(lhw);
|
||||||
scanning = (lhw->scan_flags & LKPI_LHW_SCAN_RUNNING) != 0;
|
scanning = (lhw->scan_flags & LKPI_LHW_SCAN_RUNNING) != 0;
|
||||||
@@ -1973,7 +1981,6 @@ lkpi_update_mcast_filter(struct ieee80211com *ic)
|
|||||||
if (lhw->mc_all_multi || lhw->ops->prepare_multicast == NULL)
|
if (lhw->mc_all_multi || lhw->ops->prepare_multicast == NULL)
|
||||||
flags |= FIF_ALLMULTI;
|
flags |= FIF_ALLMULTI;
|
||||||
|
|
||||||
hw = LHW_TO_HW(lhw);
|
|
||||||
mc = lkpi_80211_mo_prepare_multicast(hw, &lhw->mc_list);
|
mc = lkpi_80211_mo_prepare_multicast(hw, &lhw->mc_list);
|
||||||
|
|
||||||
changed_flags = (lhw->mc_flags ^ flags) & FIF_FLAGS_MASK;
|
changed_flags = (lhw->mc_flags ^ flags) & FIF_FLAGS_MASK;
|
||||||
@@ -1989,6 +1996,20 @@ lkpi_update_mcast_filter(struct ieee80211com *ic)
|
|||||||
LKPI_80211_LHW_MC_UNLOCK(lhw);
|
LKPI_80211_LHW_MC_UNLOCK(lhw);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
lkpi_update_mcast_filter(struct ieee80211com *ic)
|
||||||
|
{
|
||||||
|
struct lkpi_hw *lhw;
|
||||||
|
struct ieee80211_hw *hw;
|
||||||
|
|
||||||
|
lhw = ic->ic_softc;
|
||||||
|
hw = LHW_TO_HW(lhw);
|
||||||
|
|
||||||
|
wiphy_lock(hw->wiphy);
|
||||||
|
lkpi_update_mcast_filter_locked(ic);
|
||||||
|
wiphy_unlock(hw->wiphy);
|
||||||
|
}
|
||||||
|
|
||||||
static enum ieee80211_bss_changed
|
static enum ieee80211_bss_changed
|
||||||
lkpi_update_dtim_tsf(struct ieee80211_vif *vif, struct ieee80211_node *ni,
|
lkpi_update_dtim_tsf(struct ieee80211_vif *vif, struct ieee80211_node *ni,
|
||||||
struct ieee80211vap *vap, const char *_f, int _l)
|
struct ieee80211vap *vap, const char *_f, int _l)
|
||||||
@@ -2118,6 +2139,8 @@ lkpi_hw_conf_idle(struct ieee80211_hw *hw, bool new)
|
|||||||
int error;
|
int error;
|
||||||
bool old;
|
bool old;
|
||||||
|
|
||||||
|
lockdep_assert_wiphy(hw->wiphy);
|
||||||
|
|
||||||
old = hw->conf.flags & IEEE80211_CONF_IDLE;
|
old = hw->conf.flags & IEEE80211_CONF_IDLE;
|
||||||
if (old == new)
|
if (old == new)
|
||||||
return;
|
return;
|
||||||
@@ -2135,8 +2158,12 @@ static enum ieee80211_bss_changed
|
|||||||
lkpi_disassoc(struct ieee80211_sta *sta, struct ieee80211_vif *vif,
|
lkpi_disassoc(struct ieee80211_sta *sta, struct ieee80211_vif *vif,
|
||||||
struct lkpi_hw *lhw)
|
struct lkpi_hw *lhw)
|
||||||
{
|
{
|
||||||
enum ieee80211_bss_changed changed;
|
struct ieee80211_hw *hw;
|
||||||
struct lkpi_vif *lvif;
|
struct lkpi_vif *lvif;
|
||||||
|
enum ieee80211_bss_changed changed;
|
||||||
|
|
||||||
|
hw = LHW_TO_HW(lhw);
|
||||||
|
lockdep_assert_wiphy(hw->wiphy);
|
||||||
|
|
||||||
changed = 0;
|
changed = 0;
|
||||||
sta->aid = 0;
|
sta->aid = 0;
|
||||||
@@ -2147,7 +2174,7 @@ lkpi_disassoc(struct ieee80211_sta *sta, struct ieee80211_vif *vif,
|
|||||||
changed |= BSS_CHANGED_ASSOC;
|
changed |= BSS_CHANGED_ASSOC;
|
||||||
IMPROVE();
|
IMPROVE();
|
||||||
|
|
||||||
lkpi_update_mcast_filter(lhw->ic);
|
lkpi_update_mcast_filter_locked(lhw->ic);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Executing the bss_info_changed(BSS_CHANGED_ASSOC) with
|
* Executing the bss_info_changed(BSS_CHANGED_ASSOC) with
|
||||||
@@ -2397,6 +2424,8 @@ lkpi_set_chanctx_conf(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
|
|||||||
struct lkpi_chanctx *lchanctx;
|
struct lkpi_chanctx *lchanctx;
|
||||||
int error;
|
int error;
|
||||||
|
|
||||||
|
lockdep_assert_wiphy(hw->wiphy);
|
||||||
|
|
||||||
if (vif->bss_conf.chanctx_conf == chanctx_conf) {
|
if (vif->bss_conf.chanctx_conf == chanctx_conf) {
|
||||||
if (!changed_set) {
|
if (!changed_set) {
|
||||||
IMPROVE("OBSOLETE?");
|
IMPROVE("OBSOLETE?");
|
||||||
@@ -3075,7 +3104,7 @@ lkpi_sta_assoc_to_run(struct ieee80211vap *vap, enum ieee80211_state nstate, int
|
|||||||
lkpi_bss_info_change(hw, vif, bss_changed);
|
lkpi_bss_info_change(hw, vif, bss_changed);
|
||||||
|
|
||||||
/* Prepare_multicast && configure_filter. */
|
/* Prepare_multicast && configure_filter. */
|
||||||
lkpi_update_mcast_filter(vap->iv_ic);
|
lkpi_update_mcast_filter_locked(vap->iv_ic);
|
||||||
|
|
||||||
out:
|
out:
|
||||||
wiphy_unlock(hw->wiphy);
|
wiphy_unlock(hw->wiphy);
|
||||||
@@ -4198,12 +4227,13 @@ lkpi_ic_vap_create(struct ieee80211com *ic, const char name[IFNAMSIZ],
|
|||||||
ic_printf(ic, "%s: conf_tx ac %u failed %d\n",
|
ic_printf(ic, "%s: conf_tx ac %u failed %d\n",
|
||||||
__func__, ac, error);
|
__func__, ac, error);
|
||||||
}
|
}
|
||||||
wiphy_unlock(hw->wiphy);
|
|
||||||
bss_changed = BSS_CHANGED_QOS;
|
bss_changed = BSS_CHANGED_QOS;
|
||||||
lkpi_bss_info_change(hw, vif, bss_changed);
|
lkpi_bss_info_change(hw, vif, bss_changed);
|
||||||
|
|
||||||
/* Force MC init. */
|
/* Force MC init. */
|
||||||
lkpi_update_mcast_filter(ic);
|
lkpi_update_mcast_filter_locked(ic);
|
||||||
|
|
||||||
|
wiphy_unlock(hw->wiphy);
|
||||||
|
|
||||||
ieee80211_vap_setup(ic, vap, name, unit, opmode, flags, bssid);
|
ieee80211_vap_setup(ic, vap, name, unit, opmode, flags, bssid);
|
||||||
|
|
||||||
@@ -4713,8 +4743,11 @@ lkpi_ic_scan_start(struct ieee80211com *ic)
|
|||||||
lvif = VAP_TO_LVIF(vap);
|
lvif = VAP_TO_LVIF(vap);
|
||||||
vif = LVIF_TO_VIF(lvif);
|
vif = LVIF_TO_VIF(lvif);
|
||||||
|
|
||||||
if (vap->iv_state == IEEE80211_S_SCAN)
|
if (vap->iv_state == IEEE80211_S_SCAN) {
|
||||||
|
wiphy_lock(hw->wiphy);
|
||||||
lkpi_hw_conf_idle(hw, false);
|
lkpi_hw_conf_idle(hw, false);
|
||||||
|
wiphy_unlock(hw->wiphy);
|
||||||
|
}
|
||||||
|
|
||||||
LKPI_80211_LHW_SCAN_LOCK(lhw);
|
LKPI_80211_LHW_SCAN_LOCK(lhw);
|
||||||
lhw->scan_flags |= LKPI_LHW_SCAN_RUNNING;
|
lhw->scan_flags |= LKPI_LHW_SCAN_RUNNING;
|
||||||
@@ -4967,7 +5000,8 @@ lkpi_ic_scan_start(struct ieee80211com *ic)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
lkpi_update_mcast_filter(ic);
|
wiphy_lock(hw->wiphy);
|
||||||
|
lkpi_update_mcast_filter_locked(ic);
|
||||||
TRACE_SCAN(ic, "Starting HW_SCAN: scan_flags %b, "
|
TRACE_SCAN(ic, "Starting HW_SCAN: scan_flags %b, "
|
||||||
"ie_len %d, n_ssids %d, n_chan %d, common_ie_len %d [%d, %d]",
|
"ie_len %d, n_ssids %d, n_chan %d, common_ie_len %d [%d, %d]",
|
||||||
lhw->scan_flags, LKPI_LHW_SCAN_BITS, hw_req->req.ie_len,
|
lhw->scan_flags, LKPI_LHW_SCAN_BITS, hw_req->req.ie_len,
|
||||||
@@ -4977,6 +5011,7 @@ lkpi_ic_scan_start(struct ieee80211com *ic)
|
|||||||
hw_req->ies.len[NL80211_BAND_5GHZ]);
|
hw_req->ies.len[NL80211_BAND_5GHZ]);
|
||||||
|
|
||||||
error = lkpi_80211_mo_hw_scan(hw, vif, hw_req);
|
error = lkpi_80211_mo_hw_scan(hw, vif, hw_req);
|
||||||
|
wiphy_unlock(hw->wiphy);
|
||||||
if (error != 0) {
|
if (error != 0) {
|
||||||
bool scan_done;
|
bool scan_done;
|
||||||
int e;
|
int e;
|
||||||
@@ -5122,8 +5157,11 @@ lkpi_ic_scan_end(struct ieee80211com *ic)
|
|||||||
|
|
||||||
/* Send PS to stop buffering if n80211 does not for us? */
|
/* Send PS to stop buffering if n80211 does not for us? */
|
||||||
|
|
||||||
if (vap->iv_state == IEEE80211_S_SCAN)
|
if (vap->iv_state == IEEE80211_S_SCAN) {
|
||||||
|
wiphy_lock(hw->wiphy);
|
||||||
lkpi_hw_conf_idle(hw, true);
|
lkpi_hw_conf_idle(hw, true);
|
||||||
|
wiphy_unlock(hw->wiphy);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -218,6 +218,8 @@ lkpi_80211_mo_hw_scan(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
|
|||||||
struct lkpi_hw *lhw;
|
struct lkpi_hw *lhw;
|
||||||
int error;
|
int error;
|
||||||
|
|
||||||
|
lockdep_assert_wiphy(hw->wiphy);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* MUST NOT return EPERM as that is a "magic number 1" based on rtw88
|
* MUST NOT return EPERM as that is a "magic number 1" based on rtw88
|
||||||
* driver indicating hw_scan is not supported despite the ops call
|
* driver indicating hw_scan is not supported despite the ops call
|
||||||
@@ -244,6 +246,8 @@ lkpi_80211_mo_cancel_hw_scan(struct ieee80211_hw *hw, struct ieee80211_vif *vif)
|
|||||||
{
|
{
|
||||||
struct lkpi_hw *lhw;
|
struct lkpi_hw *lhw;
|
||||||
|
|
||||||
|
lockdep_assert_wiphy(hw->wiphy);
|
||||||
|
|
||||||
lhw = HW_TO_LHW(hw);
|
lhw = HW_TO_LHW(hw);
|
||||||
if (lhw->ops->cancel_hw_scan == NULL)
|
if (lhw->ops->cancel_hw_scan == NULL)
|
||||||
return;
|
return;
|
||||||
@@ -291,6 +295,8 @@ lkpi_80211_mo_prepare_multicast(struct ieee80211_hw *hw,
|
|||||||
struct lkpi_hw *lhw;
|
struct lkpi_hw *lhw;
|
||||||
u64 ptr;
|
u64 ptr;
|
||||||
|
|
||||||
|
/* This seems fine without the wiphy lock. */
|
||||||
|
|
||||||
lhw = HW_TO_LHW(hw);
|
lhw = HW_TO_LHW(hw);
|
||||||
if (lhw->ops->prepare_multicast == NULL)
|
if (lhw->ops->prepare_multicast == NULL)
|
||||||
return (0);
|
return (0);
|
||||||
@@ -306,6 +312,8 @@ lkpi_80211_mo_configure_filter(struct ieee80211_hw *hw, unsigned int changed_fla
|
|||||||
{
|
{
|
||||||
struct lkpi_hw *lhw;
|
struct lkpi_hw *lhw;
|
||||||
|
|
||||||
|
lockdep_assert_wiphy(hw->wiphy);
|
||||||
|
|
||||||
lhw = HW_TO_LHW(hw);
|
lhw = HW_TO_LHW(hw);
|
||||||
if (lhw->ops->configure_filter == NULL)
|
if (lhw->ops->configure_filter == NULL)
|
||||||
return;
|
return;
|
||||||
@@ -429,6 +437,8 @@ lkpi_80211_mo_config(struct ieee80211_hw *hw, uint32_t changed)
|
|||||||
struct lkpi_hw *lhw;
|
struct lkpi_hw *lhw;
|
||||||
int error;
|
int error;
|
||||||
|
|
||||||
|
lockdep_assert_wiphy(hw->wiphy);
|
||||||
|
|
||||||
lhw = HW_TO_LHW(hw);
|
lhw = HW_TO_LHW(hw);
|
||||||
if (lhw->ops->config == NULL) {
|
if (lhw->ops->config == NULL) {
|
||||||
error = EOPNOTSUPP;
|
error = EOPNOTSUPP;
|
||||||
@@ -497,6 +507,9 @@ lkpi_80211_mo_add_chanctx(struct ieee80211_hw *hw,
|
|||||||
struct lkpi_chanctx *lchanctx;
|
struct lkpi_chanctx *lchanctx;
|
||||||
int error;
|
int error;
|
||||||
|
|
||||||
|
might_sleep();
|
||||||
|
lockdep_assert_wiphy(hw->wiphy);
|
||||||
|
|
||||||
lhw = HW_TO_LHW(hw);
|
lhw = HW_TO_LHW(hw);
|
||||||
if (lhw->ops->add_chanctx == NULL) {
|
if (lhw->ops->add_chanctx == NULL) {
|
||||||
error = EOPNOTSUPP;
|
error = EOPNOTSUPP;
|
||||||
@@ -520,6 +533,9 @@ lkpi_80211_mo_change_chanctx(struct ieee80211_hw *hw,
|
|||||||
{
|
{
|
||||||
struct lkpi_hw *lhw;
|
struct lkpi_hw *lhw;
|
||||||
|
|
||||||
|
might_sleep();
|
||||||
|
lockdep_assert_wiphy(hw->wiphy);
|
||||||
|
|
||||||
lhw = HW_TO_LHW(hw);
|
lhw = HW_TO_LHW(hw);
|
||||||
if (lhw->ops->change_chanctx == NULL)
|
if (lhw->ops->change_chanctx == NULL)
|
||||||
return;
|
return;
|
||||||
@@ -535,6 +551,9 @@ lkpi_80211_mo_remove_chanctx(struct ieee80211_hw *hw,
|
|||||||
struct lkpi_hw *lhw;
|
struct lkpi_hw *lhw;
|
||||||
struct lkpi_chanctx *lchanctx;
|
struct lkpi_chanctx *lchanctx;
|
||||||
|
|
||||||
|
might_sleep();
|
||||||
|
lockdep_assert_wiphy(hw->wiphy);
|
||||||
|
|
||||||
lhw = HW_TO_LHW(hw);
|
lhw = HW_TO_LHW(hw);
|
||||||
if (lhw->ops->remove_chanctx == NULL)
|
if (lhw->ops->remove_chanctx == NULL)
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -163,15 +163,12 @@ simple_attr_write_common(struct file *filp, const char __user *ubuf,
|
|||||||
if (*ppos != 0 || write_size < 1)
|
if (*ppos != 0 || write_size < 1)
|
||||||
return (-EINVAL);
|
return (-EINVAL);
|
||||||
|
|
||||||
buf = malloc(write_size, M_LSATTR, M_WAITOK);
|
buf = malloc(write_size + 1, M_LSATTR, M_WAITOK);
|
||||||
if (copy_from_user(buf, ubuf, write_size) != 0) {
|
if (copy_from_user(buf, ubuf, write_size) != 0) {
|
||||||
free(buf, M_LSATTR);
|
free(buf, M_LSATTR);
|
||||||
return (-EFAULT);
|
return (-EFAULT);
|
||||||
}
|
}
|
||||||
if (strnlen(buf, write_size) == write_size) {
|
buf[write_size] = '\0';
|
||||||
free(buf, M_LSATTR);
|
|
||||||
return (-EINVAL);
|
|
||||||
}
|
|
||||||
|
|
||||||
mutex_lock(&sattr->mutex);
|
mutex_lock(&sattr->mutex);
|
||||||
|
|
||||||
|
|||||||
@@ -124,3 +124,6 @@ mt76_register_debugfs_fops(struct mt76_phy *phy,
|
|||||||
return dir;
|
return dir;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(mt76_register_debugfs_fops);
|
EXPORT_SYMBOL_GPL(mt76_register_debugfs_fops);
|
||||||
|
#if defined(__FreeBSD__)
|
||||||
|
MODULE_DEPEND(mt76_core, lindebugfs, 1, 1, 1);
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -814,6 +814,10 @@ int mt76_register_device(struct mt76_dev *dev, bool vht,
|
|||||||
set_bit(MT76_STATE_REGISTERED, &phy->state);
|
set_bit(MT76_STATE_REGISTERED, &phy->state);
|
||||||
sched_set_fifo_low(dev->tx_worker.task);
|
sched_set_fifo_low(dev->tx_worker.task);
|
||||||
|
|
||||||
|
#if defined(__FreeBSD__)
|
||||||
|
complete(&dev->drv_start_complete);
|
||||||
|
#endif
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(mt76_register_device);
|
EXPORT_SYMBOL_GPL(mt76_register_device);
|
||||||
|
|||||||
@@ -1026,6 +1026,9 @@ struct mt76_dev {
|
|||||||
} test_mtd;
|
} test_mtd;
|
||||||
#endif
|
#endif
|
||||||
struct workqueue_struct *wq;
|
struct workqueue_struct *wq;
|
||||||
|
#if defined(__FreeBSD__)
|
||||||
|
struct completion drv_start_complete;
|
||||||
|
#endif
|
||||||
|
|
||||||
union {
|
union {
|
||||||
struct mt76_mmio mmio;
|
struct mt76_mmio mmio;
|
||||||
|
|||||||
@@ -862,6 +862,9 @@ mt7915_init_hardware(struct mt7915_dev *dev, struct mt7915_phy *phy2)
|
|||||||
mt76_wr(dev, MT_INT_SOURCE_CSR, ~0);
|
mt76_wr(dev, MT_INT_SOURCE_CSR, ~0);
|
||||||
|
|
||||||
INIT_WORK(&dev->init_work, mt7915_init_work);
|
INIT_WORK(&dev->init_work, mt7915_init_work);
|
||||||
|
#if defined(__FreeBSD__)
|
||||||
|
init_completion(&dev->mt76.drv_start_complete);
|
||||||
|
#endif
|
||||||
|
|
||||||
ret = mt7915_dma_init(dev, phy2);
|
ret = mt7915_dma_init(dev, phy2);
|
||||||
if (ret)
|
if (ret)
|
||||||
@@ -1298,6 +1301,9 @@ int mt7915_register_device(struct mt7915_dev *dev)
|
|||||||
}
|
}
|
||||||
|
|
||||||
ieee80211_queue_work(mt76_hw(dev), &dev->init_work);
|
ieee80211_queue_work(mt76_hw(dev), &dev->init_work);
|
||||||
|
#if defined(__FreeBSD__)
|
||||||
|
wait_for_completion(&dev->mt76.drv_start_complete);
|
||||||
|
#endif
|
||||||
|
|
||||||
dev->recovery.hw_init_done = true;
|
dev->recovery.hw_init_done = true;
|
||||||
|
|
||||||
|
|||||||
@@ -308,6 +308,9 @@ int mt7921_register_device(struct mt792x_dev *dev)
|
|||||||
|
|
||||||
INIT_WORK(&dev->reset_work, mt7921_mac_reset_work);
|
INIT_WORK(&dev->reset_work, mt7921_mac_reset_work);
|
||||||
INIT_WORK(&dev->init_work, mt7921_init_work);
|
INIT_WORK(&dev->init_work, mt7921_init_work);
|
||||||
|
#if defined(__FreeBSD__)
|
||||||
|
init_completion(&dev->mt76.drv_start_complete);
|
||||||
|
#endif
|
||||||
|
|
||||||
INIT_WORK(&dev->phy.roc_work, mt7921_roc_work);
|
INIT_WORK(&dev->phy.roc_work, mt7921_roc_work);
|
||||||
timer_setup(&dev->phy.roc_timer, mt792x_roc_timer, 0);
|
timer_setup(&dev->phy.roc_timer, mt792x_roc_timer, 0);
|
||||||
@@ -359,6 +362,10 @@ int mt7921_register_device(struct mt792x_dev *dev)
|
|||||||
|
|
||||||
queue_work(system_percpu_wq, &dev->init_work);
|
queue_work(system_percpu_wq, &dev->init_work);
|
||||||
|
|
||||||
|
#if defined(__FreeBSD__)
|
||||||
|
wait_for_completion(&dev->mt76.drv_start_complete);
|
||||||
|
#endif
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(mt7921_register_device);
|
EXPORT_SYMBOL_GPL(mt7921_register_device);
|
||||||
|
|||||||
@@ -234,7 +234,11 @@ mt7921_mcu_debug_msg_event(struct mt792x_dev *dev, struct sk_buff *skb)
|
|||||||
if (!msg->content[i])
|
if (!msg->content[i])
|
||||||
msg->content[i] = ' ';
|
msg->content[i] = ' ';
|
||||||
}
|
}
|
||||||
|
#if defined(__linux__)
|
||||||
wiphy_info(mt76_hw(dev)->wiphy, "%.*s", len, msg->content);
|
wiphy_info(mt76_hw(dev)->wiphy, "%.*s", len, msg->content);
|
||||||
|
#elif defined(__FreeBSD__)
|
||||||
|
wiphy_info(mt76_hw(dev)->wiphy, "%.*s\n", len, msg->content);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -51,6 +51,17 @@ static void mt7921e_unregister_device(struct mt792x_dev *dev)
|
|||||||
if (dev->phy.chip_cap & MT792x_CHIP_CAP_WF_RF_PIN_CTRL_EVT_EN)
|
if (dev->phy.chip_cap & MT792x_CHIP_CAP_WF_RF_PIN_CTRL_EVT_EN)
|
||||||
wiphy_rfkill_stop_polling(hw->wiphy);
|
wiphy_rfkill_stop_polling(hw->wiphy);
|
||||||
|
|
||||||
|
#if defined(__FreeBSD__)
|
||||||
|
/*
|
||||||
|
* Prevent scheduling ps_work again in mt76_connac_power_save_sched().
|
||||||
|
* Otherwise upon shutdown we may have delayed work pending, which on
|
||||||
|
* FreeBSD means there is a callout running, but the ps_work will be
|
||||||
|
* freed along with the mt792x_dev and so there is a callout on a list
|
||||||
|
* which no longer exists.
|
||||||
|
*/
|
||||||
|
pm->enable = false;
|
||||||
|
#endif
|
||||||
|
|
||||||
cancel_work_sync(&dev->init_work);
|
cancel_work_sync(&dev->init_work);
|
||||||
mt76_unregister_device(&dev->mt76);
|
mt76_unregister_device(&dev->mt76);
|
||||||
mt76_for_each_q_rx(&dev->mt76, i)
|
mt76_for_each_q_rx(&dev->mt76, i)
|
||||||
@@ -598,4 +609,7 @@ MODULE_VERSION(mt7921_pci, 1);
|
|||||||
MODULE_DEPEND(mt7921_pci, mt76_core, 1, 1, 1);
|
MODULE_DEPEND(mt7921_pci, mt76_core, 1, 1, 1);
|
||||||
MODULE_DEPEND(mt7921_pci, linuxkpi, 1, 1, 1);
|
MODULE_DEPEND(mt7921_pci, linuxkpi, 1, 1, 1);
|
||||||
MODULE_DEPEND(mt7921_pci, linuxkpi_wlan, 1, 1, 1);
|
MODULE_DEPEND(mt7921_pci, linuxkpi_wlan, 1, 1, 1);
|
||||||
|
#if defined(CONFIG_MT7921_DEBUGFS)
|
||||||
|
MODULE_DEPEND(mt7921_pci, lindebugfs, 1, 1, 1);
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -352,4 +352,7 @@ MODULE_DEPEND(mt7921_usb, mt76_core, 1, 1, 1);
|
|||||||
MODULE_DEPEND(mt7921_usb, linuxkpi, 1, 1, 1);
|
MODULE_DEPEND(mt7921_usb, linuxkpi, 1, 1, 1);
|
||||||
MODULE_DEPEND(mt7921_usb, linuxkpi_wlan, 1, 1, 1);
|
MODULE_DEPEND(mt7921_usb, linuxkpi_wlan, 1, 1, 1);
|
||||||
MODULE_DEPEND(mt7921_usb, linuxkpi_usb, 1, 1, 1);
|
MODULE_DEPEND(mt7921_usb, linuxkpi_usb, 1, 1, 1);
|
||||||
|
#if defined(CONFIG_MT7921_DEBUGFS)
|
||||||
|
MODULE_DEPEND(mt7921_usb, lindebugfs, 1, 1, 1);
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -228,6 +228,9 @@ int mt7925_register_device(struct mt792x_dev *dev)
|
|||||||
|
|
||||||
INIT_WORK(&dev->reset_work, mt7925_mac_reset_work);
|
INIT_WORK(&dev->reset_work, mt7925_mac_reset_work);
|
||||||
INIT_WORK(&dev->init_work, mt7925_init_work);
|
INIT_WORK(&dev->init_work, mt7925_init_work);
|
||||||
|
#if defined(__FreeBSD__)
|
||||||
|
init_completion(&dev->mt76.drv_start_complete);
|
||||||
|
#endif
|
||||||
|
|
||||||
INIT_WORK(&dev->phy.roc_work, mt7925_roc_work);
|
INIT_WORK(&dev->phy.roc_work, mt7925_roc_work);
|
||||||
timer_setup(&dev->phy.roc_timer, mt792x_roc_timer, 0);
|
timer_setup(&dev->phy.roc_timer, mt792x_roc_timer, 0);
|
||||||
@@ -282,6 +285,10 @@ int mt7925_register_device(struct mt792x_dev *dev)
|
|||||||
|
|
||||||
queue_work(system_percpu_wq, &dev->init_work);
|
queue_work(system_percpu_wq, &dev->init_work);
|
||||||
|
|
||||||
|
#if defined(__FreeBSD__)
|
||||||
|
wait_for_completion(&dev->mt76.drv_start_complete);
|
||||||
|
#endif
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(mt7925_register_device);
|
EXPORT_SYMBOL_GPL(mt7925_register_device);
|
||||||
|
|||||||
@@ -1222,6 +1222,9 @@ static int mt7996_init_hardware(struct mt7996_dev *dev)
|
|||||||
}
|
}
|
||||||
|
|
||||||
INIT_WORK(&dev->init_work, mt7996_init_work);
|
INIT_WORK(&dev->init_work, mt7996_init_work);
|
||||||
|
#if defined(__FreeBSD__)
|
||||||
|
init_completion(&dev->mt76.drv_start_complete);
|
||||||
|
#endif
|
||||||
INIT_WORK(&dev->wed_rro.work, mt7996_wed_rro_work);
|
INIT_WORK(&dev->wed_rro.work, mt7996_wed_rro_work);
|
||||||
INIT_LIST_HEAD(&dev->wed_rro.poll_list);
|
INIT_LIST_HEAD(&dev->wed_rro.poll_list);
|
||||||
spin_lock_init(&dev->wed_rro.lock);
|
spin_lock_init(&dev->wed_rro.lock);
|
||||||
@@ -1736,6 +1739,9 @@ int mt7996_register_device(struct mt7996_dev *dev)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
ieee80211_queue_work(mt76_hw(dev), &dev->init_work);
|
ieee80211_queue_work(mt76_hw(dev), &dev->init_work);
|
||||||
|
#if defined(__FreeBSD__)
|
||||||
|
wait_for_completion(&dev->mt76.drv_start_complete);
|
||||||
|
#endif
|
||||||
|
|
||||||
dev->recovery.hw_init_done = true;
|
dev->recovery.hw_init_done = true;
|
||||||
|
|
||||||
|
|||||||
@@ -2165,7 +2165,7 @@ mwl_rxdma_setup(struct mwl_softc *sc)
|
|||||||
bf = malloc(bsize, M_MWLDEV, M_NOWAIT | M_ZERO);
|
bf = malloc(bsize, M_MWLDEV, M_NOWAIT | M_ZERO);
|
||||||
if (bf == NULL) {
|
if (bf == NULL) {
|
||||||
device_printf(sc->sc_dev, "malloc of %u rx buffers failed\n", bsize);
|
device_printf(sc->sc_dev, "malloc of %u rx buffers failed\n", bsize);
|
||||||
return error;
|
return ENOMEM;
|
||||||
}
|
}
|
||||||
sc->sc_rxdma.dd_bufptr = bf;
|
sc->sc_rxdma.dd_bufptr = bf;
|
||||||
|
|
||||||
|
|||||||
+55
-28
@@ -32,10 +32,12 @@
|
|||||||
#include "opt_hwpmc_hooks.h"
|
#include "opt_hwpmc_hooks.h"
|
||||||
#include "opt_hwt_hooks.h"
|
#include "opt_hwt_hooks.h"
|
||||||
|
|
||||||
|
#define EXTERR_CATEGORY EXTERR_CAT_LINKER
|
||||||
#include <sys/param.h>
|
#include <sys/param.h>
|
||||||
#include <sys/systm.h>
|
#include <sys/systm.h>
|
||||||
#include <sys/boottrace.h>
|
#include <sys/boottrace.h>
|
||||||
#include <sys/eventhandler.h>
|
#include <sys/eventhandler.h>
|
||||||
|
#include <sys/exterrvar.h>
|
||||||
#include <sys/fcntl.h>
|
#include <sys/fcntl.h>
|
||||||
#include <sys/jail.h>
|
#include <sys/jail.h>
|
||||||
#include <sys/kernel.h>
|
#include <sys/kernel.h>
|
||||||
@@ -455,13 +457,14 @@ linker_load_file(const char *filename, linker_file_t *result)
|
|||||||
|
|
||||||
/* Refuse to load modules if securelevel raised */
|
/* Refuse to load modules if securelevel raised */
|
||||||
if (prison0.pr_securelevel > 0)
|
if (prison0.pr_securelevel > 0)
|
||||||
return (EPERM);
|
return (EXTERROR(EPERM, "security level %jd",
|
||||||
|
prison0.pr_securelevel));
|
||||||
|
|
||||||
sx_assert(&kld_sx, SA_XLOCKED);
|
sx_assert(&kld_sx, SA_XLOCKED);
|
||||||
lf = linker_find_file_by_name(filename);
|
lf = linker_find_file_by_name(filename);
|
||||||
if (lf) {
|
if (lf) {
|
||||||
KLD_DPF(FILE, ("linker_load_file: file %s is already loaded,"
|
KLD_DPF(FILE,
|
||||||
" incrementing refs\n", filename));
|
("linker_load_file: file %s is already loaded, incrementing refs\n", filename));
|
||||||
*result = lf;
|
*result = lf;
|
||||||
lf->refs++;
|
lf->refs++;
|
||||||
return (0);
|
return (0);
|
||||||
@@ -508,7 +511,7 @@ linker_load_file(const char *filename, linker_file_t *result)
|
|||||||
*/
|
*/
|
||||||
if (modules && TAILQ_EMPTY(&lf->modules)) {
|
if (modules && TAILQ_EMPTY(&lf->modules)) {
|
||||||
linker_file_unload(lf, LINKER_UNLOAD_FORCE);
|
linker_file_unload(lf, LINKER_UNLOAD_FORCE);
|
||||||
return (ENOEXEC);
|
return (EXTERROR(ENOEXEC, "no modules loaded"));
|
||||||
}
|
}
|
||||||
linker_file_enable_sysctls(lf);
|
linker_file_enable_sysctls(lf);
|
||||||
|
|
||||||
@@ -535,17 +538,19 @@ linker_load_file(const char *filename, linker_file_t *result)
|
|||||||
__func__, filename);
|
__func__, filename);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Format not recognized or otherwise unloadable.
|
* Format not recognized, version incompatible, or
|
||||||
* When loading a module that is statically built into
|
* otherwise unloadable. When loading a module that is
|
||||||
* the kernel EEXIST percolates back up as the return
|
* statically built into the kernel EEXIST percolates
|
||||||
* value. Preserve this so that apps like sysinstall
|
* back up as the return value. Preserve this so that
|
||||||
* can recognize this special case and not post bogus
|
* apps like sysinstall can recognize this special case
|
||||||
* dialog boxes.
|
* and not post bogus dialog boxes.
|
||||||
*/
|
*/
|
||||||
if (error != EEXIST)
|
if (error != EEXIST)
|
||||||
error = ENOEXEC;
|
error = EXTERROR(ENOEXEC,
|
||||||
|
"module format or version error");
|
||||||
} else
|
} else
|
||||||
error = ENOENT; /* Nothing found */
|
error = EXTERROR(ENOENT, "kld file not found");
|
||||||
|
/* Nothing found */
|
||||||
return (error);
|
return (error);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2249,6 +2254,7 @@ linker_load_module(const char *kldname, const char *modname,
|
|||||||
struct linker_file *parent, const struct mod_depend *verinfo,
|
struct linker_file *parent, const struct mod_depend *verinfo,
|
||||||
struct linker_file **lfpp)
|
struct linker_file **lfpp)
|
||||||
{
|
{
|
||||||
|
modlist_t mod;
|
||||||
linker_file_t lfdep;
|
linker_file_t lfdep;
|
||||||
const char *filename;
|
const char *filename;
|
||||||
char *pathname;
|
char *pathname;
|
||||||
@@ -2259,16 +2265,15 @@ linker_load_module(const char *kldname, const char *modname,
|
|||||||
/*
|
/*
|
||||||
* We have to load KLD
|
* We have to load KLD
|
||||||
*/
|
*/
|
||||||
KASSERT(verinfo == NULL, ("linker_load_module: verinfo"
|
MPASS(verinfo == NULL);
|
||||||
" is not NULL"));
|
|
||||||
if (!linker_root_mounted())
|
if (!linker_root_mounted())
|
||||||
return (ENXIO);
|
return (EXTERROR(ENXIO, "root not yet mounted"));
|
||||||
pathname = linker_search_kld(kldname);
|
pathname = linker_search_kld(kldname);
|
||||||
} else {
|
} else {
|
||||||
if (modlist_lookup2(modname, verinfo) != NULL)
|
if (modlist_lookup2(modname, verinfo) != NULL)
|
||||||
return (EEXIST);
|
return (EXTERROR(EEXIST, "module already loaded"));
|
||||||
if (!linker_root_mounted())
|
if (!linker_root_mounted())
|
||||||
return (ENXIO);
|
return (EXTERROR(ENXIO, "root not yet mounted"));
|
||||||
if (kldname != NULL)
|
if (kldname != NULL)
|
||||||
pathname = strdup(kldname, M_LINKER);
|
pathname = strdup(kldname, M_LINKER);
|
||||||
else
|
else
|
||||||
@@ -2279,7 +2284,7 @@ linker_load_module(const char *kldname, const char *modname,
|
|||||||
strlen(modname), verinfo);
|
strlen(modname), verinfo);
|
||||||
}
|
}
|
||||||
if (pathname == NULL)
|
if (pathname == NULL)
|
||||||
return (ENOENT);
|
return (EXTERROR(ENOENT, "kld file not found"));
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Can't load more than one file with the same basename XXX:
|
* Can't load more than one file with the same basename XXX:
|
||||||
@@ -2288,16 +2293,36 @@ linker_load_module(const char *kldname, const char *modname,
|
|||||||
* provide different versions of the same modules.
|
* provide different versions of the same modules.
|
||||||
*/
|
*/
|
||||||
filename = linker_basename(pathname);
|
filename = linker_basename(pathname);
|
||||||
if (linker_find_file_by_name(filename))
|
lfdep = linker_find_file_by_name(filename);
|
||||||
error = EEXIST;
|
if (lfdep) {
|
||||||
else do {
|
mod = modlist_lookup(modname, 0);
|
||||||
|
MPASS(mod != NULL);
|
||||||
|
|
||||||
|
if (modname && verinfo &&
|
||||||
|
modlist_lookup2(modname, verinfo) == NULL) {
|
||||||
|
/*
|
||||||
|
* Desired module is already loaded, but the correct
|
||||||
|
* version does not exist.
|
||||||
|
*/
|
||||||
|
error = EXTERROR(ENOEXEC,
|
||||||
|
"incompatible module version %jd already loaded",
|
||||||
|
mod->version);
|
||||||
|
} else {
|
||||||
|
error = EXTERROR(EEXIST,
|
||||||
|
"module version %jd already loaded",
|
||||||
|
mod->version);
|
||||||
|
}
|
||||||
|
} else do {
|
||||||
error = linker_load_file(pathname, &lfdep);
|
error = linker_load_file(pathname, &lfdep);
|
||||||
if (error)
|
if (error)
|
||||||
break;
|
break;
|
||||||
if (modname && verinfo &&
|
if (modname && verinfo &&
|
||||||
modlist_lookup2(modname, verinfo) == NULL) {
|
modlist_lookup2(modname, verinfo) == NULL) {
|
||||||
|
mod = modlist_lookup(modname, 0);
|
||||||
|
error = EXTERROR(ENOEXEC,
|
||||||
|
"incompatible module version %jd already loaded",
|
||||||
|
mod->version);
|
||||||
linker_file_unload(lfdep, LINKER_UNLOAD_FORCE);
|
linker_file_unload(lfdep, LINKER_UNLOAD_FORCE);
|
||||||
error = ENOENT;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (parent)
|
if (parent)
|
||||||
@@ -2343,10 +2368,11 @@ linker_load_dependencies(linker_file_t lf)
|
|||||||
ver = ((const struct mod_version *)mp->md_data)->mv_version;
|
ver = ((const struct mod_version *)mp->md_data)->mv_version;
|
||||||
mod = modlist_lookup(modname, ver);
|
mod = modlist_lookup(modname, ver);
|
||||||
if (mod != NULL) {
|
if (mod != NULL) {
|
||||||
printf("interface %s.%d already present in the KLD"
|
printf(
|
||||||
" '%s'!\n", modname, ver,
|
"interface %s.%d already present in the KLD '%s'!\n",
|
||||||
mod->container->filename);
|
modname, ver, mod->container->filename);
|
||||||
return (EEXIST);
|
return (EXTERROR(EEXIST,
|
||||||
|
"module version %jd already loaded", ver));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2376,8 +2402,9 @@ linker_load_dependencies(linker_file_t lf)
|
|||||||
}
|
}
|
||||||
error = linker_load_module(NULL, modname, lf, verinfo, NULL);
|
error = linker_load_module(NULL, modname, lf, verinfo, NULL);
|
||||||
if (error) {
|
if (error) {
|
||||||
printf("KLD %s: depends on %s - not available or"
|
printf(
|
||||||
" version mismatch\n", lf->filename, modname);
|
"KLD %s: depends on %s - not available or version mismatch\n",
|
||||||
|
lf->filename, modname);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1485,7 +1485,9 @@ _show_callout(struct callout *c)
|
|||||||
C_DB_PRINTF("%" PRId64, c_time);
|
C_DB_PRINTF("%" PRId64, c_time);
|
||||||
C_DB_PRINTF("%" PRId64, c_precision);
|
C_DB_PRINTF("%" PRId64, c_precision);
|
||||||
C_DB_PRINTF("%p", c_arg);
|
C_DB_PRINTF("%p", c_arg);
|
||||||
C_DB_PRINTF("%p", c_func);
|
db_printf(" %s = %p (", "c_func", c->c_func);
|
||||||
|
db_printsym((db_addr_t)c->c_func, DB_STGY_ANY);
|
||||||
|
db_printf(")\n");
|
||||||
C_DB_PRINTF("%p", c_lock);
|
C_DB_PRINTF("%p", c_lock);
|
||||||
C_DB_PRINTF("%#x", c_flags);
|
C_DB_PRINTF("%#x", c_flags);
|
||||||
C_DB_PRINTF("%#x", c_iflags);
|
C_DB_PRINTF("%#x", c_iflags);
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ MT76_USB= 0
|
|||||||
# General options for common code so drivers can check.
|
# General options for common code so drivers can check.
|
||||||
MT76_ACPI?= 0
|
MT76_ACPI?= 0
|
||||||
MT76_CONFIG_PM?= 0
|
MT76_CONFIG_PM?= 0
|
||||||
MT76_DEBUGFS?= 0
|
MT76_DEBUGFS?= 1
|
||||||
MT76_SOC_WED?= 0
|
MT76_SOC_WED?= 0
|
||||||
|
|
||||||
# Other
|
# Other
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ MT7921_PCI= 1
|
|||||||
MT7921_SDIO= 0
|
MT7921_SDIO= 0
|
||||||
MT7921_USB= 0
|
MT7921_USB= 0
|
||||||
|
|
||||||
MT7921_DEBUGFS= 0
|
MT7921_DEBUGFS= 1
|
||||||
|
|
||||||
# Common stuff.
|
# Common stuff.
|
||||||
SRCS+= init.c main.c mac.c mcu.c
|
SRCS+= init.c main.c mac.c mcu.c
|
||||||
|
|||||||
@@ -41,6 +41,7 @@
|
|||||||
#define EXTERR_CAT_PROCEXIT 16
|
#define EXTERR_CAT_PROCEXIT 16
|
||||||
#define EXTERR_CAT_VMM 17
|
#define EXTERR_CAT_VMM 17
|
||||||
#define EXTERR_CAT_HWPMC_IBS 18
|
#define EXTERR_CAT_HWPMC_IBS 18
|
||||||
|
#define EXTERR_CAT_LINKER 19
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user