[Hexagon] Fix MachineMemOperand for brev load ; set the offset of the memory operand (#212916)
`getTgtMemIntrinsic` describes the access of the bit-reverse load
intrinsics (`llvm.hexagon.L2.loadr*.pbr`) by attaching the underlying
object of the base pointer to the machine memory operand, for alias
analysis.
Such a load post-increments its base pointer by the modifier, and
accesses the address formed by reversing the low 16 bits of that
pointer:
memXX(Rx++Mu:brev) EA = Rx.h : bitrev(Rx.l)
So a load in a chain of them accesses the base pointer of the chain,
plus the bit-reverse of the sum of the modifiers of the loads before it.
The offset was always zero, so every load of a chain claimed to access
the first bytes of the object. Alias analysis concluded a store
elsewhere in the object could not alias the loads, the scheduler sank it
[18 lines not shown]
[MemRef] Remove redundant elide-rc through load tests (#213033)
Remove test cases and naming highlighting the boundary non-unit dim
requirement - this has been relaxed in the current implementation.
ixv: Defer reset after mailbox failure
When link polling loses mailbox clear-to-send or times out, request an
iflib reset instead of continuing with stale VF state.
The driver callback runs after iflib samples reset requests, so requeue
the admin task to make iflib consume the request on its next pass
rather than waiting for an unrelated timer or interrupt.
MFC after: 2 weeks
[AST][NFC] Rename and refactor floating-point status checks in AST and ByteCode evaluators (#213750)
To clarify the purpose of floating-point status checks in AST and
ByteCode evaluators during translation (as opposed to mandatory constant
expression evaluation):
- Rename checkFloatingPointResult to
checkFloatingPointResultForConstantFolding in ExprConstant.cpp
- Update its Doxygen documentation comment
- CheckFloatResult in Interp.cpp is essentially the same as (Result NaN
check + checkFloatingPointResultForConstantFolding). So we split the
part that is equivalent to checkFloatingPointResultForConstantFolding in
CheckFloatResult into a separate CheckFloatStatus function.
[clang][OpenMP] Split OMPOrderedDirective into two classes
Now that OMPD_ordered has been replaced with two variants, split
the OMPOrderedDirective class into two classes, one for each
variant.
ixgbe: Re-enable the SFP laser during initialization
ixgbe_if_stop() disables the transmit laser on every 82599 SFP fiber
port, but the iflib initialization path did not re-enable it. Re-enable
the laser before deferred SFP module setup so interface
reinitialization cannot leave either single-speed or multispeed optics
dark.
The hardware wrapper is a no-op when laser control is unavailable. The
placement follows Intel ix-3.4.39; this version deliberately applies to
every SFP port affected by the stop path.
MFC after: 1 week
[SPIR-V] Set MIB insert point before widened type lookup in widenSignSensitiveOps (#214424)
Fix an assertion crash (release: null-MBB walk) when a sub-pow2
sign-sensitive op has no preceding G_TRUNC to set the insert point
[clang][OpenMP] Use different ids for block and s/a ORDERED directive
Use OMPD_ordered_blockassoc for the block-associated ORDERED directive,
and OMPD_ordered_standalone for the standalone variant.
This still uses a single AST class for both though. The directive
kind stored in can now take either of the two values.
[flang][OpenMP] Use different ids for block and s/a ORDERED directive
Use OMPD_ordered_blockassoc for the block-associated ORDERED directive,
and OMPD_ordered_standalone for the standalone variant.
[OpenMP] Create separate directives for two variants of ORDERED
The ORDERED directive comes in two flavors, standalone and block-
associated. Create two different directive ids, one for each kind.
This will allow a more precise connection between the directive id
and its properties.
This does not remove OMPD_ordered, nor does it change clang or
flang beyond the minimum required to keep working as before.
ixgbe: quarantine repeatedly faulting legacy VFs
A guest can reinitialize after a VF function-level reset and
repeatedly strand an 82599 or X540 PF with invalid descriptor DMA
targets. Count only distinct Received Master Abort events accepted by
the qualified transmit-stall detector and quarantine the VF after five
events.
Preserve quarantine across PF reinitialization, reject reset mailbox
requests, and keep transmit, receive, and clear-to-send disabled.
Recreating SR-IOV clears quarantine. Expose the affected pools through
a read-only bitmap.
After a successful quarantine FLR, leave the function in post-FLR
configuration, explicitly keep decode and bus mastering disabled,
verify the Command register, and refresh its PCI-layer cache so a later
restore cannot re-enable the function.
This addresses CVE-2021-33061 on 82599. Apply the same bounded-failure
[6 lines not shown]
pci: Skip PF SR-IOV state handling for VFs
A VF's pci_devinfo references its PF's pcicfg_iov for resource
bookkeeping, but only the PF implements the SR-IOV capability.
pci_cfg_save() and pci_cfg_restore() treated any non-NULL cfg.iov as
an owned capability and accessed the PF capability offset in VF
configuration space. Saving a VF could therefore replace the shared
PF settings with unrelated VF register values.
Skip SR-IOV capability save and restore for PCICFG_VF children. The
generic PCI and PCIe state of the VF remains preserved. This is also
required by drivers that save VF state around a PF-driven
function-level reset.
MFC after: 2 weeks
ixgbe: Recover legacy VFs from invalid DMA targets
82599 and X540 lack the X550 malicious-driver detector. Detect a VF
whose PCI status reports a received master abort while its transmit
ring has outstanding descriptors and makes no progress across
consecutive samples.
Consume the accepted PCI status latch, gate that VF I/O, and recover
one pending VF per task pass with round-robin selection. This prevents
an unreadable function from starving detection or recovery of other
VFs.
Save the complete writable VF PCI configuration before FLR, restore it
afterward, and verify the hardware-backed Command state. Preserve the
first good snapshot and pending state across reset events until restore
and verification succeed.
Introduce a common I/O-disabled policy bitmask so later quarantine
policy can extend traffic gating without duplicating fault-state
[3 lines not shown]