From nobody Sun Jan 25 00:24:45 2026 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4dzC9B5bBFz6Ptcj for ; Sun, 25 Jan 2026 00:24:46 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R13" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4dzC9B11Fvz3cy9 for ; Sun, 25 Jan 2026 00:24:46 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1769300686; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=sOiO+qZFGJjMPINxgSkVIlB0QLL6YynYdtFI52elrLo=; b=e9tsS4pljzcR3VABv7m0J+RxwHBxcifLCdzkcANCU2PlG6Cqnm7GIGH5kKxlm5jpVQu8al S0RvP6JyXIkKilyo+EpetjYT49spgSzsdxnFnpAEiry0cssohLJYImxfB5ZVO4yNdogyFX d4+o8s1KL3TXoMPHgiOiFAqWl7J1jbA+4CxJNcfGg1pdZ91MzyIMP1+bmpywrjuB83ljhb Cmvk2iOvJWneHGEclUJt4FRcP1rxQ3VJoWQtKCiKqg8+5MRNXAEJzS2caqut/g0NIAWmuj ouLKtdsLvwzl1ENEj2FW9chEnaQqIuUc3PoxE3XJgOWv+bMMpbjDxT4n6gKvRw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1769300686; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=sOiO+qZFGJjMPINxgSkVIlB0QLL6YynYdtFI52elrLo=; b=oQ1e/n2B+Yq+kplsYj6V6ZbDodjKe07zxk8xKRzhZBVOZNm+uaj+zQttxsDRTQiF2EydB3 1Hr62zFxKBspAIY/blYBWiJMTX0k7t/3xMD8HLt7Wzm5Du3kLchIuhaky435o54oRJ7DxH 6k+aluuGVImGwlBWWcH3EMD9xZuhub/MCRf6Su6CcksSx3/thew0S8m268gw2bgTE7wAnL a/oRmu7GhjLiYba5+Q+w+GcxWwWoBjJP0o/Nj4cXOKnwxr8wwW6VeMnOGgA45nVj9sZmQb cZuQ1ZDWF/d7WgEEb9U1PbInbupmmNbMnPEV7xmAijeecFSu/odFAP+HSxsJwQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1769300686; a=rsa-sha256; cv=none; b=s13qWNYgIQpfCAOCTJmTq7ids9QPxRnU+ElmTtesgwfVO4e0D0h2iyQdBu1CsK02/eVf8Q G9jsdtJExRYu9LfhEn49pe8BFQoH8Ppw/f1oM7epNnPIvOPMkFH3X9ErzCawa0NDCXyzfi dSH5dygZ2xQZLhU7dVlQ5D7XZ+Doea7MGY70HieOSJwpbyRlzdLBX3YdJuoekyEPBZ8LL0 LRmxYtSg+jZj3wht0QYFSP+o74XkmwAWI0JuEbbznopa35TO/EungK9wP+hirt0uLW/lLW tQKler2FET4TkaDUf8g3x7JhubGoS/nBiS34Vn3dTl/KJV1C4uaXw60/iVYDrg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4dzC9975FXz1QTJ for ; Sun, 25 Jan 2026 00:24:45 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3ff88 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Sun, 25 Jan 2026 00:24:45 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: 854e0e480378 - stable/15 - x86 lapic: Dump LVTs from the ddb show lapic command List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kib X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 854e0e4803789c669edeff7c31e1ed4fd66e64b7 Auto-Submitted: auto-generated Date: Sun, 25 Jan 2026 00:24:45 +0000 Message-Id: <697562cd.3ff88.5a51a2bb@gitrepo.freebsd.org> The branch stable/15 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=854e0e4803789c669edeff7c31e1ed4fd66e64b7 commit 854e0e4803789c669edeff7c31e1ed4fd66e64b7 Author: Konstantin Belousov AuthorDate: 2026-01-22 18:00:56 +0000 Commit: Konstantin Belousov CommitDate: 2026-01-25 00:23:35 +0000 x86 lapic: Dump LVTs from the ddb show lapic command (cherry picked from commit dfc4186c6dcf2986b510fac108784011a236554d) --- sys/x86/x86/local_apic.c | 40 ++++++++++++++++++++++++++++++++++------ 1 file changed, 34 insertions(+), 6 deletions(-) diff --git a/sys/x86/x86/local_apic.c b/sys/x86/x86/local_apic.c index b444142d5481..c5399984c896 100644 --- a/sys/x86/x86/local_apic.c +++ b/sys/x86/x86/local_apic.c @@ -129,6 +129,7 @@ struct lvt { u_int lvt_mode:16; u_int lvt_vector:8; u_int lvt_reg; + const char *lvt_desc; }; struct lapic { @@ -158,6 +159,7 @@ static struct lvt lvts[] = { .lvt_mode = APIC_LVT_DM_EXTINT, .lvt_vector = 0, .lvt_reg = LAPIC_LVT_LINT0, + .lvt_desc = "LINT0", }, /* LINT1: NMI */ [APIC_LVT_LINT1] = { @@ -168,6 +170,7 @@ static struct lvt lvts[] = { .lvt_mode = APIC_LVT_DM_NMI, .lvt_vector = 0, .lvt_reg = LAPIC_LVT_LINT1, + .lvt_desc = "LINT1", }, [APIC_LVT_TIMER] = { .lvt_edgetrigger = 1, @@ -177,6 +180,7 @@ static struct lvt lvts[] = { .lvt_mode = APIC_LVT_DM_FIXED, .lvt_vector = APIC_TIMER_INT, .lvt_reg = LAPIC_LVT_TIMER, + .lvt_desc = "TIMER", }, [APIC_LVT_ERROR] = { .lvt_edgetrigger = 1, @@ -186,6 +190,7 @@ static struct lvt lvts[] = { .lvt_mode = APIC_LVT_DM_FIXED, .lvt_vector = APIC_ERROR_INT, .lvt_reg = LAPIC_LVT_ERROR, + .lvt_desc = "ERROR", }, [APIC_LVT_PMC] = { .lvt_edgetrigger = 1, @@ -195,6 +200,7 @@ static struct lvt lvts[] = { .lvt_mode = APIC_LVT_DM_NMI, .lvt_vector = 0, .lvt_reg = LAPIC_LVT_PCINT, + .lvt_desc = "PMC", }, [APIC_LVT_THERMAL] = { .lvt_edgetrigger = 1, @@ -204,6 +210,7 @@ static struct lvt lvts[] = { .lvt_mode = APIC_LVT_DM_FIXED, .lvt_vector = APIC_THERMAL_INT, .lvt_reg = LAPIC_LVT_THERMAL, + .lvt_desc = "THERM", }, [APIC_LVT_CMCI] = { .lvt_edgetrigger = 1, @@ -213,6 +220,7 @@ static struct lvt lvts[] = { .lvt_mode = APIC_LVT_DM_FIXED, .lvt_vector = APIC_CMC_INT, .lvt_reg = LAPIC_LVT_CMCI, + .lvt_desc = "CMCI", }, }; @@ -226,6 +234,7 @@ static struct lvt elvts[] = { .lvt_mode = APIC_LVT_DM_FIXED, .lvt_vector = 0, .lvt_reg = LAPIC_EXT_LVT0, + .lvt_desc = "ELVT0", }, [APIC_ELVT_MCA] = { .lvt_edgetrigger = 1, @@ -235,6 +244,7 @@ static struct lvt elvts[] = { .lvt_mode = APIC_LVT_DM_FIXED, .lvt_vector = APIC_CMC_INT, .lvt_reg = LAPIC_EXT_LVT1, + .lvt_desc = "MCA", }, [APIC_ELVT_DEI] = { .lvt_edgetrigger = 1, @@ -244,6 +254,7 @@ static struct lvt elvts[] = { .lvt_mode = APIC_LVT_DM_FIXED, .lvt_vector = 0, .lvt_reg = LAPIC_EXT_LVT2, + .lvt_desc = "ELVT2", }, [APIC_ELVT_SBI] = { .lvt_edgetrigger = 1, @@ -253,6 +264,7 @@ static struct lvt elvts[] = { .lvt_mode = APIC_LVT_DM_FIXED, .lvt_vector = 0, .lvt_reg = LAPIC_EXT_LVT3, + .lvt_desc = "ELVT3", }, }; @@ -1890,18 +1902,34 @@ dump_mask(const char *prefix, uint32_t v, int base) /* Show info from the lapic regs for this CPU. */ DB_SHOW_COMMAND_FLAGS(lapic, db_show_lapic, DB_CMD_MEMSAFE) { - uint32_t v; + const struct lvt *l; + int elvt_count, lvts_count, i; + uint32_t v, vr; db_printf("lapic ID = %d\n", lapic_id()); v = lapic_read32(LAPIC_VERSION); - db_printf("version = %d.%d\n", (v & APIC_VER_VERSION) >> 4, - v & 0xf); + db_printf("version = %d.%d (%#x) \n", (v & APIC_VER_VERSION) >> 4, + v & 0xf, v); db_printf("max LVT = %d\n", lapic_maxlvt(v)); - v = lapic_read32(LAPIC_SVR); - db_printf("SVR = %02x (%s)\n", v & APIC_SVR_VECTOR, - v & APIC_SVR_ENABLE ? "enabled" : "disabled"); + vr = lapic_read32(LAPIC_SVR); + db_printf("SVR = %02x (%s)\n", vr & APIC_SVR_VECTOR, + vr & APIC_SVR_ENABLE ? "enabled" : "disabled"); db_printf("TPR = %02x\n", lapic_read32(LAPIC_TPR)); + lvts_count = min(nitems(lvts), lapic_maxlvt(v) + 1); + for (i = 0; i < lvts_count; i++) { + l = &lvts[i]; + db_printf("LVT%d (reg %#x %-5s) = %#010x\n", i, l->lvt_reg, + l->lvt_desc, lapic_read32(l->lvt_reg)); + } + + elvt_count = amd_read_elvt_count(); + for (i = 0; i < elvt_count; i++) { + l = &elvts[i]; + db_printf("ELVT%d (reg %#x %-5s) = %#010x\n", i, l->lvt_reg, + l->lvt_desc, lapic_read32(l->lvt_reg)); + } + #define dump_field(prefix, regn, index) \ dump_mask(__XSTRING(prefix ## index), \ lapic_read32(LAPIC_ ## regn ## index), \