LinuxKPI: page pool updates and add to the build
Split implementation out from the header files.
This "page pool" is the very minimalistic version we need in order to
support packets on mt76.
We allocate the page pool in order to have the meta data available of
which we only make limited use.
This implementation does no pooling, it does no page fragments for now,
it always hands out a full page and frees it upon return.
It is written in a way that it can be in the tree before the 'struct page'
work it depends on has landed in order to reduce friction for people who
want to try mt7921 (or others later) upfront. We use the same #ifdef
as in the struct page work for that reason so one knob will turn everything
on or off.
Once the struct page work has landed and settled we can start filling this
with more complexity.
[8 lines not shown]
LinuxKPI: page.h: resort lines
Two of the "page macros" can be abstracted elsewhere in the upcoming
struct page work, so sort them away from the four which are here to
stay.
No functional change.
Sponsored by: The FreeBSD Foundation
MFC after: 3 days
Reviewed by: emaste
Differential Revision: https://reviews.freebsd.org/D58299
LinuxKPI: page.h: use atop() and ptoa() instead of PAGE_SHIFT
With upcoming changes to 'struct page' this will make the lines
easier to read by using the predefined macros from param.h.
Sponsored by: The FreeBSD Foundation
MFC after: 3 days
Reviewed by: markj, kib
Differential Revision: https://reviews.freebsd.org/D58298
LinuxKPI: prefer struct page [*] over struct vm_page[_t]
LinuxKPI is based on Linux 'struct page' which is currently aliased
to struct vm_page. Upcoming changes may change that so start using
'struct page *' instead vm_page_t to make future changes transparent.
This is a continuation of 9e9c682ff3a1 and should be a NOP.
Sponsored by: The FreeBSD Foundation
MFC after: 3 days
Reviewed by: emaste (no objections)
Differential Revision: https://reviews.freebsd.org/D58297
LinuxKPI: move clear_page() within the linux/page.h file
clear_page() would normally live in asm/page.h but adding the file
and fixing the dependencies would be too much for a single line.
Move the function to the end of the file with a clear separator
and make it clear that it does not operate on a 'struct page'
but on a page address by changing the argument name and leaving
a comment.
The function is currently used by at least mthca(4) as the only
in-tree consumer, and drm-kmod ttm_pool.c.
No functional changes.
Sponsored by: The FreeBSD Foundation
MFC after: 3 days
Reviewed by: emaste
Differential Revision: https://reviews.freebsd.org/D58296
LinuxKPI: pci: fix dma handle type in match function
dma_addr_t is a vm_paddr_t which is a uint of some width. Rather than
passing pointers of it around pass the value.
Comparing the addresses of different storage for the same dma handle
(the actual bug here) will not work when passed to the devres match
function.
Sponsored by: The FreeBSD Foundation
Fixes: 0a575891211ef ("implement dmam_free_coherent()")
MFC after: 3 days
Differential Revision: https://reviews.freebsd.org/D58285
[AMDGPU] Fix instruction size of LDS-DMA buffer loads (#211302)
Mark i1imm_0 as OPERAND_IMMEDIATE type, so its packed 1-bit value is not
mistaken for a trailing literal (same for InstFlag).
Applies to the swz/IsAsync fields of buffer (MUBUF) and FLAT LDS-DMA
instructions.
Changes estimated size for the corresponding instructions; codegen stays
untouched.
Add unit test, checking encoded size is 8 bytes (was: 12).
AI-assisted.
[SCEV] Use SCEVPtrToAddr instead of SCEVPtrToInt in SCEV. (#180244)
Use SCEVPtrToAddr instead of SCEVPtrToInt for pointer -> int
conversion in SCEV, like when computing trip count expressions.
getPtrToIntExpr now also creates SCEVPtrToAddrExpr.
Removal of SCEVPtrToIntExpr out of this PR, to limit the scope and
will be done as NFC follow-up.
PR: https://github.com/llvm/llvm-project/pull/180244
Fix AD member-server breakage on HA failover and upgrade
Two failure modes on an HA Active Directory member server: after a
failover, AD users are denied API access despite authenticating; after
an upgrade, the stored machine account secret can be wiped, forcing a
rejoin. Both come from mishandling winbind's local SAM domain SID and
the node-local secrets.tdb across boot, failover and upgrade.
winbind reads the local SAM SID from secrets.tdb at startup.
smb.set_system_sid (net setlocalsid) can change it under a running
winbindd on failover (smb.configure runs on become-master, winbindd is
not restarted). winbindd's domain list then holds a SID the SAMR/passdb
layer rejects, so local/BUILTIN alias expansion in wb_gettoken fails
with NT_STATUS_NO_SUCH_DOMAIN -- fatal to the whole group token, so
getgrouplist() returns only the primary gid. The truncated list drops
the AD group the RBAC privilege is granted to, denying access via the
one authenticate_user branch that logged nothing.
The standby differs: activate_standby restores secrets.tdb from the DB
[50 lines not shown]
DAG: Stop legalizing poison to undef
Previously all targets would expand poison to undef, which was a
shortcut taken when poison was introduced.
Introduces a new dedicated poison matcher in tablegen; this avoids
multiple opcode changes, and avoids some problematic contexts that
couldn't deal with PatFrags.
This probably should be legal by default for all legal types.
Co-authored-by: Claude (Claude-Opus-4.8)
AMDGPU: Avoid dropping poison when extracting a high element (#211872)
Haven't found a case where this matters, but I want to stop finding
this instance of the is-undef-get-undef pattern.
AMDGPU: Don't pack a build_vector with an undef/poison lane (#211871)
Once ISD::POISON is legal it reaches isel and is treated as canonical, so
is_canonicalized_2<build_vector> matched build_vector<x, poison> and
selected a v_pack for a don't-care high lane. Avoids regressions in future
patches.
Co-authored-by: Claude (Claude-Opus-4.8)
[clang][Fuchsia] Add __Fuchsia_Compiler_ABI__ predefine (#211744)
This establishes a new canonical predefine for *-fuchsia targets:
`__Fuchsia_Compiler_ABI__` is set to an integer for the version
number of the Fuchsia Compiler ABI the compiler supports. The
value will change as appropriate with changes to *-fuchsia target
ABI expectations. It is not anticipated that the compiler will
support selecting target ABI versions, only the latest as the
canonical target-specific behavior. Fuchsia Compiler ABI
versions are unrelated to the Fuchsia API levels supported by
Fuchsia systems; newly-built programs may target older API levels
with `-ffuchsia-api-level`, but everything relying on the Fuchsia
Compiler ABI is built and deployed together as an isolated unit.
[mlir][xegpu] Allow create_mem_desc from ND memref (#211836)
Relax the create_mem_desc source operand constraint to accept a
statically shaped shared-memory memref of any rank, replacing the
1D/2D-only StaticShared{1,2}DMemRefOf classes with a rank-agnostic
StaticSharedMemRefOf.
Add a verifier requiring the source memref to be contiguous row-major,
update the op documentation, and add valid/invalid lit tests.
assisted-by-claude
Co-authored-by: Claude Opus 4.8 <noreply at anthropic.com>
mail/bogofilter*: fix unaligned access on some databases
This was found with the undefined behavior sanitizer,
and affects the generic code (independent of the concrete database
back-end in use) so we need to bump all PORTREVISIONS.
The bug was that internal code was casting a void * to a uint32_t *
without ensuring alignment of the source value.
Let's use memcpy to a statically-sized array and let the optimizer
handle it for us. Adds files/patch-src_datastore.c.
PR: 297024
MFH: 2026Q3
(cherry picked from commit edee11f3ade730ece6643703213c3823d67b8138)
mail/bogofilter*: fix unaligned access on some databases
This was found with the undefined behavior sanitizer,
and affects the generic code (independent of the concrete database
back-end in use) so we need to bump all PORTREVISIONS.
The bug was that internal code was casting a void * to a uint32_t *
without ensuring alignment of the source value.
Let's use memcpy to a statically-sized array and let the optimizer
handle it for us. Adds files/patch-src_datastore.c.
PR: 297024
MFH: 2026Q3
[flang][OpenMP] Fix alias analysis for omp.private copy region block arguments to help inline hlfir.assign to improve time taken in LTO. (#209539)
## Summary
This PR fixes https://github.com/llvm/llvm-project/issues/200922 - a
compile-time regression affecting firstprivate clauses on simple arrays
in OpenMP target regions.
When `InlineHLFIRAssign` checks whether to inline `hlfir.assign`
operations in `omp.private` copy regions, the alias analysis
conservatively returns `MayAlias` for the copy region block arguments
(`%arg0` mold vs `%arg1` private). This prevents inlining and forces a
fallback to `fir.call @_FortranAAssign`, which:
- Pulls in 89 runtime functions via LTO
- Creates 550K+ abstract attributes in OpenMPOpt
- Causes severe compile-time degradation (60%+ increase in some cases)
**Example:**
[32 lines not shown]
[libc++] Rename pre-commit CI workflows (#211844)
Since we're expanding libc++'s pre-commit CI to add other types of
tests, (e.g. tools tests, performance tests, etc), it makes sense to be
a bit more precise about what each workflow does, and to use a
consistent pattern across workflow names.
Also, update stale references to old names in the documentation and in
some infrastructure scripts.
mail/bogofilter*: Prepare LMDB 1.0 transition
Here's what we do now:
- mail/bogofilter currently depends on lmdb0, a 0.9.X port, so
it continues to work as before
- add a new mail/bogofilter-lmdb1 port that depends on lmdb, the 1.0
version of the LMDB database.
- add the upstream patch for bogofilter 1.3.0.rc1 that I made and
that delphij@ prepared for integration into the ports tree - thanks!
Here's the plan for end of 2026:
- AT THE SAME TIME:
- upgrade mail/bogofilter to depend on LMDB 1.0
- portrm mail/bogofilter-lmdb1
- add a MOVED entry to redirect from bogofilter-lmdb1 to bogofilter.
While here, clean up and rearrange the Makefiles.
PR: 296519
[5 lines not shown]
[libc++][CI] Add a Github workflow to test libc++ tools (#211067)
We have a few scripts under libcxx/utils, and they wouldn't be tested on
a regular basis. As a result, changes to e.g. the build system could
break these scripts, which in turn could break some Github workflows
like the libc++ PR benchmarking workflow.
This patch adds a new `test-tools` configuration to `run-buildbot` which
allows testing these tools locally, and a new dedicated Github workflow
to run it.
clang/AMDGPU: Migrate cc1 tests to subarch triples (5) (#211840)
Rewrite OpenMP cc1 test RUN lines to the new subarch triple form,
dropping the redundant -target-cpu, and regenerate autogenerated CHECK
lines. Tests that intentionally assert the "target-cpu" attribute are
left unchanged.
Co-authored-by: Claude (Opus 4.8) <noreply at anthropic.com>
AMDGPU: Reject unrecognized amdgpu subarch in TargetID parsing (#211866)
A bare "amdgpu" or an unrecognized "amdgpu<x>" both parse to the
amdgpu arch with no subarch; TargetID::parse previously accepted them,
taking a named processor and ignoring the missing subarch.
Reject triples with no subarch, unless it uses the legacy spelling.
This is another workaround for Triple not having a proper unknown value
for subarches.
Co-authored-by: Claude (Opus 4.8) <noreply at anthropic.com>
Merge tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux
Pull arm64 fixes from Will Deacon:
"It's a bit all over the place, as I was hoping to fix a decade-old bug
in our seccomp handling on syscall entry and ended up collecting other
fixes in the meantime. You'll see the failed attempt (+revert) here
but I didn't want to hold off on the others any longer. Hopefully
we'll get that one squashed next week...
- Fix early_ioremap() of unaligned ACPI tables
- Remove bogus information from data abort diagnostics
- Fix kprobes recursion during single-step
- Fix incorrect constant in ESR address size fault macro
- Fix OOB page-table walk in memory hot-unplug notifier
[20 lines not shown]