To support virtual machines on arm64 add the vmm code. This is based on
earlier work by Mihai Carabas and Alexandru Elisei at University
Politehnica of Bucharest, with further work by myself and Mark Johnston.
All AArch64 CPUs should work, however only the GICv3 interrupt
controller is supported. There is initial support to allow the GICv2
to be supported in the future. Only pure Armv8.0 virtualisation is
supported, the Virtualization Host Extensions are not currently used.
With a separate userspace patch and U-Boot port FreeBSD guests are able
to boot to multiuser mode, and the hypervisor can be tested with the
kvm unit tests. Linux partially boots, but hangs before entering
userspace. Other operating systems are untested.
Sponsored by: Arm Ltd
Sponsored by: Innovate UK
Sponsored by: The FreeBSD Foundation
Sponsored by: University Politehnica of Bucharest
Differential Revision: https://reviews.freebsd.org/D37428
This is intended to be used with the upcoming ice 1.39.13-k
driver update, but is still backwards compatible with
previous versions of the driver.
Signed-off-by: Eric Joyner <erj@FreeBSD.org>
MFC after: 3 days
Sponsored by: Intel Corporation
Add the logic to conditionally enable PM for iwlwifi.
This should help suspend/resume in the future.
For now leave it disabled until other preconditional problems are
sorted.
Sponsored by: The FreeBSD Foundation (2023)
MFC after: 3 days
Reviewed by: cc
Differential Revision: https://reviews.freebsd.org/D43647
Notable upstream pull request merges:
#15793401c3563d libzfs: use zfs_strerror() in place of strerror()
#15793692f0daba libzfs: make userquota_propname_decode threadsafe
#157980cbf13529 libnvpair.c: replace strstr() with strchr() for a single
character
#1581278e8c1f84 Remove list_size struct member from list implementation
#15816aeb33776f Update vdev devid and physpath if changed between imports
#158188161b7327 Don't assert mg_initialized due to device addition race
#15823c3fd7a521 Update man pages to time(1) from time(2)
#15825884a48d99 zpool wait: print timestamp before the header
Obtained from: OpenZFS
OpenZFS commit: 2e6b3c4d94
This function was used only in TCP before 446ccdd08e. It was born in
pain in 2016 to plug different complex panics in TCP timers. It wasn't
warmly accepted in phabricator by all of the reviewers and my recollection
of overall agreement was that "if you need this KPI, then you'd better fix
your code to not need it". However, the function served its duty well all
the way to FreeBSD 14. But now that TCP doesn't need it anymore, let's
retire it to reduce complexity of callout code and also to avoid its
further use.
Reviewed by: jhb, markj, kib, rrs
Differential Revision: https://reviews.freebsd.org/D43546
Notable upstream pull request merges:
#1566066670ba9f fix(mount): do not truncate shares not zfs mount
#157193bddc4dae spa: Fix FreeBSD sysctl handlers (already merged)
#157195a703d136 spa: Let spa_taskq_param_get()'s addition of a newline
be optional
#157216138af86b Stop wasting time on malloc in snprintf_zstd_header
#157231f5bf9600 Make zdb -R a little more sane.
#1572620dd16d9f Make zdb -R scale less poorly
#15737d9885b377 fix: Uber block label not always found for aux vdevs
#157372df2a58dc Extend aux label to add path information
#15737b64be1624 Add path handling for aux vdevs in `label_path`
#15747a1771d243 Fix "out of memory" error
#157521a11ad9d2 Fix a potential use-after-free in zfs_setsecattr()
#15772f45dd90f3 Fix cloning into mmaped and cached file
#157811494e8fba Autotrim High Load Average Fix
Obtained from: OpenZFS
OpenZFS commit: a0b2a93c41
pflow is a pseudo device to export flow accounting data over UDP.
It's compatible with netflow version 5 and IPFIX (10).
The data is extracted from the pf state table. States are exported once
they are removed.
Reviewed by: melifaro
Obtained from: OpenBSD
Sponsored by: Rubicon Communications, LLC ("Netgate")
Differential Revision: https://reviews.freebsd.org/D43106
Some, particularly KASAN, may insert redzones around global symbols,
resulting in incorrect offset definitions because genassym.sh (ab)uses
symbol sizes to assign semantic meaning.
(Ideally I would be able to define this pattern in one place, but I
haven't found a way to define a GENSYM_CFLAGS that actually works for
all of the consumers (kern.post.mk, kmod.mk, sys/conf/files*).)
MFC after: 1 week
Sponsored by: Klara, Inc.
Sponsored by: Juniper Networks, Inc.
No need to keep it under sys/arm/allwinner
It's easier to find which controller we support by looking under one directory.
Sponsored by: Beckhoff Automation GmbH & Co. KG
Differential Revision: https://reviews.freebsd.org/D43187
No need to keep it under sys/arm/allwinner
It's easier to find which controller we support by looking under one directory.
Sponsored by: Beckhoff Automation GmbH & Co. KG
Differential Revision: https://reviews.freebsd.org/D43185
No need to keep it under sys/arm64/rockchip
It's easier to find which controller we support by looking under one directory.
Sponsored by: Beckhoff Automation GmbH & Co. KG
No need to keep it under sys/arm64/rockchip
It's easier to find which controller we support by looking under one directory.
While here remove the condition on SOC option, device rk_i2c is enough as all
Rockchip SoC that we support have this controller.
Sponsored by: Beckhoff Automation GmbH & Co. KG
Differential Revision: https://reviews.freebsd.org/D43184
Version : 1.27.5.0
Date : 10/10/2023
=====================
Fixes
-----
BASE:
- Fixed handling the Remote Fault with AN, causing the link failure.
=====================
Obtained from: Chelsio Communications
MFC after: 2 weeks
Sponsored by: Chelsio Communications
Update 25xx firmware: version 8.8.207
Add 26xx firmware: version 8.8.231
Add 27xx firmware: version 9.12.0
Add 28xx firmware: version 9.12.1
Remove BUGS section from manpage as we now have firmware for
all supported controllers.
PR: 273263
MFC after: 1 month
Pull Request: https://github.com/freebsd/freebsd-src/pull/877
Sponsored by: Technical University of Munich
Some of the files are using outdated linceses.
Update the license to be 2023.
Approved by: cperciva (mentor)
MFC after: 2 weeks
Sponsored by: Amazon, Inc.
For the same reason as the original https://reviews.freebsd.org/D9659:
-flto=<N>, -flto=full, and -flto=thin also produce the GIMPLE/bitcode
which is not supported by genassym, so filter those out as well.
Signed-off-by: Alex Xu (Hello71) <alex_y_xu@yahoo.ca>
Reviewed by: imp
Pull Request: https://github.com/freebsd/freebsd-src/pull/898
Notable upstream pull request merges:
#15643a9b937e06 For db_marker inherit the db pointer for AVL comparision
#15644e53e60c0b DMU: Fix lock leak on dbuf_hold() error
#1565386063d903 dbuf: Handle arcbuf assignment after block cloning
#1565686e115e21 dbuf: Set dr_data when unoverriding after clone
Obtained from: OpenZFS
OpenZFS commit: 86e115e21e
Surprisingly, kldxref does not currently support arm, and unhelpfully
this means it silently does nothing rather than give an error, so the
linker.hints entry added to the METALOG for -DNO_ROOT builds (and
pkgbase ones) refers to a file that doesn't exist. Ideally it would be
supported (and ideally the METALOG handling would be less fragile, but
without integrating it into kldxref the only real option would be to
just run find(1) to get the list of linker.hints files, which feels a
little backwards), but for now just paper over this by skipping the
build step on arm.
Reported by: bapt
Fixes: ff7c12c1f1 ("Make kldxref a bootstrap tool and use unconditionally")
Now that kldxref is a generic cross tool and can be built on non-FreeBSD
we can bootstrap it during the build and thus remove the condition for
whether it exists. We also need to make sure to add it to the METALOG
for -DNO_ROOT builds.
Reviewed by: brooks, imp
Differential Revision: https://reviews.freebsd.org/D43051
[Why]
`linux_compat.c` is already too long. I will need to add `struct kset`
in a follow-up commit, so let's move the existing `struct kobject` code
to its own file.
Reviewed by: manu
Approved by: manu
Differential Revision: https://reviews.freebsd.org/D43019
#15539687e4d7f9 Extend import_progress kstat with a notes field
#15544c7b611926 Allow block cloning across encrypted datasets
#15553adcea23cb ZIO: Add overflow checks for linear buffers
#155935f2700eee zpool: flush output before sleeping
#156093e4bef52b Only provide execvpe(3) when needed
#15610735ba3a7b Use uint64_t instead of u_int64_t
#15612bcd83ccd2 ZIL: Remove TX_CLONE_RANGE replay for ZVOLs
#1561755b764e06 ZIL: Do not clone blocks from the future
#15623727497ccd module/icp/asm-arm/sha2: enable non-SIMD asm kernels
on armv5/6
#156259743d0963 BRT: Limit brt_vdev_dump() to only one vdev
#15629f9765b182 zdb: Dump encrypted write and clone ZIL records
#156342aa3a482a ZIL: Remove 128K into 2x68K LWB split optimization
#1563911656234b FreeBSD: Ensure that zfs_getattr() initializes the
va_rdev field
#156474836d293c zfs_refcount_remove: explictly ignore returns
#15649f0cb6482e setproctitle: fix ununitialised variable
#15650450f2d0b0 import: ignore return on hostid lookups
Obtained from: OpenZFS
OpenZFS commit: 450f2d0b08
Put same copyright header as tcp_hpts.c has, since all this code
was developed by Randall Stewart <rrs@FreeBSD.org> as a part of
the HPTS work. Also copy Mellanox copyright from tcp_lro.c as
Hans Petter Selasky also participated in restructuring the code.
Reviewed by: imp, tuexen, rrs
Differential Revision: https://reviews.freebsd.org/D42854
OpenSSL itself keeps only a single copy of this header. Do the same in
sys/crypto/openssl to avoid the extra maintenance burden. This requires
adjusting the include paths for generated asm files.
No functional change intended.
Reported by: jrtc27
Reviewed by: jhb
MFC after: 3 months
Differential Revision: https://reviews.freebsd.org/D42866
OpenSSL provides implementations of several AES modes which use
bitslicing and can be accelerated on CPUs which support the NEON
extension. This patch adds arm platform support to ossl(4) and provides
an AES-CBC implementation, though bsaes_cbc_encrypt() only implements
decryption. The real goal is to provide an accelerated AES-GCM
implementation; this will be added in a subsequent patch.
Initially derived from https://reviews.freebsd.org/D37420.
Reviewed by: jhb
Sponsored by: Klara, Inc.
Sponsored by: Stormshield
MFC after: 3 months
Differential Revision: https://reviews.freebsd.org/D41304
The iwlwifi driver already supports the chipset as "Bz TBD"
(also in 14.0). Add the firmware for it. Successfully tested
for 0x8086/0x272b/0x8086/0x00f4 on arm64 thanks to donated
hardware [1].
Firmware was obtained from linux-firmware at
9552083a783e5e48b90de674d4e3bf23bb855ab0 .
Sponsored by: The FreeBSD Foundation
Sponsored by: Martin Hoehne / minipci.biz (B200 card) [1]
MFC after: 3 days
Notable upstream pull request merges:
#15532c1a47de86 zdb: Fix zdb '-O|-r' options with -e/exported zpool
#15535cf3316633 ZVOL: Minor code cleanup
#15541803a9c12c brt: lift internal definitions into _impl header
#15541213d68296 zdb: show BRT statistics and dump its contents
#15543a49087510 ZIL: Refactor TX_WRITE encryption similar to
TX_CLONE_RANGE
#1554327d8c23c5 ZIL: Do not encrypt block pointers in lr_clone_range_t
#1554967894a597 unnecessary alloc/free in dsl_scan_visitbp()
#15551126efb588 FreeBSD: Fix the build on FreeBSD 12
#15563acb33ee1c FreeBSD: Fix ZFS so that snapshots under .zfs/snapshot are
NFS visible
#155647bbd42ef4 Don't allow attach to a raidz child vdev
#15566688514e47 dmu_buf_will_clone: fix race in transition back to NOFILL
#1557130d581121 dnode_is_dirty: check dnode and its data for dirtiness
Obtained from: OpenZFS
OpenZFS commit: 688514e470
Apply the following automated changes to try to eliminate
no-longer-needed sys/cdefs.h includes as well as now-empty
blank lines in a row.
Remove /^#if.*\n#endif.*\n#include\s+<sys/cdefs.h>.*\n/
Remove /\n+#include\s+<sys/cdefs.h>.*\n+#if.*\n#endif.*\n+/
Remove /\n+#if.*\n#endif.*\n+/
Remove /^#if.*\n#endif.*\n/
Remove /\n+#include\s+<sys/cdefs.h>\n#include\s+<sys/types.h>/
Remove /\n+#include\s+<sys/cdefs.h>\n#include\s+<sys/param.h>/
Remove /\n+#include\s+<sys/cdefs.h>\n#include\s+<sys/capsicum.h>/
Sponsored by: Netflix
Armv8.5 adds an optional random number generator. This is implemented
as two special registers one to read a random number, the other to
re-seed the entropy pool before reading a random number. Both registers
will set the condition flags to tell the caller they can't produce a
random number in a reasonable amount of time.
Without a signal to reseed the entropy pool use the latter register
to provide random numbers to the kernel pool. If at a later time we
had a way to tell the provider if it needs to reseed or not we could
use the former.
On an Amazon AWS Graviton3 VM this never failed, however this may not
be the case on low end CPUs so retry reading the random number 10 times
before returning an error.
Reviewed by: imp, delphij (csprng)
Sponsored by: The FreeBSD Foundation
Sponsored by: Arm Ltd
Differential Revision: https://reviews.freebsd.org/D35411
Notable upstream pull request merges:
#15366c3773de1 ZIL: Cleanup sync and commit handling
#15409dbe839a9 zvol: Cleanup set property
#1540960387fac zvol: Implement zvol threading as a Property
#154099ccdb8be zvol: fix delayed update to block device ro entry
#1544805a7348a RAIDZ: Use cache blocking during parity math
#15452514d661c Tune zio buffer caches and their alignments
#15456799e09f7 Unify arc_prune_async() code
#15465763ca47f Fix block cloning between unencrypted and encrypted
datasets
To make the module version better comparable, the module version number
now includes the commit count since last tag.
Obtained from: OpenZFS
OpenZFS commit: 41e55b476b
During recent testing related to the IETF NFSv4 Bakeathon, it was
discovered that Kerberized NFSv4.1/4.2 mounts to pNFS servers
(sec=krb5[ip],pnfs mount options) was broken.
The FreeBSD client was using the "service principal" for
the MDS to try and establish a rpcsec_gss credential for a DS,
which is incorrect. (A "service principal" looks like
"nfs@<fqdn-of-server>" and the <fqdn-of-server> for the DS is not
the same as the MDS for most pNFS servers.)
To fix this, the rpcsec_gss code needs to be able to do a
reverse DNS lookup of the DS's IP address. A new kgssapi upcall
to the gssd(8) daemon is added by this patch to do the reverse DNS
along with a new rpcsec_gss function to generate the "service
principal".
A separate patch to the gssd(8) will be committed, so that this
patch will fix the problem. Without the gssd(8) patch, the new
upcall fails and current/incorrect behaviour remains.
This bug only affects the rare case of a Kerberized (sec=krb5[ip],pnfs)
mount using pNFS.
This patch changes the internal KAPI between the kgssapi and
nfscl modules, but since I did a version bump a few days ago,
I will not do one this time.
MFC after: 1 month
Notable upstream pull request merges:
#14378c0e58995e Large sync writes perform worse with slog
#14721797f55ef1 Do not persist user/group/project quota zap objects
when unneeded
#15356380c25f64 FreeBSD: Improve taskq wrapper
#153904fbc52495 Remove lock from dsl_pool_need_dirty_delay()
#1539757b409856 Trust ARC_BUF_SHARED() more
#15402b29e98fa8 Properly pad struct tx_cpu to cache line
#15405ea30b5a9e Set spa_ccw_fail_time=0 when expanding a vdev
#15416b9384b949 FreeBSD: taskq: Remove unused declaration
Obtained from: OpenZFS
OpenZFS commit: 797f55ef12