diff options
| author | Konstantin Belousov <kib@FreeBSD.org> | 2025-12-09 03:52:04 +0200 |
|---|---|---|
| committer | Konstantin Belousov <kib@FreeBSD.org> | 2026-01-18 21:47:25 +0200 |
| commit | 4938ee8064868f120413405f1b3aa40344a6fabd (patch) | |
| tree | 4d69a67875032ef718dd8b3a9c50b005b63fdb44 | |
| parent | 0ef8f7133d0f1ee28af1689f013f18e002eeae9f (diff) | |
x86/local_apic.c: convert lvts[] and elvts[] arrays to designated initializers
Reviewed by: markj
Tested by: pho
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Differential revision: https://reviews.freebsd.org/D54543
| -rw-r--r-- | sys/x86/x86/local_apic.c | 105 |
1 files changed, 92 insertions, 13 deletions
diff --git a/sys/x86/x86/local_apic.c b/sys/x86/x86/local_apic.c index c1c9029531f5..606c551ed921 100644 --- a/sys/x86/x86/local_apic.c +++ b/sys/x86/x86/local_apic.c @@ -147,22 +147,101 @@ struct lapic { } static *lapics; /* Global defaults for local APIC LVT entries. */ -static struct lvt lvts[APIC_LVT_MAX + 1] = { - { 1, 1, 1, 1, APIC_LVT_DM_EXTINT, 0 }, /* LINT0: masked ExtINT */ - { 1, 1, 0, 1, APIC_LVT_DM_NMI, 0 }, /* LINT1: NMI */ - { 1, 1, 1, 1, APIC_LVT_DM_FIXED, APIC_TIMER_INT }, /* Timer */ - { 1, 1, 0, 1, APIC_LVT_DM_FIXED, APIC_ERROR_INT }, /* Error */ - { 1, 1, 1, 1, APIC_LVT_DM_NMI, 0 }, /* PMC */ - { 1, 1, 1, 1, APIC_LVT_DM_FIXED, APIC_THERMAL_INT }, /* Thermal */ - { 1, 1, 1, 1, APIC_LVT_DM_FIXED, APIC_CMC_INT }, /* CMCI */ +static struct lvt lvts[] = { + /* LINT0: masked ExtINT */ + [APIC_LVT_LINT0] = { + .lvt_edgetrigger = 1, + .lvt_activehi = 1, + .lvt_masked = 1, + .lvt_active = 1, + .lvt_mode = APIC_LVT_DM_EXTINT, + .lvt_vector = 0, + }, + /* LINT1: NMI */ + [APIC_LVT_LINT1] = { + .lvt_edgetrigger = 1, + .lvt_activehi = 1, + .lvt_masked = 0, + .lvt_active = 1, + .lvt_mode = APIC_LVT_DM_NMI, + .lvt_vector = 0, + }, + [APIC_LVT_TIMER] = { + .lvt_edgetrigger = 1, + .lvt_activehi = 1, + .lvt_masked = 1, + .lvt_active = 1, + .lvt_mode = APIC_LVT_DM_FIXED, + .lvt_vector = APIC_TIMER_INT, + }, + [APIC_LVT_ERROR] = { + .lvt_edgetrigger = 1, + .lvt_activehi = 1, + .lvt_masked = 0, + .lvt_active = 1, + .lvt_mode = APIC_LVT_DM_FIXED, + .lvt_vector = APIC_ERROR_INT, + }, + [APIC_LVT_PMC] = { + .lvt_edgetrigger = 1, + .lvt_activehi = 1, + .lvt_masked = 1, + .lvt_active = 1, + .lvt_mode = APIC_LVT_DM_NMI, + .lvt_vector = 0, + }, + [APIC_LVT_THERMAL] = { + .lvt_edgetrigger = 1, + .lvt_activehi = 1, + .lvt_masked = 1, + .lvt_active = 1, + .lvt_mode = APIC_LVT_DM_FIXED, + .lvt_vector = APIC_THERMAL_INT, + }, + [APIC_LVT_CMCI] = { + .lvt_edgetrigger = 1, + .lvt_activehi = 1, + .lvt_masked = 1, + .lvt_active = 1, + .lvt_mode = APIC_LVT_DM_FIXED, + .lvt_vector = APIC_CMC_INT, + }, }; /* Global defaults for AMD local APIC ELVT entries. */ -static struct lvt elvts[APIC_ELVT_MAX + 1] = { - { 1, 1, 1, 0, APIC_LVT_DM_FIXED, 0 }, - { 1, 1, 1, 0, APIC_LVT_DM_FIXED, APIC_CMC_INT }, - { 1, 1, 1, 0, APIC_LVT_DM_FIXED, 0 }, - { 1, 1, 1, 0, APIC_LVT_DM_FIXED, 0 }, +static struct lvt elvts[] = { + [APIC_ELVT_IBS] = { + .lvt_edgetrigger = 1, + .lvt_activehi = 1, + .lvt_masked = 1, + .lvt_active = 0, + .lvt_mode = APIC_LVT_DM_FIXED, + .lvt_vector = 0, + }, + [APIC_ELVT_MCA] = { + .lvt_edgetrigger = 1, + .lvt_activehi = 1, + .lvt_masked = 1, + .lvt_active = 0, + .lvt_mode = APIC_LVT_DM_FIXED, + .lvt_vector = APIC_CMC_INT, + }, + [APIC_ELVT_DEI] = { + .lvt_edgetrigger = 1, + .lvt_activehi = 1, + .lvt_masked = 1, + .lvt_active = 0, + .lvt_mode = APIC_LVT_DM_FIXED, + .lvt_vector = 0, + }, + [APIC_ELVT_SBI] = { + .lvt_edgetrigger = 1, + .lvt_activehi = 1, + .lvt_masked = 1, + .lvt_active = 0, + .lvt_mode = APIC_LVT_DM_FIXED, + .lvt_vector = 0, + }, }; static inthand_t *ioint_handlers[] = { |
