[SandboxIR][Tracker] Implement accept(/*AcceptAll*/) and revert(/*RevertAll*/) (#197289)
In the context of nested checkpoints the tracker's API was somewhat
inconsistent. Tracker::revert() would revert to the last checkpoint but
accept() would accept all changes.
This patch fixes this, and introduces `accept(bool AcceptAll)` and
`revert(bool RevertAll)`.
Treat terminal TNC finalize errors as failure
This commit wires the registration finalization loop through the shared classifier from truenas_connect_utils, so a 400 with a non-retryable error code now sets REGISTRATION_FINALIZATION_FAILED and exits instead of polling fruitlessly until the 45-minute claim token expires. Network errors, 5xx, 408, 429 and the pending-registration "not found" case still retry with the existing backoff. Adds unit tests for the classifier.
[AMDGPU][docs][NFC] Fix some instruction names in gfx950 doc (#199094)
In the GFX950 documentation, some instructions that should have the
_sdwa suffix were incorrectly given the _dpp suffix.
[clang] fix getTemplateInstantiationArgs
This implements a new strategy for collecting the template arguments, by
relying on the qualifiers and template parameter lists to navigate the template
context of out-of-line definitions.
This greatly simplifies the signature of that function, by removing a bunch
of workarounds, and simpliffying a couple that weren't removed yet.
Since this now relies on qualifiers and template parameter lists,
this patch expends most of its effort making sure these are placed,
transformed and propagated to template instantiations.
Also makes the explicit specialization AST nodes stop abusing the template
parameter lists by storing it's own template parameter list, creating a
dedicated field for them, similar to partial specializations.
Revert "[clang] Use FileError in FileManager::getFileRef, getDirectoryRef" (#199721)
Reverts llvm/llvm-project#199126
This caused a small compile time regression.
Harden default dataset config for NAS storage
This commit changes our defaults for newly created filesystems
that are outside of namespaces for root filesystems for apps and
containers. Specifically, we're now setting noexec, nosuid, and
nodev by default to more closely align with storage industry
best practices. No migration is one for existing data.
The noexec property is exposed to users because there is
prior precedence for allowing users to toggle on/off (apps may
want to execute scripts provided on generic NAS storage), but
other options are not exposed directly to users in the
pool.dataset.create API.
There is a specific noexec=on carveout for datasets created
with the APPS type.
[AMDGPU] Diagnose unsupported fma_legacy/sudot4/sudot8 intrinsics on some subtargets (#198464)
Add proper diagnostics for `llvm.amdgcn.fma.legacy`,
`llvm.amdgcn.sudot4` and `llvm.amdgcn.sudot8` on subtargets where they
are unsupported
[AMDGPU] Implement -amdgpu-spill-cfi-saved-regs
These spills need special CFI anyway, so implementing them directly
where CFI is emitted avoids the need to invent a mechanism to track them
from ISel.
Change-Id: If4f34abb3a8e0e46b859a7c74ade21eff58c4047
Co-authored-by: Scott Linder scott.linder at amd.com
Co-authored-by: Venkata Ramanaiah Nalamothu VenkataRamanaiah.Nalamothu at amd.com
NAS-141161 / 26.0.0-RC.1 / Switch to truenas_pyos access check function (by anodos325) (#19018)
This commit switches from using our process-pool based permissions
checker with on that's streamlined inside truenas_pyos and executes with
GIL dropped. Historically this area has been troublesome to keep good
performance and so simplifying middleware design here is worthwhile.
Original PR: https://github.com/truenas/middleware/pull/19003
Co-authored-by: Andrew Walker <andrew.walker at truenas.com>
[AMDGPU] Implement CFI for CSR spills
Introduce new SPILL pseudos to allow CFI to be generated for only CSR
spills, and to make ISA-instruction-level accurate information.
Other targets either generate slightly incorrect information or rely on
conventions for how spills are placed within the entry block. The
approach in this change produces larger unwind tables, with the
increased size being spent on additional DW_CFA_advance_location
instructions needed to describe the unwinding accurately.
Change-Id: I9b09646abd2ac4e56eddf5e9aeca1a5bebbd43dd
Co-authored-by: Scott Linder <scott.linder at amd.com>
Co-authored-by: Venkata Ramanaiah Nalamothu <VenkataRamanaiah.Nalamothu at amd.com>
[AMDGPU] Implement CFI for non-kernel functions
This does not implement CSR spills other than those AMDGPU handles
during PEI. The remaining spills are handled in a subsequent patch.
Change-Id: I5e3a9a62cf9189245011a82a129790d813d49373
Co-authored-by: Scott Linder <scott.linder at amd.com>
Co-authored-by: Venkata Ramanaiah Nalamothu <VenkataRamanaiah.Nalamothu at amd.com>
[AMDGPU] Emit entry function Dwarf CFI
Entry functions represent the end of unwinding, as they are the
outer-most frame. This implies they can only have a meaningful
definition for the CFA, which AMDGPU defines using a memory location
description with a literal private address space address. The return
address is set to undefined as a sentinel value to signal the end of
unwinding.
Change-Id: I21580f6a24f4869ba32939c9c6332506032cc654
Co-authored-by: Scott Linder <scott.linder at amd.com>
Co-authored-by: Venkata Ramanaiah Nalamothu <VenkataRamanaiah.Nalamothu at amd.com>
[MC][Dwarf] Add custom CFI pseudo-ops for use in AMDGPU
While these can be represented with .cfi_escape, using these pseudo-cfi
instructions makes .s/.mir files more readable, and it is necessary to
support updating registers in CFI instructions (something that the
AMDGPU backend requires).
Change-Id: I763d0cabe5990394670281d4afb5a170981e55d0
[Clang] Default to async unwind tables for amdgcn
To avoid codegen changes when enabling debug-info (see
https://bugs.llvm.org/show_bug.cgi?id=37240) we want to
enable unwind tables by default.
There is some pessimization in post-prologepilog scheduling, and a
general solution to the problem of CFI_INSTRUCTION-as-scheduling-barrier
should be explored.
Change-Id: I83625875966928c7c4411cd7b95174dc58bda25a
[MIR] Error on signed integer in getUnsigned
Previously we effectively took the absolute value of the APSInt, instead
diagnose the unexpected negative value.
Change-Id: I4efe961e7b29fdf1d5f97df12f8139aac12c9219
[AMDGPU] Emit entry function Dwarf CFI (#183152)
Entry functions represent the end of unwinding, as they are the
outer-most frame. This implies they can only have a meaningful
definition for the CFA, which AMDGPU defines using a memory location
description with a literal private address space address. The return
address is set to undefined as a sentinel value to signal the end of
unwinding.
Change-Id: I21580f6a24f4869ba32939c9c6332506032cc654
Co-authored-by: Scott Linder <scott.linder at amd.com>
Co-authored-by: Venkata Ramanaiah Nalamothu <VenkataRamanaiah.Nalamothu at amd.com>
NAS-141161 / 27.0.0-BETA.1 / Switch to truenas_pyos access check function (#19003)
This commit switches from using our process-pool based permissions
checker with on that's streamlined inside truenas_pyos and executes with
GIL dropped. Historically this area has been troublesome to keep good
performance and so simplifying middleware design here is worthwhile.
(cherry picked from commit d6b5996ccfb45e71ebd402b873a6473d16ca8d81)
[1/3][RegAlloc][LiveRegMatrix] Fix inconsistency in HoistSpillHelper delegates (#197773)
HoistSpillHelper's LiveRangeEdit delegate callbacks did not keep the
LiveRegMatrix consistent when eliminateDeadDefs triggered interval
shrinking and splitting during spill hoisting.
Three issues:
1. No LRE_WillShrinkVirtReg override: when eliminateDeadDefs shrinks a
vreg's interval via shrinkToUses, the matrix was not updated. Add an
override that unassigns the vreg from the matrix and records it in
PendingReassignments for later re-assignment.
2. LRE_DidCloneVirtReg called VRM.assignVirt2Phys without
Matrix->assign: when splitSeparateComponents creates new vregs, the
clones got VRM entries but were never inserted into the matrix. Fix by
consuming PendingReassignments and properly assigning both Old (shrunk)
and New (split) intervals to the matrix.
[15 lines not shown]
NAS-141094 / 27.0.0-BETA.1 / mark auth.login and auth.login_with_api_key removed_in v27 (#18971)
Both methods are thin wrappers around auth.login_ex. Add
removed_in='v27' to their @api_method decorators so they're invisible on
v27 sessions while remaining reachable for v25/v26 callers via
LegacyAPIMethod. Docstrings updated to point at auth.login_ex with the
appropriate mechanism.
The primary motivation for this is to encourage users to switch to more
secure authentication mechanisms for API key authentication. The
deprecated endpoint is incapable of a challenge-response flow.
[flang][cuda] Lower c_devptr value arguments in bind(c) like c_ptr (#199316)
Treat `type(c_devptr), value` arguments in BIND(C) interfaces like
`type(c_ptr), value` by passing the nested raw address value instead of
the outer derived type ABI. This keeps call signatures consistent for
CUDA Fortran generic specifics that share a C binding label and avoids
argument misclassification at the x86_64 register/stack boundary.