pmc: enable the new pmc commands
This change hooks everything up to the pmc command and improves the
usage to document all functions. There are a couple older commands that
are currently broken that I have hidden from the usage, but left in the
code for those using it. I won't remove those until we have our
replacements upstreamed that depend on the AMD PMC multiplexing patches.
Sponsored by: Netflix
Reviewed by: adrian, imp
Differential Revision: https://reviews.freebsd.org/D57780
pmc: pmc info command
Prints the log header including machine, cpu and kernel details along
with what counters were selected.
Sponsored by: Netflix
Reviewed by: adrian, imp
Differential Revision: https://reviews.freebsd.org/D57778
pmc: pmc frontend stall analysis based on IBS
The frontend command uses AMD IBS frontend events to analyze the major
sources of frontend stalls. It displays a table breakind down the major
causes of front end stalls. This is a simple demonstration of the tools
as you can use the filtering tools to limit the analysis to a subset of
the samples including filtering by fetch latencies.
Sponsored by: Netflix
Reviewed by: adrian, imp
Differential Revision: https://reviews.freebsd.org/D57779
pmc: pmc record command
The record command is designed around the idea of predefined studies.
While you can still select individual counters, the predefined studies
are meant to enable the best hardware options for a given generation.
It implements all of the base studies that I have built so far.
Sponsored by: Netflix
Reviewed by: adrian
Differential Revision: https://reviews.freebsd.org/D57777
pmc: new pmc log processing framework
View is a class for building PMC log processing tools it is designed to
work with the new PMC record command that adds a header with additional
CPU information. The new framework processes PMC logs about 2.5 times
faster and in about half the code as libpmcstat.
Sponsored by: Netflix
Reviewed by: adrian
Differential Revision: https://reviews.freebsd.org/D57776
pmc: console configuration and table rendering for new PMC tools
Initializes the terminal rendering code used by the new pmc tools. Then
provides a table abstraction for collecting, sorting and rendering
tables. It provides pretty printed results with typed fields that print
several types used throughout the new PMC tools. By default the fields
are formatted in engineering notation.
Sponsored by: Netflix
Reviewed by: adrian, imp
Differential Revision: https://reviews.freebsd.org/D57775
e1000: report UDP RSS hash type on igb/em
{em,igb}_determine_rsstype() mapped only the TCP and bare-IP RSS descriptor
types; the UDP types returned M_HASHTYPE_NONE.
The hardware does hash UDP, but with a NONE hashtype iflib skips its
flowid-based TX queue spread, so all forwarded UDP egressed on a single queue
and serialized transmit on one core.
Add the three UDP cases (IPV4_UDP, IPV6_UDP, IPV6_UDP_EX) so egress spreads
across all TX queues.
Reviewed by: kbowling, gallatin
Approved by: kbowling
MFC after: 1 week
MFC to: stable/14, stable/15
Sponsored by: Netflix
Differential Revision: https://reviews.freebsd.org/D58513
AMDGPU: Add dedicated features for wavesize support (#212581)
Previously we had features for which wavesize is active,
and unstructured checks for which targets support which
wavesize.
One assembler test changes because it was artificially
forcing wave64 on gfx1250 for test simplification, and
the supportsWave32 helper function was buggy.
Co-authored-by: Claude (Claude-Opus-4.8)
[lit] Switch tests to using path function (#212381)
All the other test suites use the PATHS option to configure_lit_site_cfg
and the path() function in lit.site.cfg to make the site configs
relocatable. Apply the same pattern to lit's own suite as well.
IR: Accept x86_fp80 and float as a long-double-type value (#210818)
Prepare to emit long-double-type for all targets. x86 obviously needs
x87, and AVR uses float.
Co-authored-by: Claude (Claude-Opus-4.8) <noreply at anthropic.com>
[LLVM][docs] Small updates to Writing an Backend
- Methods `eliminateCallFramePseudoInstr`, `emitPrologue`, `emitEpilogue` have to be implemented in subclass of `TargetFrameLowering`
- Method `hasFP` was renamed to `hasFPImpl`, and also belongs into subclass of `TargetFrameLowering`
- Give path to the `TargetInfo` class
- Fix parameters of `RegisterTarget`
- Fix path to `TargetRegistry.h`
Assisted by IBM Bob
hwpmc: fix event allocation on pre-Zen AMD CPUs
amd_allocate_pmc() chose the pmu-events code path whenever pmc_cpuid was
non-empty, and rejected any allocation lacking PMC_F_EV_PMU.
But pmc_cpuid is set for every AMD CPU, while the pmu-events tables only cover
Zen and later.
On older families (K8, Bobcat, Jaguar/16h, Bulldozer) libpmc finds no
pmu-events entry and falls back to the legacy path, which never sets
PMC_F_EV_PMU.
Reviewed by: mhorne
Approved by: mhorne
MFC after: 1 week
MFC to: stable/14, stable/15
Sponsored by: Netflix
Differential Revision: https://reviews.freebsd.org/D58468
benchmarks/py-zopkio: Remove expired port
2026-07-28 benchmarks/py-zopkio: Upstream last activity was in 2016, and the project has been moved to the LinkedInAttic GitHub account.
[AMDGPU] Fix llvm.amdgcn.ballot with return width != wavefront size (#211493)
Before wave mask was emitted directly in the requested return type,
which failed to select for i32 ballots on wave64 (and vice versa)
Compute the mask at the wavefront width and then zext or trunc it to the
result type
AMDGPU: Add dedicated features for wavesize support
Previously we had features for which wavesize is active,
and unstructured checks for which targets support which
wavesize.
One assembler test changes because it was artificially
forcing wave64 on gfx1250 for test simplification, and
the supportsWave32 helper function was buggy.
Co-authored-by: Claude (Claude-Opus-4.8)
Triple: Add query for the default long double format
The long double format changes the library call info, which needs
to be computed independently of codegen. Implement this based on the
clang target code.
clang: Emit "long-double-type" module flag generically
Move emission of the "long-double-type" module flag out of PowerPC
and into generic code, so it describes the long double format for all
targets.
Co-authored-by: Claude (Claude-Opus-4.8) <noreply at anthropic.com>
IR: Accept x86_fp80 and float as a long-double-type value
Prepare to emit long-double-type for all targets.
Co-authored-by: Claude (Claude-Opus-4.8) <noreply at anthropic.com>
NAS-141967 / 26.0.0-BETA.3 / Fix termination of clustered secrets key names (by anodos325) (#19432)
This commit fixes an issue where the clustered secrets file entries were
being migrated with a terminated an extra null for their name. The
termination behavior depends on the particular tdb file in question in
samba / winbind.
Original PR: https://github.com/truenas/middleware/pull/19422
---------
Co-authored-by: Andrew Walker <andrew.walker at truenas.com>
net/dot1ag-utils: new port
dot1ag-utils is a 2-clause BSD licensed suite of utilities providing Layer 2
Ping & Traceroute functionality for *BSD platforms. The code is currently
hosted at SourceHut ; please be considerate with "git archive" load. This
had languished in Bugzilla for some 15 years after thompsa@ submitted it.
Approved-by: pi
PR: 163072