ZXFoundation™ 26h2
Loading...
Searching...
No Matches
mcck.cxxm File Reference

Centralized Machine-Check (MCCK) dispatcher. More...

import lib.error;
import zxfoundation.sched.core;
import arch.s390x.cpu.irq;
import zxfoundation.scoms.kobject.ref;
import zxfoundation.base.types;
import arch.s390x.cpu.lowcore;
import arch.s390x.cpu.clock;
import arch.s390x.cpu.percpu;
import zxfoundation.sys.irq.core;
import zxfoundation.dgp.domain.types;
import zxfoundation.dgp.signal;
import zxfoundation.sys.syschk.core;
import zxfoundation.sys.printk.core;
import arch.s390x.cpu.psw;
import zxfoundation.sys.irq.consts;
Include dependency graph for mcck.cxxm:

Go to the source code of this file.

Functions

auto arch::s390x::trap::mcck::detail::dump_mcesa (const arch::s390x::cpu::lowcore::zx_lowcore &lc) noexcept -> void
 Structured MCESA diagnosis dump.
auto arch::s390x::trap::mcck::handle (cpu::irq::irq_frame *frame) noexcept -> void
 Centralized machine-check dispatcher.
auto arch::s390x::trap::mcck::detail::ipd_window_expired (arch::s390x::cpu::percpu::percpu_data &pcp, u64 now) noexcept -> bool
auto arch::s390x::trap::mcck::detail::nmi_registers_valid (u64 mcic) noexcept -> bool
 Validate register-state validity per Linux's nmi_registers_valid() and PoP §11-15.

Variables

constexpr u64 arch::s390x::trap::mcck::MCIC_AP = 1ULL << 19
constexpr u64 arch::s390x::trap::mcck::MCIC_AR = 1ULL << 30
constexpr u64 arch::s390x::trap::mcck::MCIC_B = 1ULL << 49
constexpr u64 arch::s390x::trap::mcck::MCIC_BACKLOG = 1ULL << 57
constexpr u64 arch::s390x::trap::mcck::MCIC_CC = 1ULL << 16
constexpr u64 arch::s390x::trap::mcck::MCIC_CD = 1ULL << 59
constexpr u64 arch::s390x::trap::mcck::MCIC_CK = 1ULL << 52
constexpr u64 arch::s390x::trap::mcck::MCIC_CP = 1ULL << 54
constexpr u64 arch::s390x::trap::mcck::MCIC_CR = 1ULL << 34
constexpr u64 arch::s390x::trap::mcck::MCIC_CT = 1ULL << 17
constexpr u64 arch::s390x::trap::mcck::MCIC_DA = 1ULL << 29
constexpr u64 arch::s390x::trap::mcck::MCIC_DG = 1ULL << 56
constexpr u64 arch::s390x::trap::mcck::MCIC_DS = 1ULL << 44
constexpr u64 arch::s390x::trap::mcck::MCIC_EC = 1ULL << 37
constexpr u64 arch::s390x::trap::mcck::MCIC_ED = 1ULL << 58
constexpr u64 arch::s390x::trap::mcck::MCIC_FA = 1ULL << 39
constexpr u64 arch::s390x::trap::mcck::MCIC_FC = 1ULL << 20
constexpr u64 arch::s390x::trap::mcck::MCIC_FP = 1ULL << 36
constexpr u64 arch::s390x::trap::mcck::MCIC_GR = 1ULL << 35
constexpr u64 arch::s390x::trap::mcck::MCIC_GS = 1ULL << 27
constexpr u64 arch::s390x::trap::mcck::MCIC_IA = 1ULL << 40
constexpr u64 arch::s390x::trap::mcck::MCIC_IE = 1ULL << 31
constexpr u64 arch::s390x::trap::mcck::MCIC_KE = 1ULL << 45
constexpr u64 arch::s390x::trap::mcck::MCIC_MS = 1ULL << 42
constexpr u64 arch::s390x::trap::mcck::MCIC_PD = 1ULL << 62
constexpr u64 arch::s390x::trap::mcck::MCIC_PM = 1ULL << 41
constexpr u64 arch::s390x::trap::mcck::MCIC_PR = 1ULL << 21
constexpr u64 arch::s390x::trap::mcck::MCIC_SC = 1ULL << 46
constexpr u64 arch::s390x::trap::mcck::MCIC_SD = 1ULL << 63
 Machine-Check Interruption Code bits per PoP §11-14, Figure 11-5. Bit N in PoP notation = mask 1ULL<<(63-N). Bits not listed here are unassigned per the 13th-edition PoP.
constexpr u64 arch::s390x::trap::mcck::MCIC_SE = 1ULL << 47
constexpr u64 arch::s390x::trap::mcck::MCIC_SP = 1ULL << 53
constexpr u64 arch::s390x::trap::mcck::MCIC_SR = 1ULL << 61
constexpr u64 arch::s390x::trap::mcck::MCIC_ST = 1ULL << 32
constexpr u64 arch::s390x::trap::mcck::MCIC_VR = 1ULL << 38
constexpr u64 arch::s390x::trap::mcck::MCIC_W = 1ULL << 55
constexpr u64 arch::s390x::trap::mcck::MCIC_WP = 1ULL << 43
constexpr u32 arch::s390x::trap::mcck::MAX_IPD_COUNT = 29
 IPD damage-window constants (mirror Linux nmi.c MAX_IPD_COUNT / MAX_IPD_TIME). The window is 5 minutes in TOD-clock units (1 µs = 4096 ticks -> 5*60*4096*1e6 ticks).
constexpr u64 arch::s390x::trap::mcck::MAX_IPD_WINDOW_TOD = 5ULL * 60ULL * 4'096'000'000ULL

Detailed Description

Centralized Machine-Check (MCCK) dispatcher.

SPDX-License-Identifier: Apache-2.0

Function Documentation

◆ handle()

auto arch::s390x::trap::mcck::handle ( cpu::irq::irq_frame * frame) ->void
exportnoexcept

Centralized machine-check dispatcher.

Parameters
[in]frameSaved interrupt frame from entry.S SAVE_FRAME on the MCCK stack. Untouched by all fatal paths except via dump_stack at the bottom of syschk_fatal.