Using designated initializers for feat_names allows us to omit NULL entries, and makes mistakes easier to spot (especially when cherry-picking or merging commits).
Arrays that have very few entries were changed to have a designator for every element. Arrays that have almost every item present were changed to have one designator every 4 entries. Arrays that had only NULL entries had the initializers completely removed. Signed-off-by: Eduardo Habkost <ehabk...@redhat.com> --- target/i386/cpu.c | 215 ++++++++++++++++++------------------------------------ 1 file changed, 73 insertions(+), 142 deletions(-) diff --git a/target/i386/cpu.c b/target/i386/cpu.c index 69676e13e1..9da5915dde 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -268,28 +268,28 @@ typedef struct FeatureWordInfo { static FeatureWordInfo feature_word_info[FEATURE_WORDS] = { [FEAT_1_EDX] = { .feat_names = { - "fpu", "vme", "de", "pse", - "tsc", "msr", "pae", "mce", - "cx8", "apic", NULL, "sep", - "mtrr", "pge", "mca", "cmov", - "pat", "pse36", "pn" /* Intel psn */, "clflush" /* Intel clfsh */, - NULL, "ds" /* Intel dts */, "acpi", "mmx", - "fxsr", "sse", "sse2", "ss", - "ht" /* Intel htt */, "tm", "ia64", "pbe", + [0] = "fpu", "vme", "de", "pse", + [4] = "tsc", "msr", "pae", "mce", + [8] = "cx8", "apic", NULL, "sep", + [12] = "mtrr", "pge", "mca", "cmov", + [16] = "pat", "pse36", "pn", "clflush", + [20] = NULL, "ds" /* Intel dts */, "acpi", "mmx", + [24] = "fxsr", "sse", "sse2", "ss", + [28] = "ht", "tm", "ia64", "pbe", }, .cpuid_eax = 1, .cpuid_reg = R_EDX, .tcg_features = TCG_FEATURES, }, [FEAT_1_ECX] = { .feat_names = { - "pni" /* Intel,AMD sse3 */, "pclmulqdq", "dtes64", "monitor", - "ds-cpl", "vmx", "smx", "est", - "tm2", "ssse3", "cid", NULL, - "fma", "cx16", "xtpr", "pdcm", - NULL, "pcid", "dca", "sse4.1", - "sse4.2", "x2apic", "movbe", "popcnt", - "tsc-deadline", "aes", "xsave", "osxsave", - "avx", "f16c", "rdrand", "hypervisor", + [0] = "pni" /* Intel,AMD sse3 */, "pclmulqdq", "dtes64", "monitor", + [4] = "ds-cpl", "vmx", "smx", "est", + [8] = "tm2", "ssse3", "cid", NULL, + [12] = "fma", "cx16", "xtpr", "pdcm", + [16] = NULL, "pcid", "dca", "sse4.1", + [20] = "sse4.2", "x2apic", "movbe", "popcnt", + [24] = "tsc-deadline", "aes", "xsave", "osxsave", + [28] = "avx", "f16c", "rdrand", "hypervisor", }, .cpuid_eax = 1, .cpuid_reg = R_ECX, .tcg_features = TCG_EXT_FEATURES, @@ -301,131 +301,87 @@ static FeatureWordInfo feature_word_info[FEATURE_WORDS] = { */ [FEAT_8000_0001_EDX] = { .feat_names = { - NULL /* fpu */, NULL /* vme */, NULL /* de */, NULL /* pse */, - NULL /* tsc */, NULL /* msr */, NULL /* pae */, NULL /* mce */, - NULL /* cx8 */, NULL /* apic */, NULL, "syscall", - NULL /* mtrr */, NULL /* pge */, NULL /* mca */, NULL /* cmov */, - NULL /* pat */, NULL /* pse36 */, NULL, NULL /* Linux mp */, - "nx", NULL, "mmxext", NULL /* mmx */, - NULL /* fxsr */, "fxsr-opt", "pdpe1gb", "rdtscp", - NULL, "lm", "3dnowext", "3dnow", + [11] = "syscall", + [20] = "nx", + [22] = "mmxext", + [25] = "fxsr-opt", + [26] = "pdpe1gb", + [27] = "rdtscp", + [29] = "lm", + [30] = "3dnowext", + [31] = "3dnow", }, .cpuid_eax = 0x80000001, .cpuid_reg = R_EDX, .tcg_features = TCG_EXT2_FEATURES, }, [FEAT_8000_0001_ECX] = { .feat_names = { - "lahf-lm", "cmp-legacy", "svm", "extapic", - "cr8legacy", "abm", "sse4a", "misalignsse", - "3dnowprefetch", "osvw", "ibs", "xop", - "skinit", "wdt", NULL, "lwp", - "fma4", "tce", NULL, "nodeid-msr", - NULL, "tbm", "topoext", "perfctr-core", - "perfctr-nb", NULL, NULL, NULL, - NULL, NULL, NULL, NULL, + [0] = "lahf-lm", "cmp-legacy", "svm", "extapic", + [4] = "cr8legacy", "abm", "sse4a", "misalignsse", + [8] = "3dnowprefetch", "osvw", "ibs", "xop", + [12] = "skinit", "wdt", NULL, "lwp", + [16] = "fma4", "tce", NULL, "nodeid-msr", + [20] = NULL, "tbm", "topoext", "perfctr-core", + [24] = "perfctr-nb", NULL, NULL, NULL, }, .cpuid_eax = 0x80000001, .cpuid_reg = R_ECX, .tcg_features = TCG_EXT3_FEATURES, }, [FEAT_C000_0001_EDX] = { .feat_names = { - NULL, NULL, "xstore", "xstore-en", - NULL, NULL, "xcrypt", "xcrypt-en", - "ace2", "ace2-en", "phe", "phe-en", - "pmm", "pmm-en", NULL, NULL, - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, + [0] = NULL, NULL, "xstore", "xstore-en", + [4] = NULL, NULL, "xcrypt", "xcrypt-en", + [8] = "ace2", "ace2-en", "phe", "phe-en", + [12] = "pmm", "pmm-en", NULL, NULL, }, .cpuid_eax = 0xC0000001, .cpuid_reg = R_EDX, .tcg_features = TCG_EXT4_FEATURES, }, [FEAT_KVM] = { .feat_names = { - "kvmclock", "kvm-nopiodelay", "kvm-mmu", "kvmclock", - "kvm-asyncpf", "kvm-steal-time", "kvm-pv-eoi", "kvm-pv-unhalt", - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - "kvmclock-stable-bit", NULL, NULL, NULL, - NULL, NULL, NULL, NULL, + [KVM_FEATURE_CLOCKSOURCE] = "kvmclock", + [KVM_FEATURE_NOP_IO_DELAY] = "kvm-nopiodelay", + [KVM_FEATURE_MMU_OP] = "kvm-mmu", + [KVM_FEATURE_CLOCKSOURCE2] = "kvmclock", + [KVM_FEATURE_ASYNC_PF] = "kvm-asyncpf", + [KVM_FEATURE_STEAL_TIME] = "kvm-steal-time", + [KVM_FEATURE_PV_EOI] = "kvm-pv-eoi", + [KVM_FEATURE_PV_UNHALT] = "kvm-pv-unhalt", + [KVM_FEATURE_CLOCKSOURCE_STABLE_BIT] = "kvmclock-stable-bit", }, .cpuid_eax = KVM_CPUID_FEATURES, .cpuid_reg = R_EAX, .tcg_features = TCG_KVM_FEATURES, }, [FEAT_HYPERV_EAX] = { - .feat_names = { - NULL /* hv_msr_vp_runtime_access */, NULL /* hv_msr_time_refcount_access */, - NULL /* hv_msr_synic_access */, NULL /* hv_msr_stimer_access */, - NULL /* hv_msr_apic_access */, NULL /* hv_msr_hypercall_access */, - NULL /* hv_vpindex_access */, NULL /* hv_msr_reset_access */, - NULL /* hv_msr_stats_access */, NULL /* hv_reftsc_access */, - NULL /* hv_msr_idle_access */, NULL /* hv_msr_frequency_access */, - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - }, .cpuid_eax = 0x40000003, .cpuid_reg = R_EAX, }, [FEAT_HYPERV_EBX] = { - .feat_names = { - NULL /* hv_create_partitions */, NULL /* hv_access_partition_id */, - NULL /* hv_access_memory_pool */, NULL /* hv_adjust_message_buffers */, - NULL /* hv_post_messages */, NULL /* hv_signal_events */, - NULL /* hv_create_port */, NULL /* hv_connect_port */, - NULL /* hv_access_stats */, NULL, NULL, NULL /* hv_debugging */, - NULL /* hv_cpu_power_management */, NULL /* hv_configure_profiler */, - NULL, NULL, - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - }, .cpuid_eax = 0x40000003, .cpuid_reg = R_EBX, }, [FEAT_HYPERV_EDX] = { - .feat_names = { - NULL /* hv_mwait */, NULL /* hv_guest_debugging */, - NULL /* hv_perf_monitor */, NULL /* hv_cpu_dynamic_part */, - NULL /* hv_hypercall_params_xmm */, NULL /* hv_guest_idle_state */, - NULL, NULL, - NULL, NULL, NULL /* hv_guest_crash_msr */, NULL, - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - }, .cpuid_eax = 0x40000003, .cpuid_reg = R_EDX, }, [FEAT_SVM] = { .feat_names = { - "npt", "lbrv", "svm-lock", "nrip-save", - "tsc-scale", "vmcb-clean", "flushbyasid", "decodeassists", - NULL, NULL, "pause-filter", NULL, - "pfthreshold", NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, + [0] = "npt", "lbrv", "svm-lock", "nrip-save", + [4] = "tsc-scale", "vmcb-clean", "flushbyasid", "decodeassists", + [8] = NULL, NULL, "pause-filter", NULL, + [12] = "pfthreshold", NULL, NULL, NULL, + }, .cpuid_eax = 0x8000000A, .cpuid_reg = R_EDX, .tcg_features = TCG_SVM_FEATURES, }, [FEAT_7_0_EBX] = { .feat_names = { - "fsgsbase", "tsc-adjust", NULL, "bmi1", - "hle", "avx2", NULL, "smep", - "bmi2", "erms", "invpcid", "rtm", - NULL, NULL, "mpx", NULL, - "avx512f", "avx512dq", "rdseed", "adx", - "smap", "avx512ifma", "pcommit", "clflushopt", - "clwb", NULL, "avx512pf", "avx512er", - "avx512cd", "sha-ni", "avx512bw", "avx512vl", + [0] = "fsgsbase", "tsc-adjust", NULL, "bmi1", + [4] = "hle", "avx2", NULL, "smep", + [8] = "bmi2", "erms", "invpcid", "rtm", + [12] = NULL, NULL, "mpx", NULL, + [16] = "avx512f", "avx512dq", "rdseed", "adx", + [20] = "smap", "avx512ifma", "pcommit", "clflushopt", + [24] = "clwb", NULL, "avx512pf", "avx512er", + [28] = "avx512cd", "sha-ni", "avx512bw", "avx512vl", }, .cpuid_eax = 7, .cpuid_needs_ecx = true, .cpuid_ecx = 0, @@ -434,14 +390,13 @@ static FeatureWordInfo feature_word_info[FEATURE_WORDS] = { }, [FEAT_7_0_ECX] = { .feat_names = { - NULL, "avx512vbmi", "umip", "pku", - "ospke", NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - NULL, NULL, "avx512-vpopcntdq", NULL, - "la57", NULL, NULL, NULL, - NULL, NULL, "rdpid", NULL, - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, + [1] = "avx512vbmi", + [2] = "umip", + [3] = "pku", + [4] = "ospke", + [14] = "avx512-vpopcntdq", + [16] = "la57", + [22] = "rdpid", }, .cpuid_eax = 7, .cpuid_needs_ecx = true, .cpuid_ecx = 0, @@ -450,14 +405,8 @@ static FeatureWordInfo feature_word_info[FEATURE_WORDS] = { }, [FEAT_7_0_EDX] = { .feat_names = { - NULL, NULL, "avx512-4vnniw", "avx512-4fmaps", - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, + [2] = "avx512-4vnniw", + [3] = "avx512-4fmaps", }, .cpuid_eax = 7, .cpuid_needs_ecx = true, .cpuid_ecx = 0, @@ -466,14 +415,7 @@ static FeatureWordInfo feature_word_info[FEATURE_WORDS] = { }, [FEAT_8000_0007_EDX] = { .feat_names = { - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - "invtsc", NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, + [8] = "invtsc", }, .cpuid_eax = 0x80000007, .cpuid_reg = R_EDX, @@ -482,14 +424,10 @@ static FeatureWordInfo feature_word_info[FEATURE_WORDS] = { }, [FEAT_XSAVE] = { .feat_names = { - "xsaveopt", "xsavec", "xgetbv1", "xsaves", - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, + [0] = "xsaveopt", + [1] = "xsavec", + [2] = "xgetbv1", + [3] = "xsaves", }, .cpuid_eax = 0xd, .cpuid_needs_ecx = true, .cpuid_ecx = 1, @@ -498,14 +436,7 @@ static FeatureWordInfo feature_word_info[FEATURE_WORDS] = { }, [FEAT_6_EAX] = { .feat_names = { - NULL, NULL, "arat", NULL, - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, + [2] = "arat", }, .cpuid_eax = 6, .cpuid_reg = R_EAX, .tcg_features = TCG_6_EAX_FEATURES, -- 2.13.5