From nobody Thu Jul 23 10:01:20 2026 X-Original-To: dev-commits-src-all@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 4h5RTt00gCz6lWMg for ; Thu, 23 Jul 2026 10:01:22 +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 "YR1" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4h5RTs1QbXz3Wvc for ; Thu, 23 Jul 2026 10:01:21 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1784800881; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=CtryFIt2DeaBNE2NTUsCc17AzzsDgP3wSbKmGcei0JQ=; b=Df66cRAlwf9tqVJhRfYzA1EYKNF6miMwVWiPzUFQJn8A2Nqi0teJP5WEdn20XB/CneZlul eR0WlFfKO7Lh+Pes/fE6FE0wBzkAfg3Z6J0Dezko+wZKAHjrqP0zggedO3QT9OyKsiyQux d9gXUF6hK1K4blijRofXgvkco6evBX42f92+zwBBw2tGi7p9qsd7I7G5pT8XUPjdWocdJo 2iKa61I8IHalLOqWcjQNS7eYRUIYq15a3caTSuFehHqCMKsKgI6wQqpVRWsSYUvNAqUQC2 gUGkX4yylr/n32FcWgVqOkLsgbhRbzwF2UTmKYPUycS7sKtdMhyK2zXkc+dPrw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1784800881; a=rsa-sha256; cv=none; b=FDPbeIKte/zAF/5kQyaUah9En9lrY/i1t6orbYVU+8fGkY+16E7iVeVcTi9fkTqZ5XAv2L ZGSFhIkV8yAQVHFffBEaRe6vQYDCC9NrMnxgqxPM3ZpZs2xN+uWd+WN72LBi23HWzn21Yr Ap0QWICiCx/JnhTmBH+KnQEAi8hZiLIrW+Ub9qaruht6b0jzU+4RlmZFGm5tTXdzfKM3/+ Y523TmBHNb1fHlH7WR1M/ZiURFJ1ji6AoAE7BRzHYQOZLrsuzmd/8M2IJeF9IozaLfaSyT dy87MUoaP8qxyjTGGm4eCIafw0Qc3eudnK7sj8oRt8Dj4BRITT4pV+D3O8UlJg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1784800881; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=CtryFIt2DeaBNE2NTUsCc17AzzsDgP3wSbKmGcei0JQ=; b=K1Sj0GFduP2MIWTa1Uj0ew1OmUSIXYIO4gWuuhrE3I9maeTeD6PXbnhFOR/vRsoXegvbIh yV7w+AiSTDhRGgaLmCNtHaswJnofEoYhm7NNPADVa4l+EDZiWNv9iuehTHuKbJyp4OHTz0 1bPZS/knQJDFTpplIcrC557um46+zXOJJja6Nc3OQlm4fxxubmI38j3sZJwpnrSMS29GCJ C+fyHREfJKwwEx+MxWYgwT8wqFoY2wa3MvOsUxG/fCh5t8mE5cKiUCXxlfGJrvG7a0Yju5 YuG3R2z8hw0ryFNDi97+Nfk4J59/65tYqhgnGhuJCNpWM9zQ5iQ1vZw6BqZNow== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4h5RTs00Jmz10xK for ; Thu, 23 Jul 2026 10:01:21 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3aecc by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 23 Jul 2026 10:01:20 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org Cc: Konstantin Belousov From: Olivier Certner Subject: git: 60d7891a52cd - stable/14 - x86 lapic: Dump LVTs from the ddb show lapic command List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: olce X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 60d7891a52cdd7e34e60d225a785db2efe33fbb6 Auto-Submitted: auto-generated Date: Thu, 23 Jul 2026 10:01:20 +0000 Message-Id: <6a61e670.3aecc.7a9b69d9@gitrepo.freebsd.org> The branch stable/14 has been updated by olce: URL: https://cgit.FreeBSD.org/src/commit/?id=60d7891a52cdd7e34e60d225a785db2efe33fbb6 commit 60d7891a52cdd7e34e60d225a785db2efe33fbb6 Author: Konstantin Belousov AuthorDate: 2026-01-22 18:00:56 +0000 Commit: Olivier Certner CommitDate: 2026-07-23 09:59:17 +0000 x86 lapic: Dump LVTs from the ddb show lapic command (cherry picked from commit dfc4186c6dcf2986b510fac108784011a236554d) (cherry picked from commit 854e0e4803789c669edeff7c31e1ed4fd66e64b7) --- 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 675ec7a9c051..cb045399e3da 100644 --- a/sys/x86/x86/local_apic.c +++ b/sys/x86/x86/local_apic.c @@ -134,6 +134,7 @@ struct lvt { u_int lvt_mode:16; u_int lvt_vector:8; u_int lvt_reg; + const char *lvt_desc; }; struct lapic { @@ -163,6 +164,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] = { @@ -173,6 +175,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, @@ -182,6 +185,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, @@ -191,6 +195,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, @@ -200,6 +205,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, @@ -209,6 +215,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, @@ -218,6 +225,7 @@ static struct lvt lvts[] = { .lvt_mode = APIC_LVT_DM_FIXED, .lvt_vector = APIC_CMC_INT, .lvt_reg = LAPIC_LVT_CMCI, + .lvt_desc = "CMCI", }, }; @@ -231,6 +239,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, @@ -240,6 +249,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, @@ -249,6 +259,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, @@ -258,6 +269,7 @@ static struct lvt elvts[] = { .lvt_mode = APIC_LVT_DM_FIXED, .lvt_vector = 0, .lvt_reg = LAPIC_EXT_LVT3, + .lvt_desc = "ELVT3", }, }; @@ -1972,18 +1984,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), \