iflib: unify prefetching
This change makes all prefetching use the iflib prefetch wrappers, rather
than using prefetch() in some places and __builtin_prefetch() in others.
Note that __builtin_prefetch() does not work in the kernel on amd64 as clang
disables it when -mnosse is specified, so we must use the asm directives there,
and builtin_prefetch() elsewhere.
This change enables prefetching on non-x86 (notably arm64), and it enables
prefetching in netmap that has been there since day one, but which has never worked.
This is a no-op on non-netmap amd64 and i386
Differential Revision: https://reviews.freebsd.org/D60602
Reviewed by: glebius, kbowling
Sponsored by: Netflix
games/vkquake: Update to 1.36.0 + take maintainer
Notable changes:
+ Support for 30th anniversary remaster
+ New level select menu
+ 5 new selectable crosshairs
+ more UI graphics filtering options
+ quake console seriously improved
+ multiplayer menu enhanced
+ lots of performance fixes, which were noticable on my laptop
PR: 298434
Approved by: Amelia Marsh <seafork at disroot.org> (maintainer timeout)
(cherry picked from commit 058caa7c245ccafcd5105d8afad84a1a91fbafed)
www/{nginx,nginx-devel,freenginx}: 3rd-party modules management
- Announce the removal of the HTTP_NOTICE option after 2026-12-31.
nginx can return a fixed body itself.
- Announce the removal of the HTTP_UPSTREAM_STICKY option after
2026-12-31 in nginx and nginx-devel. nginx has its own sticky
directive since 1.29.6, freenginx does not.
Sponsored by: Netzkommune GmbH
rms: Order a writer's stores before its readers see it leave
Readers check rms->writers without a fence, and rms_wunlock() drops
it with a plain store. rms_wlock() interrupts every CPU before the
first writer blocks readers, but nothing orders them when the last
writer leaves: on a weakly ordered CPU a reader can see the count
reach zero and still read what the writer replaced, such as callbacks
of a module unloaded under the lock.
Fence every CPU before the last writer drops the count: rename
rms_wlock_switch() to rms_block_readers() and add
rms_unblock_readers(), a wrapper for cpus_fence_seq_cst(). Readers
stay fence-free; the cost lands on the rare unlock.
Reviewed by: mjg
Discussed with: kib
Fixes: 1f162fef76a0 ("Add read-mostly sleepable locks")
MFC after: 2 weeks
Sponsored by: Rubicon Communications, LLC ("Netgate")
Differential Revision: https://reviews.freebsd.org/D60658
graphics/feh: Fix build with DOCS or EXAMPLES off
Upstream 3.13 moved the list of install targets from the Makefile to
INSTALL_TARGETS in config.mk. This meant the
install-doc/install-examples substitutions only deleted the rules and
left the upstream Makefile dependencies in place.
Edit INSTALL_TARGETS instead, and replace the config.mk patch with
example_dir passed via MAKE_ARGS.
Reported by: Dan Allen <danallen46 at gmail.com>
Sponsored by: The FreeBSD Foundation
Revert "net/libmodbus: [NEW PORT] Modbus TCP/RTU library for industrial communications"
* This is the duplicate of comms/libmodbus
This reverts commit 6479175b5c5c80fd1b9912cc30d925ec16b76af7.
PR: 299193
databases/mysql267-{server|client}: Add New Port
Welcome MySQL 26.7
MySQL switched to calendar versioning (YY.M) after the 9.7 LTS series,
so 26.7.0 is the first Innovation release after 9.7; there is no 9.8.
What is new in MySQL 26.7:
https://dev.mysql.com/doc/relnotes/mysql/26.7/en/news-26-7-0.html
Compared to mysql97:
- Drop patches for backup_page_tracker.cc and stdx/filesystem.cc,
merged upstream
- Add a missing <time.h> include to mgmapi.h, needed for the new
time_t member of ndb_mgm_cert_table
- Build as C++23 like upstream and drop USE_CXXSTD=c++20
- Drop -malign-double, an i386 workaround while i386 is excluded
- Drop WITH_BOOST, boost is bundled under extra/boost now
- Drop -DWITH_xxx=system already covered by WITH_SYSTEM_LIBS
[6 lines not shown]
x11/framework-laptop12: New port
Meta-port for the Framework Laptop 12 on FreeBSD X11
Reviewed by: jrm
Differential Revision: https://reviews.freebsd.org/D60627
x11/framework-keyboard: New port
Meta-port for the Framework laptop Fn row and media keys.
Reviewed by: jrm
Differential Revision: https://reviews.freebsd.org/D60618
arm64: Fix and rename midr_check_var_part_range()
At the lowest and highest variants in the specified range,
midr_check_var_part_range() was comparing the part number, rather than
the revision, against the bounds. In other words, the "Y" in "rXpY"
should be compared to CPU_REV() instead of CPU_PART(). Apply this
correction, and rename the function to midr_check_var_rev_range() to
better reflect the field that we are checking.
Reported by: Claude Code (Opus 5.5)
Reviewed by: andrew
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D60624
powerpc: keep FP, VMX and VSX ownership changes atomic with preemption
trap() and set_mcontext() change the FP/VMX/VSX ownership state in
several steps with preemption enabled. A context switch in between
leaves the thread computing with another thread's register contents:
- enable_fpu()/enable_vec() set PCB_FPU/PCB_VEC before loading the
registers, so a switch mid-load saves a half-loaded unit over the PCB.
- set_mcontext() clears the frame's MSR bits and then the PCB flags;
a switch in between re-enables the unit, and the thread returns to
user space with it enabled but not owned, so it is neither saved nor
restored until the next signal.
Both paths run after every sigreturn(2), setcontext(2) and
swapcontext(3). A POWER9 test that keeps f14-f31 live across a signal,
with other threads using the FPU on the same CPU, saw 283 corrupted
round trips out of 882000; none after this change.
Hold a critical section around both, as amd64 and arm64 do.
[7 lines not shown]
www/bunkerweb: Add missing py-maxminddb dependency
The mmdb-country and mmdb-asn jobs validate the downloaded GeoIP
databases with the maxminddb Python module. Without it they abort with
"maxminddb is not installed", the databases are never installed, and
country and ASN stay unknown in the metrics, the web UI and the
country-based access rules.
Sponsored by: Netzkommune GmbH
x11-toolkits/fltk: update the port to version 1.3.11
- Fix potential crash when backspace is typed in a menu
- Fluid: output FLTK version for -v/--version command-
line arguments
- Fix Fl_Table_Row inconsistencies
- Improve transitions between fullscreen modes
- Fix potential buffer overflow in Fl_Help_View
The ABI is 100% compatible with releases 1.3.5-1.3.10.
No further releases are planned for the 1.3.x series.
PR: 283342 (wip towards 1.4.x update)
powerpc: keep FP, VMX and VSX ownership changes atomic with preemption
trap() and set_mcontext() change the FP/VMX/VSX ownership state in
several steps with preemption enabled. A context switch in between
leaves the thread computing with another thread's register contents:
- enable_fpu()/enable_vec() set PCB_FPU/PCB_VEC before loading the
registers, so a switch mid-load saves a half-loaded unit over the PCB.
- set_mcontext() clears the frame's MSR bits and then the PCB flags;
a switch in between re-enables the unit, and the thread returns to
user space with it enabled but not owned, so it is neither saved nor
restored until the next signal.
Both paths run after every sigreturn(2), setcontext(2) and
swapcontext(3). A POWER9 test that keeps f14-f31 live across a signal,
with other threads using the FPU on the same CPU, saw 283 corrupted
round trips out of 882000; none after this change.
Hold a critical section around both, as amd64 and arm64 do.
[6 lines not shown]