mirror of https://gitee.com/openkylin/linux.git
Merge branch 'x86/cpu' into perf/core, to resolve conflict
Conflicts: arch/x86/events/intel/uncore.c Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
commit
629b3df7ec
|
@ -1875,7 +1875,6 @@ config X86_SMAP
|
||||||
|
|
||||||
config X86_UMIP
|
config X86_UMIP
|
||||||
def_bool y
|
def_bool y
|
||||||
depends on CPU_SUP_INTEL || CPU_SUP_AMD
|
|
||||||
prompt "User Mode Instruction Prevention" if EXPERT
|
prompt "User Mode Instruction Prevention" if EXPERT
|
||||||
---help---
|
---help---
|
||||||
User Mode Instruction Prevention (UMIP) is a security feature in
|
User Mode Instruction Prevention (UMIP) is a security feature in
|
||||||
|
|
|
@ -1064,7 +1064,7 @@ static struct aead_alg aesni_aeads[0];
|
||||||
static struct simd_aead_alg *aesni_simd_aeads[ARRAY_SIZE(aesni_aeads)];
|
static struct simd_aead_alg *aesni_simd_aeads[ARRAY_SIZE(aesni_aeads)];
|
||||||
|
|
||||||
static const struct x86_cpu_id aesni_cpu_id[] = {
|
static const struct x86_cpu_id aesni_cpu_id[] = {
|
||||||
X86_FEATURE_MATCH(X86_FEATURE_AES),
|
X86_MATCH_FEATURE(X86_FEATURE_AES, NULL),
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(x86cpu, aesni_cpu_id);
|
MODULE_DEVICE_TABLE(x86cpu, aesni_cpu_id);
|
||||||
|
|
|
@ -170,7 +170,7 @@ static struct shash_alg alg = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct x86_cpu_id crc32pclmul_cpu_id[] = {
|
static const struct x86_cpu_id crc32pclmul_cpu_id[] = {
|
||||||
X86_FEATURE_MATCH(X86_FEATURE_PCLMULQDQ),
|
X86_MATCH_FEATURE(X86_FEATURE_PCLMULQDQ, NULL),
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(x86cpu, crc32pclmul_cpu_id);
|
MODULE_DEVICE_TABLE(x86cpu, crc32pclmul_cpu_id);
|
||||||
|
|
|
@ -221,7 +221,7 @@ static struct shash_alg alg = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct x86_cpu_id crc32c_cpu_id[] = {
|
static const struct x86_cpu_id crc32c_cpu_id[] = {
|
||||||
X86_FEATURE_MATCH(X86_FEATURE_XMM4_2),
|
X86_MATCH_FEATURE(X86_FEATURE_XMM4_2, NULL),
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(x86cpu, crc32c_cpu_id);
|
MODULE_DEVICE_TABLE(x86cpu, crc32c_cpu_id);
|
||||||
|
|
|
@ -114,7 +114,7 @@ static struct shash_alg alg = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct x86_cpu_id crct10dif_cpu_id[] = {
|
static const struct x86_cpu_id crct10dif_cpu_id[] = {
|
||||||
X86_FEATURE_MATCH(X86_FEATURE_PCLMULQDQ),
|
X86_MATCH_FEATURE(X86_FEATURE_PCLMULQDQ, NULL),
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(x86cpu, crct10dif_cpu_id);
|
MODULE_DEVICE_TABLE(x86cpu, crct10dif_cpu_id);
|
||||||
|
|
|
@ -313,7 +313,7 @@ static struct ahash_alg ghash_async_alg = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct x86_cpu_id pcmul_cpu_id[] = {
|
static const struct x86_cpu_id pcmul_cpu_id[] = {
|
||||||
X86_FEATURE_MATCH(X86_FEATURE_PCLMULQDQ), /* Pickle-Mickle-Duck */
|
X86_MATCH_FEATURE(X86_FEATURE_PCLMULQDQ, NULL), /* Pickle-Mickle-Duck */
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(x86cpu, pcmul_cpu_id);
|
MODULE_DEVICE_TABLE(x86cpu, pcmul_cpu_id);
|
||||||
|
|
|
@ -259,7 +259,7 @@ static int power_cpu_init(unsigned int cpu)
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct x86_cpu_id cpu_match[] = {
|
static const struct x86_cpu_id cpu_match[] = {
|
||||||
{ .vendor = X86_VENDOR_AMD, .family = 0x15 },
|
X86_MATCH_VENDOR_FAM(AMD, 0x15, NULL),
|
||||||
{},
|
{},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -594,63 +594,60 @@ static const struct cstate_model glm_cstates __initconst = {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
#define X86_CSTATES_MODEL(model, states) \
|
|
||||||
{ X86_VENDOR_INTEL, 6, model, X86_FEATURE_ANY, (unsigned long) &(states) }
|
|
||||||
|
|
||||||
static const struct x86_cpu_id intel_cstates_match[] __initconst = {
|
static const struct x86_cpu_id intel_cstates_match[] __initconst = {
|
||||||
X86_CSTATES_MODEL(INTEL_FAM6_NEHALEM, nhm_cstates),
|
X86_MATCH_INTEL_FAM6_MODEL(NEHALEM, &nhm_cstates),
|
||||||
X86_CSTATES_MODEL(INTEL_FAM6_NEHALEM_EP, nhm_cstates),
|
X86_MATCH_INTEL_FAM6_MODEL(NEHALEM_EP, &nhm_cstates),
|
||||||
X86_CSTATES_MODEL(INTEL_FAM6_NEHALEM_EX, nhm_cstates),
|
X86_MATCH_INTEL_FAM6_MODEL(NEHALEM_EX, &nhm_cstates),
|
||||||
|
|
||||||
X86_CSTATES_MODEL(INTEL_FAM6_WESTMERE, nhm_cstates),
|
X86_MATCH_INTEL_FAM6_MODEL(WESTMERE, &nhm_cstates),
|
||||||
X86_CSTATES_MODEL(INTEL_FAM6_WESTMERE_EP, nhm_cstates),
|
X86_MATCH_INTEL_FAM6_MODEL(WESTMERE_EP, &nhm_cstates),
|
||||||
X86_CSTATES_MODEL(INTEL_FAM6_WESTMERE_EX, nhm_cstates),
|
X86_MATCH_INTEL_FAM6_MODEL(WESTMERE_EX, &nhm_cstates),
|
||||||
|
|
||||||
X86_CSTATES_MODEL(INTEL_FAM6_SANDYBRIDGE, snb_cstates),
|
X86_MATCH_INTEL_FAM6_MODEL(SANDYBRIDGE, &snb_cstates),
|
||||||
X86_CSTATES_MODEL(INTEL_FAM6_SANDYBRIDGE_X, snb_cstates),
|
X86_MATCH_INTEL_FAM6_MODEL(SANDYBRIDGE_X, &snb_cstates),
|
||||||
|
|
||||||
X86_CSTATES_MODEL(INTEL_FAM6_IVYBRIDGE, snb_cstates),
|
X86_MATCH_INTEL_FAM6_MODEL(IVYBRIDGE, &snb_cstates),
|
||||||
X86_CSTATES_MODEL(INTEL_FAM6_IVYBRIDGE_X, snb_cstates),
|
X86_MATCH_INTEL_FAM6_MODEL(IVYBRIDGE_X, &snb_cstates),
|
||||||
|
|
||||||
X86_CSTATES_MODEL(INTEL_FAM6_HASWELL, snb_cstates),
|
X86_MATCH_INTEL_FAM6_MODEL(HASWELL, &snb_cstates),
|
||||||
X86_CSTATES_MODEL(INTEL_FAM6_HASWELL_X, snb_cstates),
|
X86_MATCH_INTEL_FAM6_MODEL(HASWELL_X, &snb_cstates),
|
||||||
X86_CSTATES_MODEL(INTEL_FAM6_HASWELL_G, snb_cstates),
|
X86_MATCH_INTEL_FAM6_MODEL(HASWELL_G, &snb_cstates),
|
||||||
|
|
||||||
X86_CSTATES_MODEL(INTEL_FAM6_HASWELL_L, hswult_cstates),
|
X86_MATCH_INTEL_FAM6_MODEL(HASWELL_L, &hswult_cstates),
|
||||||
|
|
||||||
X86_CSTATES_MODEL(INTEL_FAM6_ATOM_SILVERMONT, slm_cstates),
|
X86_MATCH_INTEL_FAM6_MODEL(ATOM_SILVERMONT, &slm_cstates),
|
||||||
X86_CSTATES_MODEL(INTEL_FAM6_ATOM_SILVERMONT_D, slm_cstates),
|
X86_MATCH_INTEL_FAM6_MODEL(ATOM_SILVERMONT_D, &slm_cstates),
|
||||||
X86_CSTATES_MODEL(INTEL_FAM6_ATOM_AIRMONT, slm_cstates),
|
X86_MATCH_INTEL_FAM6_MODEL(ATOM_AIRMONT, &slm_cstates),
|
||||||
|
|
||||||
X86_CSTATES_MODEL(INTEL_FAM6_BROADWELL, snb_cstates),
|
X86_MATCH_INTEL_FAM6_MODEL(BROADWELL, &snb_cstates),
|
||||||
X86_CSTATES_MODEL(INTEL_FAM6_BROADWELL_D, snb_cstates),
|
X86_MATCH_INTEL_FAM6_MODEL(BROADWELL_D, &snb_cstates),
|
||||||
X86_CSTATES_MODEL(INTEL_FAM6_BROADWELL_G, snb_cstates),
|
X86_MATCH_INTEL_FAM6_MODEL(BROADWELL_G, &snb_cstates),
|
||||||
X86_CSTATES_MODEL(INTEL_FAM6_BROADWELL_X, snb_cstates),
|
X86_MATCH_INTEL_FAM6_MODEL(BROADWELL_X, &snb_cstates),
|
||||||
|
|
||||||
X86_CSTATES_MODEL(INTEL_FAM6_SKYLAKE_L, snb_cstates),
|
X86_MATCH_INTEL_FAM6_MODEL(SKYLAKE_L, &snb_cstates),
|
||||||
X86_CSTATES_MODEL(INTEL_FAM6_SKYLAKE, snb_cstates),
|
X86_MATCH_INTEL_FAM6_MODEL(SKYLAKE, &snb_cstates),
|
||||||
X86_CSTATES_MODEL(INTEL_FAM6_SKYLAKE_X, snb_cstates),
|
X86_MATCH_INTEL_FAM6_MODEL(SKYLAKE_X, &snb_cstates),
|
||||||
|
|
||||||
X86_CSTATES_MODEL(INTEL_FAM6_KABYLAKE_L, hswult_cstates),
|
X86_MATCH_INTEL_FAM6_MODEL(KABYLAKE_L, &hswult_cstates),
|
||||||
X86_CSTATES_MODEL(INTEL_FAM6_KABYLAKE, hswult_cstates),
|
X86_MATCH_INTEL_FAM6_MODEL(KABYLAKE, &hswult_cstates),
|
||||||
X86_CSTATES_MODEL(INTEL_FAM6_COMETLAKE_L, hswult_cstates),
|
X86_MATCH_INTEL_FAM6_MODEL(COMETLAKE_L, &hswult_cstates),
|
||||||
X86_CSTATES_MODEL(INTEL_FAM6_COMETLAKE, hswult_cstates),
|
X86_MATCH_INTEL_FAM6_MODEL(COMETLAKE, &hswult_cstates),
|
||||||
|
|
||||||
X86_CSTATES_MODEL(INTEL_FAM6_CANNONLAKE_L, cnl_cstates),
|
X86_MATCH_INTEL_FAM6_MODEL(CANNONLAKE_L, &cnl_cstates),
|
||||||
|
|
||||||
X86_CSTATES_MODEL(INTEL_FAM6_XEON_PHI_KNL, knl_cstates),
|
X86_MATCH_INTEL_FAM6_MODEL(XEON_PHI_KNL, &knl_cstates),
|
||||||
X86_CSTATES_MODEL(INTEL_FAM6_XEON_PHI_KNM, knl_cstates),
|
X86_MATCH_INTEL_FAM6_MODEL(XEON_PHI_KNM, &knl_cstates),
|
||||||
|
|
||||||
X86_CSTATES_MODEL(INTEL_FAM6_ATOM_GOLDMONT, glm_cstates),
|
X86_MATCH_INTEL_FAM6_MODEL(ATOM_GOLDMONT, &glm_cstates),
|
||||||
X86_CSTATES_MODEL(INTEL_FAM6_ATOM_GOLDMONT_D, glm_cstates),
|
X86_MATCH_INTEL_FAM6_MODEL(ATOM_GOLDMONT_D, &glm_cstates),
|
||||||
X86_CSTATES_MODEL(INTEL_FAM6_ATOM_GOLDMONT_PLUS, glm_cstates),
|
X86_MATCH_INTEL_FAM6_MODEL(ATOM_GOLDMONT_PLUS, &glm_cstates),
|
||||||
X86_CSTATES_MODEL(INTEL_FAM6_ATOM_TREMONT_D, glm_cstates),
|
X86_MATCH_INTEL_FAM6_MODEL(ATOM_TREMONT_D, &glm_cstates),
|
||||||
X86_CSTATES_MODEL(INTEL_FAM6_ATOM_TREMONT, glm_cstates),
|
X86_MATCH_INTEL_FAM6_MODEL(ATOM_TREMONT, &glm_cstates),
|
||||||
|
|
||||||
X86_CSTATES_MODEL(INTEL_FAM6_ICELAKE_L, icl_cstates),
|
X86_MATCH_INTEL_FAM6_MODEL(ICELAKE_L, &icl_cstates),
|
||||||
X86_CSTATES_MODEL(INTEL_FAM6_ICELAKE, icl_cstates),
|
X86_MATCH_INTEL_FAM6_MODEL(ICELAKE, &icl_cstates),
|
||||||
X86_CSTATES_MODEL(INTEL_FAM6_TIGERLAKE_L, icl_cstates),
|
X86_MATCH_INTEL_FAM6_MODEL(TIGERLAKE_L, &icl_cstates),
|
||||||
X86_CSTATES_MODEL(INTEL_FAM6_TIGERLAKE, icl_cstates),
|
X86_MATCH_INTEL_FAM6_MODEL(TIGERLAKE, &icl_cstates),
|
||||||
{ },
|
{ },
|
||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(x86cpu, intel_cstates_match);
|
MODULE_DEVICE_TABLE(x86cpu, intel_cstates_match);
|
||||||
|
|
|
@ -668,9 +668,6 @@ static int __init init_rapl_pmus(void)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define X86_RAPL_MODEL_MATCH(model, init) \
|
|
||||||
{ X86_VENDOR_INTEL, 6, model, X86_FEATURE_ANY, (unsigned long)&init }
|
|
||||||
|
|
||||||
static struct rapl_model model_snb = {
|
static struct rapl_model model_snb = {
|
||||||
.events = BIT(PERF_RAPL_PP0) |
|
.events = BIT(PERF_RAPL_PP0) |
|
||||||
BIT(PERF_RAPL_PKG) |
|
BIT(PERF_RAPL_PKG) |
|
||||||
|
@ -716,36 +713,35 @@ static struct rapl_model model_skl = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct x86_cpu_id rapl_model_match[] __initconst = {
|
static const struct x86_cpu_id rapl_model_match[] __initconst = {
|
||||||
X86_RAPL_MODEL_MATCH(INTEL_FAM6_SANDYBRIDGE, model_snb),
|
X86_MATCH_INTEL_FAM6_MODEL(SANDYBRIDGE, &model_snb),
|
||||||
X86_RAPL_MODEL_MATCH(INTEL_FAM6_SANDYBRIDGE_X, model_snbep),
|
X86_MATCH_INTEL_FAM6_MODEL(SANDYBRIDGE_X, &model_snbep),
|
||||||
X86_RAPL_MODEL_MATCH(INTEL_FAM6_IVYBRIDGE, model_snb),
|
X86_MATCH_INTEL_FAM6_MODEL(IVYBRIDGE, &model_snb),
|
||||||
X86_RAPL_MODEL_MATCH(INTEL_FAM6_IVYBRIDGE_X, model_snbep),
|
X86_MATCH_INTEL_FAM6_MODEL(IVYBRIDGE_X, &model_snbep),
|
||||||
X86_RAPL_MODEL_MATCH(INTEL_FAM6_HASWELL, model_hsw),
|
X86_MATCH_INTEL_FAM6_MODEL(HASWELL, &model_hsw),
|
||||||
X86_RAPL_MODEL_MATCH(INTEL_FAM6_HASWELL_X, model_hsx),
|
X86_MATCH_INTEL_FAM6_MODEL(HASWELL_X, &model_hsx),
|
||||||
X86_RAPL_MODEL_MATCH(INTEL_FAM6_HASWELL_L, model_hsw),
|
X86_MATCH_INTEL_FAM6_MODEL(HASWELL_L, &model_hsw),
|
||||||
X86_RAPL_MODEL_MATCH(INTEL_FAM6_HASWELL_G, model_hsw),
|
X86_MATCH_INTEL_FAM6_MODEL(HASWELL_G, &model_hsw),
|
||||||
X86_RAPL_MODEL_MATCH(INTEL_FAM6_BROADWELL, model_hsw),
|
X86_MATCH_INTEL_FAM6_MODEL(BROADWELL, &model_hsw),
|
||||||
X86_RAPL_MODEL_MATCH(INTEL_FAM6_BROADWELL_G, model_hsw),
|
X86_MATCH_INTEL_FAM6_MODEL(BROADWELL_G, &model_hsw),
|
||||||
X86_RAPL_MODEL_MATCH(INTEL_FAM6_BROADWELL_X, model_hsx),
|
X86_MATCH_INTEL_FAM6_MODEL(BROADWELL_X, &model_hsx),
|
||||||
X86_RAPL_MODEL_MATCH(INTEL_FAM6_BROADWELL_D, model_hsx),
|
X86_MATCH_INTEL_FAM6_MODEL(BROADWELL_D, &model_hsx),
|
||||||
X86_RAPL_MODEL_MATCH(INTEL_FAM6_XEON_PHI_KNL, model_knl),
|
X86_MATCH_INTEL_FAM6_MODEL(XEON_PHI_KNL, &model_knl),
|
||||||
X86_RAPL_MODEL_MATCH(INTEL_FAM6_XEON_PHI_KNM, model_knl),
|
X86_MATCH_INTEL_FAM6_MODEL(XEON_PHI_KNM, &model_knl),
|
||||||
X86_RAPL_MODEL_MATCH(INTEL_FAM6_SKYLAKE_L, model_skl),
|
X86_MATCH_INTEL_FAM6_MODEL(SKYLAKE_L, &model_skl),
|
||||||
X86_RAPL_MODEL_MATCH(INTEL_FAM6_SKYLAKE, model_skl),
|
X86_MATCH_INTEL_FAM6_MODEL(SKYLAKE, &model_skl),
|
||||||
X86_RAPL_MODEL_MATCH(INTEL_FAM6_SKYLAKE_X, model_hsx),
|
X86_MATCH_INTEL_FAM6_MODEL(SKYLAKE_X, &model_hsx),
|
||||||
X86_RAPL_MODEL_MATCH(INTEL_FAM6_KABYLAKE_L, model_skl),
|
X86_MATCH_INTEL_FAM6_MODEL(KABYLAKE_L, &model_skl),
|
||||||
X86_RAPL_MODEL_MATCH(INTEL_FAM6_KABYLAKE, model_skl),
|
X86_MATCH_INTEL_FAM6_MODEL(KABYLAKE, &model_skl),
|
||||||
X86_RAPL_MODEL_MATCH(INTEL_FAM6_CANNONLAKE_L, model_skl),
|
X86_MATCH_INTEL_FAM6_MODEL(CANNONLAKE_L, &model_skl),
|
||||||
X86_RAPL_MODEL_MATCH(INTEL_FAM6_ATOM_GOLDMONT, model_hsw),
|
X86_MATCH_INTEL_FAM6_MODEL(ATOM_GOLDMONT, &model_hsw),
|
||||||
X86_RAPL_MODEL_MATCH(INTEL_FAM6_ATOM_GOLDMONT_D, model_hsw),
|
X86_MATCH_INTEL_FAM6_MODEL(ATOM_GOLDMONT_D, &model_hsw),
|
||||||
X86_RAPL_MODEL_MATCH(INTEL_FAM6_ATOM_GOLDMONT_PLUS, model_hsw),
|
X86_MATCH_INTEL_FAM6_MODEL(ATOM_GOLDMONT_PLUS, &model_hsw),
|
||||||
X86_RAPL_MODEL_MATCH(INTEL_FAM6_ICELAKE_L, model_skl),
|
X86_MATCH_INTEL_FAM6_MODEL(ICELAKE_L, &model_skl),
|
||||||
X86_RAPL_MODEL_MATCH(INTEL_FAM6_ICELAKE, model_skl),
|
X86_MATCH_INTEL_FAM6_MODEL(ICELAKE, &model_skl),
|
||||||
X86_RAPL_MODEL_MATCH(INTEL_FAM6_COMETLAKE_L, model_skl),
|
X86_MATCH_INTEL_FAM6_MODEL(COMETLAKE_L, &model_skl),
|
||||||
X86_RAPL_MODEL_MATCH(INTEL_FAM6_COMETLAKE, model_skl),
|
X86_MATCH_INTEL_FAM6_MODEL(COMETLAKE, &model_skl),
|
||||||
{},
|
{},
|
||||||
};
|
};
|
||||||
|
|
||||||
MODULE_DEVICE_TABLE(x86cpu, rapl_model_match);
|
MODULE_DEVICE_TABLE(x86cpu, rapl_model_match);
|
||||||
|
|
||||||
static int __init rapl_pmu_init(void)
|
static int __init rapl_pmu_init(void)
|
||||||
|
|
|
@ -1392,10 +1392,6 @@ static int __init uncore_mmio_init(void)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#define X86_UNCORE_MODEL_MATCH(model, init) \
|
|
||||||
{ X86_VENDOR_INTEL, 6, model, X86_FEATURE_ANY, (unsigned long)&init }
|
|
||||||
|
|
||||||
struct intel_uncore_init_fun {
|
struct intel_uncore_init_fun {
|
||||||
void (*cpu_init)(void);
|
void (*cpu_init)(void);
|
||||||
int (*pci_init)(void);
|
int (*pci_init)(void);
|
||||||
|
@ -1487,40 +1483,39 @@ static const struct intel_uncore_init_fun snr_uncore_init __initconst = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct x86_cpu_id intel_uncore_match[] __initconst = {
|
static const struct x86_cpu_id intel_uncore_match[] __initconst = {
|
||||||
X86_UNCORE_MODEL_MATCH(INTEL_FAM6_NEHALEM_EP, nhm_uncore_init),
|
X86_MATCH_INTEL_FAM6_MODEL(NEHALEM_EP, &nhm_uncore_init),
|
||||||
X86_UNCORE_MODEL_MATCH(INTEL_FAM6_NEHALEM, nhm_uncore_init),
|
X86_MATCH_INTEL_FAM6_MODEL(NEHALEM, &nhm_uncore_init),
|
||||||
X86_UNCORE_MODEL_MATCH(INTEL_FAM6_WESTMERE, nhm_uncore_init),
|
X86_MATCH_INTEL_FAM6_MODEL(WESTMERE, &nhm_uncore_init),
|
||||||
X86_UNCORE_MODEL_MATCH(INTEL_FAM6_WESTMERE_EP, nhm_uncore_init),
|
X86_MATCH_INTEL_FAM6_MODEL(WESTMERE_EP, &nhm_uncore_init),
|
||||||
X86_UNCORE_MODEL_MATCH(INTEL_FAM6_SANDYBRIDGE, snb_uncore_init),
|
X86_MATCH_INTEL_FAM6_MODEL(SANDYBRIDGE, &snb_uncore_init),
|
||||||
X86_UNCORE_MODEL_MATCH(INTEL_FAM6_IVYBRIDGE, ivb_uncore_init),
|
X86_MATCH_INTEL_FAM6_MODEL(IVYBRIDGE, &ivb_uncore_init),
|
||||||
X86_UNCORE_MODEL_MATCH(INTEL_FAM6_HASWELL, hsw_uncore_init),
|
X86_MATCH_INTEL_FAM6_MODEL(HASWELL, &hsw_uncore_init),
|
||||||
X86_UNCORE_MODEL_MATCH(INTEL_FAM6_HASWELL_L, hsw_uncore_init),
|
X86_MATCH_INTEL_FAM6_MODEL(HASWELL_L, &hsw_uncore_init),
|
||||||
X86_UNCORE_MODEL_MATCH(INTEL_FAM6_HASWELL_G, hsw_uncore_init),
|
X86_MATCH_INTEL_FAM6_MODEL(HASWELL_G, &hsw_uncore_init),
|
||||||
X86_UNCORE_MODEL_MATCH(INTEL_FAM6_BROADWELL, bdw_uncore_init),
|
X86_MATCH_INTEL_FAM6_MODEL(BROADWELL, &bdw_uncore_init),
|
||||||
X86_UNCORE_MODEL_MATCH(INTEL_FAM6_BROADWELL_G, bdw_uncore_init),
|
X86_MATCH_INTEL_FAM6_MODEL(BROADWELL_G, &bdw_uncore_init),
|
||||||
X86_UNCORE_MODEL_MATCH(INTEL_FAM6_SANDYBRIDGE_X, snbep_uncore_init),
|
X86_MATCH_INTEL_FAM6_MODEL(SANDYBRIDGE_X, &snbep_uncore_init),
|
||||||
X86_UNCORE_MODEL_MATCH(INTEL_FAM6_NEHALEM_EX, nhmex_uncore_init),
|
X86_MATCH_INTEL_FAM6_MODEL(NEHALEM_EX, &nhmex_uncore_init),
|
||||||
X86_UNCORE_MODEL_MATCH(INTEL_FAM6_WESTMERE_EX, nhmex_uncore_init),
|
X86_MATCH_INTEL_FAM6_MODEL(WESTMERE_EX, &nhmex_uncore_init),
|
||||||
X86_UNCORE_MODEL_MATCH(INTEL_FAM6_IVYBRIDGE_X, ivbep_uncore_init),
|
X86_MATCH_INTEL_FAM6_MODEL(IVYBRIDGE_X, &ivbep_uncore_init),
|
||||||
X86_UNCORE_MODEL_MATCH(INTEL_FAM6_HASWELL_X, hswep_uncore_init),
|
X86_MATCH_INTEL_FAM6_MODEL(HASWELL_X, &hswep_uncore_init),
|
||||||
X86_UNCORE_MODEL_MATCH(INTEL_FAM6_BROADWELL_X, bdx_uncore_init),
|
X86_MATCH_INTEL_FAM6_MODEL(BROADWELL_X, &bdx_uncore_init),
|
||||||
X86_UNCORE_MODEL_MATCH(INTEL_FAM6_BROADWELL_D, bdx_uncore_init),
|
X86_MATCH_INTEL_FAM6_MODEL(BROADWELL_D, &bdx_uncore_init),
|
||||||
X86_UNCORE_MODEL_MATCH(INTEL_FAM6_XEON_PHI_KNL, knl_uncore_init),
|
X86_MATCH_INTEL_FAM6_MODEL(XEON_PHI_KNL, &knl_uncore_init),
|
||||||
X86_UNCORE_MODEL_MATCH(INTEL_FAM6_XEON_PHI_KNM, knl_uncore_init),
|
X86_MATCH_INTEL_FAM6_MODEL(XEON_PHI_KNM, &knl_uncore_init),
|
||||||
X86_UNCORE_MODEL_MATCH(INTEL_FAM6_SKYLAKE, skl_uncore_init),
|
X86_MATCH_INTEL_FAM6_MODEL(SKYLAKE, &skl_uncore_init),
|
||||||
X86_UNCORE_MODEL_MATCH(INTEL_FAM6_SKYLAKE_L, skl_uncore_init),
|
X86_MATCH_INTEL_FAM6_MODEL(SKYLAKE_L, &skl_uncore_init),
|
||||||
X86_UNCORE_MODEL_MATCH(INTEL_FAM6_SKYLAKE_X, skx_uncore_init),
|
X86_MATCH_INTEL_FAM6_MODEL(SKYLAKE_X, &skx_uncore_init),
|
||||||
X86_UNCORE_MODEL_MATCH(INTEL_FAM6_KABYLAKE_L, skl_uncore_init),
|
X86_MATCH_INTEL_FAM6_MODEL(KABYLAKE_L, &skl_uncore_init),
|
||||||
X86_UNCORE_MODEL_MATCH(INTEL_FAM6_KABYLAKE, skl_uncore_init),
|
X86_MATCH_INTEL_FAM6_MODEL(KABYLAKE, &skl_uncore_init),
|
||||||
X86_UNCORE_MODEL_MATCH(INTEL_FAM6_ICELAKE_L, icl_uncore_init),
|
X86_MATCH_INTEL_FAM6_MODEL(ICELAKE_L, &icl_uncore_init),
|
||||||
X86_UNCORE_MODEL_MATCH(INTEL_FAM6_ICELAKE_NNPI, icl_uncore_init),
|
X86_MATCH_INTEL_FAM6_MODEL(ICELAKE_NNPI, &icl_uncore_init),
|
||||||
X86_UNCORE_MODEL_MATCH(INTEL_FAM6_ICELAKE, icl_uncore_init),
|
X86_MATCH_INTEL_FAM6_MODEL(ICELAKE, &icl_uncore_init),
|
||||||
X86_UNCORE_MODEL_MATCH(INTEL_FAM6_TIGERLAKE_L, tgl_l_uncore_init),
|
X86_MATCH_INTEL_FAM6_MODEL(TIGERLAKE_L, &tgl_l_uncore_init),
|
||||||
X86_UNCORE_MODEL_MATCH(INTEL_FAM6_TIGERLAKE, tgl_uncore_init),
|
X86_MATCH_INTEL_FAM6_MODEL(TIGERLAKE, &tgl_uncore_init),
|
||||||
X86_UNCORE_MODEL_MATCH(INTEL_FAM6_ATOM_TREMONT_D, snr_uncore_init),
|
X86_MATCH_INTEL_FAM6_MODEL(ATOM_TREMONT_D, &snr_uncore_init),
|
||||||
{},
|
{},
|
||||||
};
|
};
|
||||||
|
|
||||||
MODULE_DEVICE_TABLE(x86cpu, intel_uncore_match);
|
MODULE_DEVICE_TABLE(x86cpu, intel_uncore_match);
|
||||||
|
|
||||||
static int __init intel_uncore_init(void)
|
static int __init intel_uncore_init(void)
|
||||||
|
|
|
@ -12,7 +12,6 @@ struct amd_nb_bus_dev_range {
|
||||||
u8 dev_limit;
|
u8 dev_limit;
|
||||||
};
|
};
|
||||||
|
|
||||||
extern const struct pci_device_id amd_nb_misc_ids[];
|
|
||||||
extern const struct amd_nb_bus_dev_range amd_nb_bus_dev_ranges[];
|
extern const struct amd_nb_bus_dev_range amd_nb_bus_dev_ranges[];
|
||||||
|
|
||||||
extern bool early_is_amd_nb(u32 value);
|
extern bool early_is_amd_nb(u32 value);
|
||||||
|
|
|
@ -5,9 +5,139 @@
|
||||||
/*
|
/*
|
||||||
* Declare drivers belonging to specific x86 CPUs
|
* Declare drivers belonging to specific x86 CPUs
|
||||||
* Similar in spirit to pci_device_id and related PCI functions
|
* Similar in spirit to pci_device_id and related PCI functions
|
||||||
|
*
|
||||||
|
* The wildcard initializers are in mod_devicetable.h because
|
||||||
|
* file2alias needs them. Sigh.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/mod_devicetable.h>
|
#include <linux/mod_devicetable.h>
|
||||||
|
/* Get the INTEL_FAM* model defines */
|
||||||
|
#include <asm/intel-family.h>
|
||||||
|
/* And the X86_VENDOR_* ones */
|
||||||
|
#include <asm/processor.h>
|
||||||
|
|
||||||
|
/* Centaur FAM6 models */
|
||||||
|
#define X86_CENTAUR_FAM6_C7_A 0xa
|
||||||
|
#define X86_CENTAUR_FAM6_C7_D 0xd
|
||||||
|
#define X86_CENTAUR_FAM6_NANO 0xf
|
||||||
|
|
||||||
|
/**
|
||||||
|
* X86_MATCH_VENDOR_FAM_MODEL_FEATURE - Base macro for CPU matching
|
||||||
|
* @_vendor: The vendor name, e.g. INTEL, AMD, HYGON, ..., ANY
|
||||||
|
* The name is expanded to X86_VENDOR_@_vendor
|
||||||
|
* @_family: The family number or X86_FAMILY_ANY
|
||||||
|
* @_model: The model number, model constant or X86_MODEL_ANY
|
||||||
|
* @_feature: A X86_FEATURE bit or X86_FEATURE_ANY
|
||||||
|
* @_data: Driver specific data or NULL. The internal storage
|
||||||
|
* format is unsigned long. The supplied value, pointer
|
||||||
|
* etc. is casted to unsigned long internally.
|
||||||
|
*
|
||||||
|
* Use only if you need all selectors. Otherwise use one of the shorter
|
||||||
|
* macros of the X86_MATCH_* family. If there is no matching shorthand
|
||||||
|
* macro, consider to add one. If you really need to wrap one of the macros
|
||||||
|
* into another macro at the usage site for good reasons, then please
|
||||||
|
* start this local macro with X86_MATCH to allow easy grepping.
|
||||||
|
*/
|
||||||
|
#define X86_MATCH_VENDOR_FAM_MODEL_FEATURE(_vendor, _family, _model, \
|
||||||
|
_feature, _data) { \
|
||||||
|
.vendor = X86_VENDOR_##_vendor, \
|
||||||
|
.family = _family, \
|
||||||
|
.model = _model, \
|
||||||
|
.feature = _feature, \
|
||||||
|
.driver_data = (unsigned long) _data \
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* X86_MATCH_VENDOR_FAM_FEATURE - Macro for matching vendor, family and CPU feature
|
||||||
|
* @vendor: The vendor name, e.g. INTEL, AMD, HYGON, ..., ANY
|
||||||
|
* The name is expanded to X86_VENDOR_@vendor
|
||||||
|
* @family: The family number or X86_FAMILY_ANY
|
||||||
|
* @feature: A X86_FEATURE bit
|
||||||
|
* @data: Driver specific data or NULL. The internal storage
|
||||||
|
* format is unsigned long. The supplied value, pointer
|
||||||
|
* etc. is casted to unsigned long internally.
|
||||||
|
*
|
||||||
|
* All other missing arguments of X86_MATCH_VENDOR_FAM_MODEL_FEATURE() are
|
||||||
|
* set to wildcards.
|
||||||
|
*/
|
||||||
|
#define X86_MATCH_VENDOR_FAM_FEATURE(vendor, family, feature, data) \
|
||||||
|
X86_MATCH_VENDOR_FAM_MODEL_FEATURE(vendor, family, \
|
||||||
|
X86_MODEL_ANY, feature, data)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* X86_MATCH_VENDOR_FEATURE - Macro for matching vendor and CPU feature
|
||||||
|
* @vendor: The vendor name, e.g. INTEL, AMD, HYGON, ..., ANY
|
||||||
|
* The name is expanded to X86_VENDOR_@vendor
|
||||||
|
* @feature: A X86_FEATURE bit
|
||||||
|
* @data: Driver specific data or NULL. The internal storage
|
||||||
|
* format is unsigned long. The supplied value, pointer
|
||||||
|
* etc. is casted to unsigned long internally.
|
||||||
|
*
|
||||||
|
* All other missing arguments of X86_MATCH_VENDOR_FAM_MODEL_FEATURE() are
|
||||||
|
* set to wildcards.
|
||||||
|
*/
|
||||||
|
#define X86_MATCH_VENDOR_FEATURE(vendor, feature, data) \
|
||||||
|
X86_MATCH_VENDOR_FAM_FEATURE(vendor, X86_FAMILY_ANY, feature, data)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* X86_MATCH_FEATURE - Macro for matching a CPU feature
|
||||||
|
* @feature: A X86_FEATURE bit
|
||||||
|
* @data: Driver specific data or NULL. The internal storage
|
||||||
|
* format is unsigned long. The supplied value, pointer
|
||||||
|
* etc. is casted to unsigned long internally.
|
||||||
|
*
|
||||||
|
* All other missing arguments of X86_MATCH_VENDOR_FAM_MODEL_FEATURE() are
|
||||||
|
* set to wildcards.
|
||||||
|
*/
|
||||||
|
#define X86_MATCH_FEATURE(feature, data) \
|
||||||
|
X86_MATCH_VENDOR_FEATURE(ANY, feature, data)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* X86_MATCH_VENDOR_FAM_MODEL - Match vendor, family and model
|
||||||
|
* @vendor: The vendor name, e.g. INTEL, AMD, HYGON, ..., ANY
|
||||||
|
* The name is expanded to X86_VENDOR_@vendor
|
||||||
|
* @family: The family number or X86_FAMILY_ANY
|
||||||
|
* @model: The model number, model constant or X86_MODEL_ANY
|
||||||
|
* @data: Driver specific data or NULL. The internal storage
|
||||||
|
* format is unsigned long. The supplied value, pointer
|
||||||
|
* etc. is casted to unsigned long internally.
|
||||||
|
*
|
||||||
|
* All other missing arguments of X86_MATCH_VENDOR_FAM_MODEL_FEATURE() are
|
||||||
|
* set to wildcards.
|
||||||
|
*/
|
||||||
|
#define X86_MATCH_VENDOR_FAM_MODEL(vendor, family, model, data) \
|
||||||
|
X86_MATCH_VENDOR_FAM_MODEL_FEATURE(vendor, family, model, \
|
||||||
|
X86_FEATURE_ANY, data)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* X86_MATCH_VENDOR_FAM - Match vendor and family
|
||||||
|
* @vendor: The vendor name, e.g. INTEL, AMD, HYGON, ..., ANY
|
||||||
|
* The name is expanded to X86_VENDOR_@vendor
|
||||||
|
* @family: The family number or X86_FAMILY_ANY
|
||||||
|
* @data: Driver specific data or NULL. The internal storage
|
||||||
|
* format is unsigned long. The supplied value, pointer
|
||||||
|
* etc. is casted to unsigned long internally.
|
||||||
|
*
|
||||||
|
* All other missing arguments to X86_MATCH_VENDOR_FAM_MODEL_FEATURE() are
|
||||||
|
* set of wildcards.
|
||||||
|
*/
|
||||||
|
#define X86_MATCH_VENDOR_FAM(vendor, family, data) \
|
||||||
|
X86_MATCH_VENDOR_FAM_MODEL(vendor, family, X86_MODEL_ANY, data)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* X86_MATCH_INTEL_FAM6_MODEL - Match vendor INTEL, family 6 and model
|
||||||
|
* @model: The model name without the INTEL_FAM6_ prefix or ANY
|
||||||
|
* The model name is expanded to INTEL_FAM6_@model internally
|
||||||
|
* @data: Driver specific data or NULL. The internal storage
|
||||||
|
* format is unsigned long. The supplied value, pointer
|
||||||
|
* etc. is casted to unsigned long internally.
|
||||||
|
*
|
||||||
|
* The vendor is set to INTEL, the family to 6 and all other missing
|
||||||
|
* arguments of X86_MATCH_VENDOR_FAM_MODEL_FEATURE() are set to wildcards.
|
||||||
|
*
|
||||||
|
* See X86_MATCH_VENDOR_FAM_MODEL_FEATURE() for further information.
|
||||||
|
*/
|
||||||
|
#define X86_MATCH_INTEL_FAM6_MODEL(model, data) \
|
||||||
|
X86_MATCH_VENDOR_FAM_MODEL(INTEL, 6, INTEL_FAM6_##model, data)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Match specific microcode revisions.
|
* Match specific microcode revisions.
|
||||||
|
|
|
@ -217,7 +217,7 @@
|
||||||
#define X86_FEATURE_IBRS ( 7*32+25) /* Indirect Branch Restricted Speculation */
|
#define X86_FEATURE_IBRS ( 7*32+25) /* Indirect Branch Restricted Speculation */
|
||||||
#define X86_FEATURE_IBPB ( 7*32+26) /* Indirect Branch Prediction Barrier */
|
#define X86_FEATURE_IBPB ( 7*32+26) /* Indirect Branch Prediction Barrier */
|
||||||
#define X86_FEATURE_STIBP ( 7*32+27) /* Single Thread Indirect Branch Predictors */
|
#define X86_FEATURE_STIBP ( 7*32+27) /* Single Thread Indirect Branch Predictors */
|
||||||
#define X86_FEATURE_ZEN ( 7*32+28) /* "" CPU is AMD family 0x17 (Zen) */
|
#define X86_FEATURE_ZEN ( 7*32+28) /* "" CPU is AMD family 0x17 or above (Zen) */
|
||||||
#define X86_FEATURE_L1TF_PTEINV ( 7*32+29) /* "" L1TF workaround PTE inversion */
|
#define X86_FEATURE_L1TF_PTEINV ( 7*32+29) /* "" L1TF workaround PTE inversion */
|
||||||
#define X86_FEATURE_IBRS_ENHANCED ( 7*32+30) /* Enhanced IBRS */
|
#define X86_FEATURE_IBRS_ENHANCED ( 7*32+30) /* Enhanced IBRS */
|
||||||
#define X86_FEATURE_MSR_IA32_FEAT_CTL ( 7*32+31) /* "" MSR IA32_FEAT_CTL configured */
|
#define X86_FEATURE_MSR_IA32_FEAT_CTL ( 7*32+31) /* "" MSR IA32_FEAT_CTL configured */
|
||||||
|
|
|
@ -35,6 +35,9 @@
|
||||||
* The #define line may optionally include a comment including platform names.
|
* The #define line may optionally include a comment including platform names.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/* Wildcard match for FAM6 so X86_MATCH_INTEL_FAM6_MODEL(ANY) works */
|
||||||
|
#define INTEL_FAM6_ANY X86_MODEL_ANY
|
||||||
|
|
||||||
#define INTEL_FAM6_CORE_YONAH 0x0E
|
#define INTEL_FAM6_CORE_YONAH 0x0E
|
||||||
|
|
||||||
#define INTEL_FAM6_CORE2_MEROM 0x0F
|
#define INTEL_FAM6_CORE2_MEROM 0x0F
|
||||||
|
@ -118,17 +121,7 @@
|
||||||
#define INTEL_FAM6_XEON_PHI_KNL 0x57 /* Knights Landing */
|
#define INTEL_FAM6_XEON_PHI_KNL 0x57 /* Knights Landing */
|
||||||
#define INTEL_FAM6_XEON_PHI_KNM 0x85 /* Knights Mill */
|
#define INTEL_FAM6_XEON_PHI_KNM 0x85 /* Knights Mill */
|
||||||
|
|
||||||
/* Useful macros */
|
/* Family 5 */
|
||||||
#define INTEL_CPU_FAM_ANY(_family, _model, _driver_data) \
|
#define INTEL_FAM5_QUARK_X1000 0x09 /* Quark X1000 SoC */
|
||||||
{ \
|
|
||||||
.vendor = X86_VENDOR_INTEL, \
|
|
||||||
.family = _family, \
|
|
||||||
.model = _model, \
|
|
||||||
.feature = X86_FEATURE_ANY, \
|
|
||||||
.driver_data = (kernel_ulong_t)&_driver_data \
|
|
||||||
}
|
|
||||||
|
|
||||||
#define INTEL_CPU_FAM6(_model, _driver_data) \
|
|
||||||
INTEL_CPU_FAM_ANY(6, INTEL_FAM6_##_model, _driver_data)
|
|
||||||
|
|
||||||
#endif /* _ASM_X86_INTEL_FAMILY_H */
|
#endif /* _ASM_X86_INTEL_FAMILY_H */
|
||||||
|
|
|
@ -36,10 +36,9 @@ static const struct pci_device_id amd_root_ids[] = {
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
#define PCI_DEVICE_ID_AMD_CNB17H_F4 0x1704
|
#define PCI_DEVICE_ID_AMD_CNB17H_F4 0x1704
|
||||||
|
|
||||||
const struct pci_device_id amd_nb_misc_ids[] = {
|
static const struct pci_device_id amd_nb_misc_ids[] = {
|
||||||
{ PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_K8_NB_MISC) },
|
{ PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_K8_NB_MISC) },
|
||||||
{ PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_10H_NB_MISC) },
|
{ PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_10H_NB_MISC) },
|
||||||
{ PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_15H_NB_F3) },
|
{ PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_15H_NB_F3) },
|
||||||
|
@ -56,7 +55,6 @@ const struct pci_device_id amd_nb_misc_ids[] = {
|
||||||
{ PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_19H_DF_F3) },
|
{ PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_19H_DF_F3) },
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
EXPORT_SYMBOL_GPL(amd_nb_misc_ids);
|
|
||||||
|
|
||||||
static const struct pci_device_id amd_nb_link_ids[] = {
|
static const struct pci_device_id amd_nb_link_ids[] = {
|
||||||
{ PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_15H_NB_F4) },
|
{ PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_15H_NB_F4) },
|
||||||
|
|
|
@ -546,12 +546,6 @@ static struct clock_event_device lapic_clockevent = {
|
||||||
};
|
};
|
||||||
static DEFINE_PER_CPU(struct clock_event_device, lapic_events);
|
static DEFINE_PER_CPU(struct clock_event_device, lapic_events);
|
||||||
|
|
||||||
#define DEADLINE_MODEL_MATCH_FUNC(model, func) \
|
|
||||||
{ X86_VENDOR_INTEL, 6, model, X86_FEATURE_ANY, (unsigned long)&func }
|
|
||||||
|
|
||||||
#define DEADLINE_MODEL_MATCH_REV(model, rev) \
|
|
||||||
{ X86_VENDOR_INTEL, 6, model, X86_FEATURE_ANY, (unsigned long)rev }
|
|
||||||
|
|
||||||
static u32 hsx_deadline_rev(void)
|
static u32 hsx_deadline_rev(void)
|
||||||
{
|
{
|
||||||
switch (boot_cpu_data.x86_stepping) {
|
switch (boot_cpu_data.x86_stepping) {
|
||||||
|
@ -588,23 +582,23 @@ static u32 skx_deadline_rev(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct x86_cpu_id deadline_match[] = {
|
static const struct x86_cpu_id deadline_match[] = {
|
||||||
DEADLINE_MODEL_MATCH_FUNC( INTEL_FAM6_HASWELL_X, hsx_deadline_rev),
|
X86_MATCH_INTEL_FAM6_MODEL( HASWELL_X, &hsx_deadline_rev),
|
||||||
DEADLINE_MODEL_MATCH_REV ( INTEL_FAM6_BROADWELL_X, 0x0b000020),
|
X86_MATCH_INTEL_FAM6_MODEL( BROADWELL_X, 0x0b000020),
|
||||||
DEADLINE_MODEL_MATCH_FUNC( INTEL_FAM6_BROADWELL_D, bdx_deadline_rev),
|
X86_MATCH_INTEL_FAM6_MODEL( BROADWELL_D, &bdx_deadline_rev),
|
||||||
DEADLINE_MODEL_MATCH_FUNC( INTEL_FAM6_SKYLAKE_X, skx_deadline_rev),
|
X86_MATCH_INTEL_FAM6_MODEL( SKYLAKE_X, &skx_deadline_rev),
|
||||||
|
|
||||||
DEADLINE_MODEL_MATCH_REV ( INTEL_FAM6_HASWELL, 0x22),
|
X86_MATCH_INTEL_FAM6_MODEL( HASWELL, 0x22),
|
||||||
DEADLINE_MODEL_MATCH_REV ( INTEL_FAM6_HASWELL_L, 0x20),
|
X86_MATCH_INTEL_FAM6_MODEL( HASWELL_L, 0x20),
|
||||||
DEADLINE_MODEL_MATCH_REV ( INTEL_FAM6_HASWELL_G, 0x17),
|
X86_MATCH_INTEL_FAM6_MODEL( HASWELL_G, 0x17),
|
||||||
|
|
||||||
DEADLINE_MODEL_MATCH_REV ( INTEL_FAM6_BROADWELL, 0x25),
|
X86_MATCH_INTEL_FAM6_MODEL( BROADWELL, 0x25),
|
||||||
DEADLINE_MODEL_MATCH_REV ( INTEL_FAM6_BROADWELL_G, 0x17),
|
X86_MATCH_INTEL_FAM6_MODEL( BROADWELL_G, 0x17),
|
||||||
|
|
||||||
DEADLINE_MODEL_MATCH_REV ( INTEL_FAM6_SKYLAKE_L, 0xb2),
|
X86_MATCH_INTEL_FAM6_MODEL( SKYLAKE_L, 0xb2),
|
||||||
DEADLINE_MODEL_MATCH_REV ( INTEL_FAM6_SKYLAKE, 0xb2),
|
X86_MATCH_INTEL_FAM6_MODEL( SKYLAKE, 0xb2),
|
||||||
|
|
||||||
DEADLINE_MODEL_MATCH_REV ( INTEL_FAM6_KABYLAKE_L, 0x52),
|
X86_MATCH_INTEL_FAM6_MODEL( KABYLAKE_L, 0x52),
|
||||||
DEADLINE_MODEL_MATCH_REV ( INTEL_FAM6_KABYLAKE, 0x52),
|
X86_MATCH_INTEL_FAM6_MODEL( KABYLAKE, 0x52),
|
||||||
|
|
||||||
{},
|
{},
|
||||||
};
|
};
|
||||||
|
|
|
@ -926,7 +926,8 @@ static void init_amd(struct cpuinfo_x86 *c)
|
||||||
case 0x12: init_amd_ln(c); break;
|
case 0x12: init_amd_ln(c); break;
|
||||||
case 0x15: init_amd_bd(c); break;
|
case 0x15: init_amd_bd(c); break;
|
||||||
case 0x16: init_amd_jg(c); break;
|
case 0x16: init_amd_jg(c); break;
|
||||||
case 0x17: init_amd_zn(c); break;
|
case 0x17: fallthrough;
|
||||||
|
case 0x19: init_amd_zn(c); break;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -1008,8 +1008,8 @@ static void identify_cpu_without_cpuid(struct cpuinfo_x86 *c)
|
||||||
#define NO_ITLB_MULTIHIT BIT(7)
|
#define NO_ITLB_MULTIHIT BIT(7)
|
||||||
#define NO_SPECTRE_V2 BIT(8)
|
#define NO_SPECTRE_V2 BIT(8)
|
||||||
|
|
||||||
#define VULNWL(_vendor, _family, _model, _whitelist) \
|
#define VULNWL(vendor, family, model, whitelist) \
|
||||||
{ X86_VENDOR_##_vendor, _family, _model, X86_FEATURE_ANY, _whitelist }
|
X86_MATCH_VENDOR_FAM_MODEL(vendor, family, model, whitelist)
|
||||||
|
|
||||||
#define VULNWL_INTEL(model, whitelist) \
|
#define VULNWL_INTEL(model, whitelist) \
|
||||||
VULNWL(INTEL, 6, INTEL_FAM6_##model, whitelist)
|
VULNWL(INTEL, 6, INTEL_FAM6_##model, whitelist)
|
||||||
|
|
|
@ -16,12 +16,17 @@
|
||||||
* respective wildcard entries.
|
* respective wildcard entries.
|
||||||
*
|
*
|
||||||
* A typical table entry would be to match a specific CPU
|
* A typical table entry would be to match a specific CPU
|
||||||
* { X86_VENDOR_INTEL, 6, 0x12 }
|
*
|
||||||
* or to match a specific CPU feature
|
* X86_MATCH_VENDOR_FAM_MODEL_FEATURE(INTEL, 6, INTEL_FAM6_BROADWELL,
|
||||||
* { X86_FEATURE_MATCH(X86_FEATURE_FOOBAR) }
|
* X86_FEATURE_ANY, NULL);
|
||||||
*
|
*
|
||||||
* Fields can be wildcarded with %X86_VENDOR_ANY, %X86_FAMILY_ANY,
|
* Fields can be wildcarded with %X86_VENDOR_ANY, %X86_FAMILY_ANY,
|
||||||
* %X86_MODEL_ANY, %X86_FEATURE_ANY or 0 (except for vendor)
|
* %X86_MODEL_ANY, %X86_FEATURE_ANY (except for vendor)
|
||||||
|
*
|
||||||
|
* asm/cpu_device_id.h contains a set of useful macros which are shortcuts
|
||||||
|
* for various common selections. The above can be shortened to:
|
||||||
|
*
|
||||||
|
* X86_MATCH_INTEL_FAM6_MODEL(BROADWELL, NULL);
|
||||||
*
|
*
|
||||||
* Arrays used to match for this should also be declared using
|
* Arrays used to match for this should also be declared using
|
||||||
* MODULE_DEVICE_TABLE(x86cpu, ...)
|
* MODULE_DEVICE_TABLE(x86cpu, ...)
|
||||||
|
|
|
@ -466,7 +466,7 @@ static bool match_smt(struct cpuinfo_x86 *c, struct cpuinfo_x86 *o)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static const struct x86_cpu_id snc_cpu[] = {
|
static const struct x86_cpu_id snc_cpu[] = {
|
||||||
{ X86_VENDOR_INTEL, 6, INTEL_FAM6_SKYLAKE_X },
|
X86_MATCH_INTEL_FAM6_MODEL(SKYLAKE_X, NULL),
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -63,13 +63,13 @@ static const struct freq_desc freq_desc_lgm = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct x86_cpu_id tsc_msr_cpu_ids[] = {
|
static const struct x86_cpu_id tsc_msr_cpu_ids[] = {
|
||||||
INTEL_CPU_FAM6(ATOM_SALTWELL_MID, freq_desc_pnw),
|
X86_MATCH_INTEL_FAM6_MODEL(ATOM_SALTWELL_MID, &freq_desc_pnw),
|
||||||
INTEL_CPU_FAM6(ATOM_SALTWELL_TABLET, freq_desc_clv),
|
X86_MATCH_INTEL_FAM6_MODEL(ATOM_SALTWELL_TABLET,&freq_desc_clv),
|
||||||
INTEL_CPU_FAM6(ATOM_SILVERMONT, freq_desc_byt),
|
X86_MATCH_INTEL_FAM6_MODEL(ATOM_SILVERMONT, &freq_desc_byt),
|
||||||
INTEL_CPU_FAM6(ATOM_SILVERMONT_MID, freq_desc_tng),
|
X86_MATCH_INTEL_FAM6_MODEL(ATOM_SILVERMONT_MID, &freq_desc_tng),
|
||||||
INTEL_CPU_FAM6(ATOM_AIRMONT, freq_desc_cht),
|
X86_MATCH_INTEL_FAM6_MODEL(ATOM_AIRMONT, &freq_desc_cht),
|
||||||
INTEL_CPU_FAM6(ATOM_AIRMONT_MID, freq_desc_ann),
|
X86_MATCH_INTEL_FAM6_MODEL(ATOM_AIRMONT_MID, &freq_desc_ann),
|
||||||
INTEL_CPU_FAM6(ATOM_AIRMONT_NP, freq_desc_lgm),
|
X86_MATCH_INTEL_FAM6_MODEL(ATOM_AIRMONT_NP, &freq_desc_lgm),
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -48,6 +48,7 @@
|
||||||
#include <asm/kvm_para.h>
|
#include <asm/kvm_para.h>
|
||||||
#include <asm/irq_remapping.h>
|
#include <asm/irq_remapping.h>
|
||||||
#include <asm/spec-ctrl.h>
|
#include <asm/spec-ctrl.h>
|
||||||
|
#include <asm/cpu_device_id.h>
|
||||||
|
|
||||||
#include <asm/virtext.h>
|
#include <asm/virtext.h>
|
||||||
#include "trace.h"
|
#include "trace.h"
|
||||||
|
@ -59,7 +60,7 @@ MODULE_LICENSE("GPL");
|
||||||
|
|
||||||
#ifdef MODULE
|
#ifdef MODULE
|
||||||
static const struct x86_cpu_id svm_cpu_id[] = {
|
static const struct x86_cpu_id svm_cpu_id[] = {
|
||||||
X86_FEATURE_MATCH(X86_FEATURE_SVM),
|
X86_MATCH_FEATURE(X86_FEATURE_SVM, NULL),
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(x86cpu, svm_cpu_id);
|
MODULE_DEVICE_TABLE(x86cpu, svm_cpu_id);
|
||||||
|
|
|
@ -31,6 +31,7 @@
|
||||||
#include <asm/apic.h>
|
#include <asm/apic.h>
|
||||||
#include <asm/asm.h>
|
#include <asm/asm.h>
|
||||||
#include <asm/cpu.h>
|
#include <asm/cpu.h>
|
||||||
|
#include <asm/cpu_device_id.h>
|
||||||
#include <asm/debugreg.h>
|
#include <asm/debugreg.h>
|
||||||
#include <asm/desc.h>
|
#include <asm/desc.h>
|
||||||
#include <asm/fpu/internal.h>
|
#include <asm/fpu/internal.h>
|
||||||
|
@ -66,7 +67,7 @@ MODULE_LICENSE("GPL");
|
||||||
|
|
||||||
#ifdef MODULE
|
#ifdef MODULE
|
||||||
static const struct x86_cpu_id vmx_cpu_id[] = {
|
static const struct x86_cpu_id vmx_cpu_id[] = {
|
||||||
X86_FEATURE_MATCH(X86_FEATURE_VMX),
|
X86_MATCH_FEATURE(X86_FEATURE_VMX, NULL),
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(x86cpu, vmx_cpu_id);
|
MODULE_DEVICE_TABLE(x86cpu, vmx_cpu_id);
|
||||||
|
|
|
@ -117,17 +117,16 @@ static void punit_dbgfs_unregister(void)
|
||||||
debugfs_remove_recursive(punit_dbg_file);
|
debugfs_remove_recursive(punit_dbg_file);
|
||||||
}
|
}
|
||||||
|
|
||||||
#define ICPU(model, drv_data) \
|
#define X86_MATCH(model, data) \
|
||||||
{ X86_VENDOR_INTEL, 6, model, X86_FEATURE_MWAIT,\
|
X86_MATCH_VENDOR_FAM_MODEL_FEATURE(INTEL, 6, INTEL_FAM6_##model, \
|
||||||
(kernel_ulong_t)&drv_data }
|
X86_FEATURE_MWAIT, data)
|
||||||
|
|
||||||
static const struct x86_cpu_id intel_punit_cpu_ids[] = {
|
static const struct x86_cpu_id intel_punit_cpu_ids[] = {
|
||||||
ICPU(INTEL_FAM6_ATOM_SILVERMONT, punit_device_byt),
|
X86_MATCH(ATOM_SILVERMONT, &punit_device_byt),
|
||||||
ICPU(INTEL_FAM6_ATOM_SILVERMONT_MID, punit_device_tng),
|
X86_MATCH(ATOM_SILVERMONT_MID, &punit_device_tng),
|
||||||
ICPU(INTEL_FAM6_ATOM_AIRMONT, punit_device_cht),
|
X86_MATCH(ATOM_AIRMONT, &punit_device_cht),
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
|
|
||||||
MODULE_DEVICE_TABLE(x86cpu, intel_punit_cpu_ids);
|
MODULE_DEVICE_TABLE(x86cpu, intel_punit_cpu_ids);
|
||||||
|
|
||||||
static int __init punit_atom_debug_init(void)
|
static int __init punit_atom_debug_init(void)
|
||||||
|
|
|
@ -659,12 +659,9 @@ static int qrk_capsule_setup_info(struct capsule_info *cap_info, void **pkbuff,
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define ICPU(family, model, quirk_handler) \
|
|
||||||
{ X86_VENDOR_INTEL, family, model, X86_FEATURE_ANY, \
|
|
||||||
(unsigned long)&quirk_handler }
|
|
||||||
|
|
||||||
static const struct x86_cpu_id efi_capsule_quirk_ids[] = {
|
static const struct x86_cpu_id efi_capsule_quirk_ids[] = {
|
||||||
ICPU(5, 9, qrk_capsule_setup_info), /* Intel Quark X1000 */
|
X86_MATCH_VENDOR_FAM_MODEL(INTEL, 5, INTEL_FAM5_QUARK_X1000,
|
||||||
|
&qrk_capsule_setup_info),
|
||||||
{ }
|
{ }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -60,11 +60,8 @@ static struct bt_sfi_data tng_bt_sfi_data __initdata = {
|
||||||
.setup = tng_bt_sfi_setup,
|
.setup = tng_bt_sfi_setup,
|
||||||
};
|
};
|
||||||
|
|
||||||
#define ICPU(model, ddata) \
|
|
||||||
{ X86_VENDOR_INTEL, 6, model, X86_FEATURE_ANY, (kernel_ulong_t)&ddata }
|
|
||||||
|
|
||||||
static const struct x86_cpu_id bt_sfi_cpu_ids[] = {
|
static const struct x86_cpu_id bt_sfi_cpu_ids[] = {
|
||||||
ICPU(INTEL_FAM6_ATOM_SILVERMONT_MID, tng_bt_sfi_data),
|
X86_MATCH_INTEL_FAM6_MODEL(ATOM_SILVERMONT_MID, &tng_bt_sfi_data),
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -569,7 +569,7 @@ static void __init imr_fixup_memmap(struct imr_device *idev)
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct x86_cpu_id imr_ids[] __initconst = {
|
static const struct x86_cpu_id imr_ids[] __initconst = {
|
||||||
{ X86_VENDOR_INTEL, 5, 9 }, /* Intel Quark SoC X1000. */
|
X86_MATCH_VENDOR_FAM_MODEL(INTEL, 5, INTEL_FAM5_QUARK_X1000, NULL),
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -105,7 +105,7 @@ static void __init imr_self_test(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct x86_cpu_id imr_ids[] __initconst = {
|
static const struct x86_cpu_id imr_ids[] __initconst = {
|
||||||
{ X86_VENDOR_INTEL, 5, 9 }, /* Intel Quark SoC X1000. */
|
X86_MATCH_VENDOR_FAM_MODEL(INTEL, 5, INTEL_FAM5_QUARK_X1000, NULL),
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -475,20 +475,8 @@ static int msr_save_cpuid_features(const struct x86_cpu_id *c)
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct x86_cpu_id msr_save_cpu_table[] = {
|
static const struct x86_cpu_id msr_save_cpu_table[] = {
|
||||||
{
|
X86_MATCH_VENDOR_FAM(AMD, 0x15, &msr_save_cpuid_features),
|
||||||
.vendor = X86_VENDOR_AMD,
|
X86_MATCH_VENDOR_FAM(AMD, 0x16, &msr_save_cpuid_features),
|
||||||
.family = 0x15,
|
|
||||||
.model = X86_MODEL_ANY,
|
|
||||||
.feature = X86_FEATURE_ANY,
|
|
||||||
.driver_data = (kernel_ulong_t)msr_save_cpuid_features,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
.vendor = X86_VENDOR_AMD,
|
|
||||||
.family = 0x16,
|
|
||||||
.model = X86_MODEL_ANY,
|
|
||||||
.feature = X86_FEATURE_ANY,
|
|
||||||
.driver_data = (kernel_ulong_t)msr_save_cpuid_features,
|
|
||||||
},
|
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -306,11 +306,9 @@ static const struct lpss_device_desc bsw_spi_dev_desc = {
|
||||||
.setup = lpss_deassert_reset,
|
.setup = lpss_deassert_reset,
|
||||||
};
|
};
|
||||||
|
|
||||||
#define ICPU(model) { X86_VENDOR_INTEL, 6, model, X86_FEATURE_ANY, }
|
|
||||||
|
|
||||||
static const struct x86_cpu_id lpss_cpu_ids[] = {
|
static const struct x86_cpu_id lpss_cpu_ids[] = {
|
||||||
ICPU(INTEL_FAM6_ATOM_SILVERMONT), /* Valleyview, Bay Trail */
|
X86_MATCH_INTEL_FAM6_MODEL(ATOM_SILVERMONT, NULL),
|
||||||
ICPU(INTEL_FAM6_ATOM_AIRMONT), /* Braswell, Cherry Trail */
|
X86_MATCH_INTEL_FAM6_MODEL(ATOM_AIRMONT, NULL),
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -37,7 +37,7 @@ struct always_present_id {
|
||||||
const char *uid;
|
const char *uid;
|
||||||
};
|
};
|
||||||
|
|
||||||
#define ICPU(model) { X86_VENDOR_INTEL, 6, model, X86_FEATURE_ANY, }
|
#define X86_MATCH(model) X86_MATCH_INTEL_FAM6_MODEL(model, NULL)
|
||||||
|
|
||||||
#define ENTRY(hid, uid, cpu_models, dmi...) { \
|
#define ENTRY(hid, uid, cpu_models, dmi...) { \
|
||||||
{ { hid, }, {} }, \
|
{ { hid, }, {} }, \
|
||||||
|
@ -51,29 +51,29 @@ static const struct always_present_id always_present_ids[] = {
|
||||||
* Bay / Cherry Trail PWM directly poked by GPU driver in win10,
|
* Bay / Cherry Trail PWM directly poked by GPU driver in win10,
|
||||||
* but Linux uses a separate PWM driver, harmless if not used.
|
* but Linux uses a separate PWM driver, harmless if not used.
|
||||||
*/
|
*/
|
||||||
ENTRY("80860F09", "1", ICPU(INTEL_FAM6_ATOM_SILVERMONT), {}),
|
ENTRY("80860F09", "1", X86_MATCH(ATOM_SILVERMONT), {}),
|
||||||
ENTRY("80862288", "1", ICPU(INTEL_FAM6_ATOM_AIRMONT), {}),
|
ENTRY("80862288", "1", X86_MATCH(ATOM_AIRMONT), {}),
|
||||||
|
|
||||||
/* Lenovo Yoga Book uses PWM2 for keyboard backlight control */
|
/* Lenovo Yoga Book uses PWM2 for keyboard backlight control */
|
||||||
ENTRY("80862289", "2", ICPU(INTEL_FAM6_ATOM_AIRMONT), {
|
ENTRY("80862289", "2", X86_MATCH(ATOM_AIRMONT), {
|
||||||
DMI_MATCH(DMI_PRODUCT_NAME, "Lenovo YB1-X9"),
|
DMI_MATCH(DMI_PRODUCT_NAME, "Lenovo YB1-X9"),
|
||||||
}),
|
}),
|
||||||
/*
|
/*
|
||||||
* The INT0002 device is necessary to clear wakeup interrupt sources
|
* The INT0002 device is necessary to clear wakeup interrupt sources
|
||||||
* on Cherry Trail devices, without it we get nobody cared IRQ msgs.
|
* on Cherry Trail devices, without it we get nobody cared IRQ msgs.
|
||||||
*/
|
*/
|
||||||
ENTRY("INT0002", "1", ICPU(INTEL_FAM6_ATOM_AIRMONT), {}),
|
ENTRY("INT0002", "1", X86_MATCH(ATOM_AIRMONT), {}),
|
||||||
/*
|
/*
|
||||||
* On the Dell Venue 11 Pro 7130 and 7139, the DSDT hides
|
* On the Dell Venue 11 Pro 7130 and 7139, the DSDT hides
|
||||||
* the touchscreen ACPI device until a certain time
|
* the touchscreen ACPI device until a certain time
|
||||||
* after _SB.PCI0.GFX0.LCD.LCD1._ON gets called has passed
|
* after _SB.PCI0.GFX0.LCD.LCD1._ON gets called has passed
|
||||||
* *and* _STA has been called at least 3 times since.
|
* *and* _STA has been called at least 3 times since.
|
||||||
*/
|
*/
|
||||||
ENTRY("SYNA7500", "1", ICPU(INTEL_FAM6_HASWELL_L), {
|
ENTRY("SYNA7500", "1", X86_MATCH(HASWELL_L), {
|
||||||
DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
|
DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
|
||||||
DMI_MATCH(DMI_PRODUCT_NAME, "Venue 11 Pro 7130"),
|
DMI_MATCH(DMI_PRODUCT_NAME, "Venue 11 Pro 7130"),
|
||||||
}),
|
}),
|
||||||
ENTRY("SYNA7500", "1", ICPU(INTEL_FAM6_HASWELL_L), {
|
ENTRY("SYNA7500", "1", X86_MATCH(HASWELL_L), {
|
||||||
DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
|
DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
|
||||||
DMI_MATCH(DMI_PRODUCT_NAME, "Venue 11 Pro 7139"),
|
DMI_MATCH(DMI_PRODUCT_NAME, "Venue 11 Pro 7139"),
|
||||||
}),
|
}),
|
||||||
|
@ -89,19 +89,19 @@ static const struct always_present_id always_present_ids[] = {
|
||||||
* was copy-pasted from the GPD win, so it has a disabled KIOX000A
|
* was copy-pasted from the GPD win, so it has a disabled KIOX000A
|
||||||
* node which we should not enable, thus we also check the BIOS date.
|
* node which we should not enable, thus we also check the BIOS date.
|
||||||
*/
|
*/
|
||||||
ENTRY("KIOX000A", "1", ICPU(INTEL_FAM6_ATOM_AIRMONT), {
|
ENTRY("KIOX000A", "1", X86_MATCH(ATOM_AIRMONT), {
|
||||||
DMI_MATCH(DMI_BOARD_VENDOR, "AMI Corporation"),
|
DMI_MATCH(DMI_BOARD_VENDOR, "AMI Corporation"),
|
||||||
DMI_MATCH(DMI_BOARD_NAME, "Default string"),
|
DMI_MATCH(DMI_BOARD_NAME, "Default string"),
|
||||||
DMI_MATCH(DMI_PRODUCT_NAME, "Default string"),
|
DMI_MATCH(DMI_PRODUCT_NAME, "Default string"),
|
||||||
DMI_MATCH(DMI_BIOS_DATE, "02/21/2017")
|
DMI_MATCH(DMI_BIOS_DATE, "02/21/2017")
|
||||||
}),
|
}),
|
||||||
ENTRY("KIOX000A", "1", ICPU(INTEL_FAM6_ATOM_AIRMONT), {
|
ENTRY("KIOX000A", "1", X86_MATCH(ATOM_AIRMONT), {
|
||||||
DMI_MATCH(DMI_BOARD_VENDOR, "AMI Corporation"),
|
DMI_MATCH(DMI_BOARD_VENDOR, "AMI Corporation"),
|
||||||
DMI_MATCH(DMI_BOARD_NAME, "Default string"),
|
DMI_MATCH(DMI_BOARD_NAME, "Default string"),
|
||||||
DMI_MATCH(DMI_PRODUCT_NAME, "Default string"),
|
DMI_MATCH(DMI_PRODUCT_NAME, "Default string"),
|
||||||
DMI_MATCH(DMI_BIOS_DATE, "03/20/2017")
|
DMI_MATCH(DMI_BIOS_DATE, "03/20/2017")
|
||||||
}),
|
}),
|
||||||
ENTRY("KIOX000A", "1", ICPU(INTEL_FAM6_ATOM_AIRMONT), {
|
ENTRY("KIOX000A", "1", X86_MATCH(ATOM_AIRMONT), {
|
||||||
DMI_MATCH(DMI_BOARD_VENDOR, "AMI Corporation"),
|
DMI_MATCH(DMI_BOARD_VENDOR, "AMI Corporation"),
|
||||||
DMI_MATCH(DMI_BOARD_NAME, "Default string"),
|
DMI_MATCH(DMI_BOARD_NAME, "Default string"),
|
||||||
DMI_MATCH(DMI_PRODUCT_NAME, "Default string"),
|
DMI_MATCH(DMI_PRODUCT_NAME, "Default string"),
|
||||||
|
|
|
@ -775,7 +775,7 @@ int __init agp_amd64_init(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* First check that we have at least one AMD64 NB */
|
/* First check that we have at least one AMD64 NB */
|
||||||
if (!pci_dev_present(amd_nb_misc_ids)) {
|
if (!amd_nb_num()) {
|
||||||
pci_unregister_driver(&agp_amd64_pci_driver);
|
pci_unregister_driver(&agp_amd64_pci_driver);
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
|
|
|
@ -209,20 +209,19 @@ static int __init mod_init(void)
|
||||||
out:
|
out:
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
module_init(mod_init);
|
||||||
|
|
||||||
static void __exit mod_exit(void)
|
static void __exit mod_exit(void)
|
||||||
{
|
{
|
||||||
hwrng_unregister(&via_rng);
|
hwrng_unregister(&via_rng);
|
||||||
}
|
}
|
||||||
|
|
||||||
module_init(mod_init);
|
|
||||||
module_exit(mod_exit);
|
module_exit(mod_exit);
|
||||||
|
|
||||||
static struct x86_cpu_id __maybe_unused via_rng_cpu_id[] = {
|
static struct x86_cpu_id __maybe_unused via_rng_cpu_id[] = {
|
||||||
X86_FEATURE_MATCH(X86_FEATURE_XSTORE),
|
X86_MATCH_FEATURE(X86_FEATURE_XSTORE, NULL),
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
|
MODULE_DEVICE_TABLE(x86cpu, via_rng_cpu_id);
|
||||||
|
|
||||||
MODULE_DESCRIPTION("H/W RNG driver for VIA CPU with PadLock");
|
MODULE_DESCRIPTION("H/W RNG driver for VIA CPU with PadLock");
|
||||||
MODULE_LICENSE("GPL");
|
MODULE_LICENSE("GPL");
|
||||||
MODULE_DEVICE_TABLE(x86cpu, via_rng_cpu_id);
|
|
||||||
|
|
|
@ -30,6 +30,7 @@
|
||||||
#include <asm/msr.h>
|
#include <asm/msr.h>
|
||||||
#include <asm/processor.h>
|
#include <asm/processor.h>
|
||||||
#include <asm/cpufeature.h>
|
#include <asm/cpufeature.h>
|
||||||
|
#include <asm/cpu_device_id.h>
|
||||||
|
|
||||||
MODULE_AUTHOR("Paul Diefenbaugh, Dominik Brodowski");
|
MODULE_AUTHOR("Paul Diefenbaugh, Dominik Brodowski");
|
||||||
MODULE_DESCRIPTION("ACPI Processor P-States Driver");
|
MODULE_DESCRIPTION("ACPI Processor P-States Driver");
|
||||||
|
@ -991,8 +992,8 @@ late_initcall(acpi_cpufreq_init);
|
||||||
module_exit(acpi_cpufreq_exit);
|
module_exit(acpi_cpufreq_exit);
|
||||||
|
|
||||||
static const struct x86_cpu_id acpi_cpufreq_ids[] = {
|
static const struct x86_cpu_id acpi_cpufreq_ids[] = {
|
||||||
X86_FEATURE_MATCH(X86_FEATURE_ACPI),
|
X86_MATCH_FEATURE(X86_FEATURE_ACPI, NULL),
|
||||||
X86_FEATURE_MATCH(X86_FEATURE_HW_PSTATE),
|
X86_MATCH_FEATURE(X86_FEATURE_HW_PSTATE, NULL),
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(x86cpu, acpi_cpufreq_ids);
|
MODULE_DEVICE_TABLE(x86cpu, acpi_cpufreq_ids);
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
|
|
||||||
#include <asm/msr.h>
|
#include <asm/msr.h>
|
||||||
#include <asm/cpufeature.h>
|
#include <asm/cpufeature.h>
|
||||||
|
#include <asm/cpu_device_id.h>
|
||||||
|
|
||||||
#include "cpufreq_ondemand.h"
|
#include "cpufreq_ondemand.h"
|
||||||
|
|
||||||
|
@ -144,7 +145,7 @@ static void __exit amd_freq_sensitivity_exit(void)
|
||||||
module_exit(amd_freq_sensitivity_exit);
|
module_exit(amd_freq_sensitivity_exit);
|
||||||
|
|
||||||
static const struct x86_cpu_id amd_freq_sensitivity_ids[] = {
|
static const struct x86_cpu_id amd_freq_sensitivity_ids[] = {
|
||||||
X86_FEATURE_MATCH(X86_FEATURE_PROC_FEEDBACK),
|
X86_MATCH_FEATURE(X86_FEATURE_PROC_FEEDBACK, NULL),
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(x86cpu, amd_freq_sensitivity_ids);
|
MODULE_DEVICE_TABLE(x86cpu, amd_freq_sensitivity_ids);
|
||||||
|
|
|
@ -385,7 +385,7 @@ static struct cpufreq_driver eps_driver = {
|
||||||
/* This driver will work only on Centaur C7 processors with
|
/* This driver will work only on Centaur C7 processors with
|
||||||
* Enhanced SpeedStep/PowerSaver registers */
|
* Enhanced SpeedStep/PowerSaver registers */
|
||||||
static const struct x86_cpu_id eps_cpu_id[] = {
|
static const struct x86_cpu_id eps_cpu_id[] = {
|
||||||
{ X86_VENDOR_CENTAUR, 6, X86_MODEL_ANY, X86_FEATURE_EST },
|
X86_MATCH_VENDOR_FAM_FEATURE(CENTAUR, 6, X86_FEATURE_EST, NULL),
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(x86cpu, eps_cpu_id);
|
MODULE_DEVICE_TABLE(x86cpu, eps_cpu_id);
|
||||||
|
|
|
@ -198,7 +198,7 @@ static struct cpufreq_driver elanfreq_driver = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct x86_cpu_id elan_id[] = {
|
static const struct x86_cpu_id elan_id[] = {
|
||||||
{ X86_VENDOR_AMD, 4, 10, },
|
X86_MATCH_VENDOR_FAM_MODEL(AMD, 4, 10, NULL),
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(x86cpu, elan_id);
|
MODULE_DEVICE_TABLE(x86cpu, elan_id);
|
||||||
|
|
|
@ -1908,51 +1908,51 @@ static const struct pstate_funcs knl_funcs = {
|
||||||
.get_val = core_get_val,
|
.get_val = core_get_val,
|
||||||
};
|
};
|
||||||
|
|
||||||
#define ICPU(model, policy) \
|
#define X86_MATCH(model, policy) \
|
||||||
{ X86_VENDOR_INTEL, 6, model, X86_FEATURE_APERFMPERF,\
|
X86_MATCH_VENDOR_FAM_MODEL_FEATURE(INTEL, 6, INTEL_FAM6_##model, \
|
||||||
(unsigned long)&policy }
|
X86_FEATURE_APERFMPERF, &policy)
|
||||||
|
|
||||||
static const struct x86_cpu_id intel_pstate_cpu_ids[] = {
|
static const struct x86_cpu_id intel_pstate_cpu_ids[] = {
|
||||||
ICPU(INTEL_FAM6_SANDYBRIDGE, core_funcs),
|
X86_MATCH(SANDYBRIDGE, core_funcs),
|
||||||
ICPU(INTEL_FAM6_SANDYBRIDGE_X, core_funcs),
|
X86_MATCH(SANDYBRIDGE_X, core_funcs),
|
||||||
ICPU(INTEL_FAM6_ATOM_SILVERMONT, silvermont_funcs),
|
X86_MATCH(ATOM_SILVERMONT, silvermont_funcs),
|
||||||
ICPU(INTEL_FAM6_IVYBRIDGE, core_funcs),
|
X86_MATCH(IVYBRIDGE, core_funcs),
|
||||||
ICPU(INTEL_FAM6_HASWELL, core_funcs),
|
X86_MATCH(HASWELL, core_funcs),
|
||||||
ICPU(INTEL_FAM6_BROADWELL, core_funcs),
|
X86_MATCH(BROADWELL, core_funcs),
|
||||||
ICPU(INTEL_FAM6_IVYBRIDGE_X, core_funcs),
|
X86_MATCH(IVYBRIDGE_X, core_funcs),
|
||||||
ICPU(INTEL_FAM6_HASWELL_X, core_funcs),
|
X86_MATCH(HASWELL_X, core_funcs),
|
||||||
ICPU(INTEL_FAM6_HASWELL_L, core_funcs),
|
X86_MATCH(HASWELL_L, core_funcs),
|
||||||
ICPU(INTEL_FAM6_HASWELL_G, core_funcs),
|
X86_MATCH(HASWELL_G, core_funcs),
|
||||||
ICPU(INTEL_FAM6_BROADWELL_G, core_funcs),
|
X86_MATCH(BROADWELL_G, core_funcs),
|
||||||
ICPU(INTEL_FAM6_ATOM_AIRMONT, airmont_funcs),
|
X86_MATCH(ATOM_AIRMONT, airmont_funcs),
|
||||||
ICPU(INTEL_FAM6_SKYLAKE_L, core_funcs),
|
X86_MATCH(SKYLAKE_L, core_funcs),
|
||||||
ICPU(INTEL_FAM6_BROADWELL_X, core_funcs),
|
X86_MATCH(BROADWELL_X, core_funcs),
|
||||||
ICPU(INTEL_FAM6_SKYLAKE, core_funcs),
|
X86_MATCH(SKYLAKE, core_funcs),
|
||||||
ICPU(INTEL_FAM6_BROADWELL_D, core_funcs),
|
X86_MATCH(BROADWELL_D, core_funcs),
|
||||||
ICPU(INTEL_FAM6_XEON_PHI_KNL, knl_funcs),
|
X86_MATCH(XEON_PHI_KNL, knl_funcs),
|
||||||
ICPU(INTEL_FAM6_XEON_PHI_KNM, knl_funcs),
|
X86_MATCH(XEON_PHI_KNM, knl_funcs),
|
||||||
ICPU(INTEL_FAM6_ATOM_GOLDMONT, core_funcs),
|
X86_MATCH(ATOM_GOLDMONT, core_funcs),
|
||||||
ICPU(INTEL_FAM6_ATOM_GOLDMONT_PLUS, core_funcs),
|
X86_MATCH(ATOM_GOLDMONT_PLUS, core_funcs),
|
||||||
ICPU(INTEL_FAM6_SKYLAKE_X, core_funcs),
|
X86_MATCH(SKYLAKE_X, core_funcs),
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(x86cpu, intel_pstate_cpu_ids);
|
MODULE_DEVICE_TABLE(x86cpu, intel_pstate_cpu_ids);
|
||||||
|
|
||||||
static const struct x86_cpu_id intel_pstate_cpu_oob_ids[] __initconst = {
|
static const struct x86_cpu_id intel_pstate_cpu_oob_ids[] __initconst = {
|
||||||
ICPU(INTEL_FAM6_BROADWELL_D, core_funcs),
|
X86_MATCH(BROADWELL_D, core_funcs),
|
||||||
ICPU(INTEL_FAM6_BROADWELL_X, core_funcs),
|
X86_MATCH(BROADWELL_X, core_funcs),
|
||||||
ICPU(INTEL_FAM6_SKYLAKE_X, core_funcs),
|
X86_MATCH(SKYLAKE_X, core_funcs),
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct x86_cpu_id intel_pstate_cpu_ee_disable_ids[] = {
|
static const struct x86_cpu_id intel_pstate_cpu_ee_disable_ids[] = {
|
||||||
ICPU(INTEL_FAM6_KABYLAKE, core_funcs),
|
X86_MATCH(KABYLAKE, core_funcs),
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct x86_cpu_id intel_pstate_hwp_boost_ids[] = {
|
static const struct x86_cpu_id intel_pstate_hwp_boost_ids[] = {
|
||||||
ICPU(INTEL_FAM6_SKYLAKE_X, core_funcs),
|
X86_MATCH(SKYLAKE_X, core_funcs),
|
||||||
ICPU(INTEL_FAM6_SKYLAKE, core_funcs),
|
X86_MATCH(SKYLAKE, core_funcs),
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -2725,13 +2725,14 @@ static inline void intel_pstate_request_control_from_smm(void) {}
|
||||||
|
|
||||||
#define INTEL_PSTATE_HWP_BROADWELL 0x01
|
#define INTEL_PSTATE_HWP_BROADWELL 0x01
|
||||||
|
|
||||||
#define ICPU_HWP(model, hwp_mode) \
|
#define X86_MATCH_HWP(model, hwp_mode) \
|
||||||
{ X86_VENDOR_INTEL, 6, model, X86_FEATURE_HWP, hwp_mode }
|
X86_MATCH_VENDOR_FAM_MODEL_FEATURE(INTEL, 6, INTEL_FAM6_##model, \
|
||||||
|
X86_FEATURE_HWP, hwp_mode)
|
||||||
|
|
||||||
static const struct x86_cpu_id hwp_support_ids[] __initconst = {
|
static const struct x86_cpu_id hwp_support_ids[] __initconst = {
|
||||||
ICPU_HWP(INTEL_FAM6_BROADWELL_X, INTEL_PSTATE_HWP_BROADWELL),
|
X86_MATCH_HWP(BROADWELL_X, INTEL_PSTATE_HWP_BROADWELL),
|
||||||
ICPU_HWP(INTEL_FAM6_BROADWELL_D, INTEL_PSTATE_HWP_BROADWELL),
|
X86_MATCH_HWP(BROADWELL_D, INTEL_PSTATE_HWP_BROADWELL),
|
||||||
ICPU_HWP(X86_MODEL_ANY, 0),
|
X86_MATCH_HWP(ANY, 0),
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -910,7 +910,7 @@ static struct cpufreq_driver longhaul_driver = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct x86_cpu_id longhaul_id[] = {
|
static const struct x86_cpu_id longhaul_id[] = {
|
||||||
{ X86_VENDOR_CENTAUR, 6 },
|
X86_MATCH_VENDOR_FAM(CENTAUR, 6, NULL),
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(x86cpu, longhaul_id);
|
MODULE_DEVICE_TABLE(x86cpu, longhaul_id);
|
||||||
|
|
|
@ -281,8 +281,7 @@ static struct cpufreq_driver longrun_driver = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct x86_cpu_id longrun_ids[] = {
|
static const struct x86_cpu_id longrun_ids[] = {
|
||||||
{ X86_VENDOR_TRANSMETA, X86_FAMILY_ANY, X86_MODEL_ANY,
|
X86_MATCH_VENDOR_FEATURE(TRANSMETA, X86_FEATURE_LONGRUN, NULL),
|
||||||
X86_FEATURE_LONGRUN },
|
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(x86cpu, longrun_ids);
|
MODULE_DEVICE_TABLE(x86cpu, longrun_ids);
|
||||||
|
|
|
@ -231,7 +231,7 @@ static struct cpufreq_driver p4clockmod_driver = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct x86_cpu_id cpufreq_p4_id[] = {
|
static const struct x86_cpu_id cpufreq_p4_id[] = {
|
||||||
{ X86_VENDOR_INTEL, X86_FAMILY_ANY, X86_MODEL_ANY, X86_FEATURE_ACC },
|
X86_MATCH_VENDOR_FEATURE(INTEL, X86_FEATURE_ACC, NULL),
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -258,8 +258,8 @@ static struct cpufreq_driver powernow_k6_driver = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct x86_cpu_id powernow_k6_ids[] = {
|
static const struct x86_cpu_id powernow_k6_ids[] = {
|
||||||
{ X86_VENDOR_AMD, 5, 12 },
|
X86_MATCH_VENDOR_FAM_MODEL(AMD, 5, 12, NULL),
|
||||||
{ X86_VENDOR_AMD, 5, 13 },
|
X86_MATCH_VENDOR_FAM_MODEL(AMD, 5, 13, NULL),
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(x86cpu, powernow_k6_ids);
|
MODULE_DEVICE_TABLE(x86cpu, powernow_k6_ids);
|
||||||
|
|
|
@ -109,7 +109,7 @@ static int check_fsb(unsigned int fsbspeed)
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct x86_cpu_id powernow_k7_cpuids[] = {
|
static const struct x86_cpu_id powernow_k7_cpuids[] = {
|
||||||
{ X86_VENDOR_AMD, 6, },
|
X86_MATCH_VENDOR_FAM(AMD, 6, NULL),
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(x86cpu, powernow_k7_cpuids);
|
MODULE_DEVICE_TABLE(x86cpu, powernow_k7_cpuids);
|
||||||
|
|
|
@ -452,7 +452,7 @@ static int core_voltage_post_transition(struct powernow_k8_data *data,
|
||||||
|
|
||||||
static const struct x86_cpu_id powernow_k8_ids[] = {
|
static const struct x86_cpu_id powernow_k8_ids[] = {
|
||||||
/* IO based frequency switching */
|
/* IO based frequency switching */
|
||||||
{ X86_VENDOR_AMD, 0xf },
|
X86_MATCH_VENDOR_FAM(AMD, 0xf, NULL),
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(x86cpu, powernow_k8_ids);
|
MODULE_DEVICE_TABLE(x86cpu, powernow_k8_ids);
|
||||||
|
|
|
@ -95,7 +95,7 @@ static struct cpufreq_driver sc520_freq_driver = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct x86_cpu_id sc520_ids[] = {
|
static const struct x86_cpu_id sc520_ids[] = {
|
||||||
{ X86_VENDOR_AMD, 4, 9 },
|
X86_MATCH_VENDOR_FAM_MODEL(AMD, 4, 9, NULL),
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(x86cpu, sc520_ids);
|
MODULE_DEVICE_TABLE(x86cpu, sc520_ids);
|
||||||
|
|
|
@ -520,18 +520,12 @@ static struct cpufreq_driver centrino_driver = {
|
||||||
* or ASCII model IDs.
|
* or ASCII model IDs.
|
||||||
*/
|
*/
|
||||||
static const struct x86_cpu_id centrino_ids[] = {
|
static const struct x86_cpu_id centrino_ids[] = {
|
||||||
{ X86_VENDOR_INTEL, 6, 9, X86_FEATURE_EST },
|
X86_MATCH_VENDOR_FAM_MODEL_FEATURE(INTEL, 6, 9, X86_FEATURE_EST, NULL),
|
||||||
{ X86_VENDOR_INTEL, 6, 13, X86_FEATURE_EST },
|
X86_MATCH_VENDOR_FAM_MODEL_FEATURE(INTEL, 6, 13, X86_FEATURE_EST, NULL),
|
||||||
{ X86_VENDOR_INTEL, 6, 13, X86_FEATURE_EST },
|
X86_MATCH_VENDOR_FAM_MODEL_FEATURE(INTEL, 15, 3, X86_FEATURE_EST, NULL),
|
||||||
{ X86_VENDOR_INTEL, 6, 13, X86_FEATURE_EST },
|
X86_MATCH_VENDOR_FAM_MODEL_FEATURE(INTEL, 15, 4, X86_FEATURE_EST, NULL),
|
||||||
{ X86_VENDOR_INTEL, 15, 3, X86_FEATURE_EST },
|
|
||||||
{ X86_VENDOR_INTEL, 15, 4, X86_FEATURE_EST },
|
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
#if 0
|
|
||||||
/* Autoload or not? Do not for now. */
|
|
||||||
MODULE_DEVICE_TABLE(x86cpu, centrino_ids);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* centrino_init - initializes the Enhanced SpeedStep CPUFreq driver
|
* centrino_init - initializes the Enhanced SpeedStep CPUFreq driver
|
||||||
|
|
|
@ -319,15 +319,11 @@ static struct cpufreq_driver speedstep_driver = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct x86_cpu_id ss_smi_ids[] = {
|
static const struct x86_cpu_id ss_smi_ids[] = {
|
||||||
{ X86_VENDOR_INTEL, 6, 0xb, },
|
X86_MATCH_VENDOR_FAM_MODEL(INTEL, 6, 0x8, 0),
|
||||||
{ X86_VENDOR_INTEL, 6, 0x8, },
|
X86_MATCH_VENDOR_FAM_MODEL(INTEL, 6, 0xb, 0),
|
||||||
{ X86_VENDOR_INTEL, 15, 2 },
|
X86_MATCH_VENDOR_FAM_MODEL(INTEL, 15, 0x2, 0),
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
#if 0
|
|
||||||
/* Autoload or not? Do not for now. */
|
|
||||||
MODULE_DEVICE_TABLE(x86cpu, ss_smi_ids);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* speedstep_init - initializes the SpeedStep CPUFreq driver
|
* speedstep_init - initializes the SpeedStep CPUFreq driver
|
||||||
|
|
|
@ -299,15 +299,11 @@ static struct cpufreq_driver speedstep_driver = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct x86_cpu_id ss_smi_ids[] = {
|
static const struct x86_cpu_id ss_smi_ids[] = {
|
||||||
{ X86_VENDOR_INTEL, 6, 0xb, },
|
X86_MATCH_VENDOR_FAM_MODEL(INTEL, 6, 0x8, 0),
|
||||||
{ X86_VENDOR_INTEL, 6, 0x8, },
|
X86_MATCH_VENDOR_FAM_MODEL(INTEL, 6, 0xb, 0),
|
||||||
{ X86_VENDOR_INTEL, 15, 2 },
|
X86_MATCH_VENDOR_FAM_MODEL(INTEL, 15, 0x2, 0),
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
#if 0
|
|
||||||
/* Not auto loaded currently */
|
|
||||||
MODULE_DEVICE_TABLE(x86cpu, ss_smi_ids);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* speedstep_init - initializes the SpeedStep CPUFreq driver
|
* speedstep_init - initializes the SpeedStep CPUFreq driver
|
||||||
|
|
|
@ -474,7 +474,7 @@ static struct skcipher_alg cbc_aes_alg = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct x86_cpu_id padlock_cpu_id[] = {
|
static const struct x86_cpu_id padlock_cpu_id[] = {
|
||||||
X86_FEATURE_MATCH(X86_FEATURE_XCRYPT),
|
X86_MATCH_FEATURE(X86_FEATURE_XCRYPT, NULL),
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(x86cpu, padlock_cpu_id);
|
MODULE_DEVICE_TABLE(x86cpu, padlock_cpu_id);
|
||||||
|
|
|
@ -490,7 +490,7 @@ static struct shash_alg sha256_alg_nano = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct x86_cpu_id padlock_sha_ids[] = {
|
static const struct x86_cpu_id padlock_sha_ids[] = {
|
||||||
X86_FEATURE_MATCH(X86_FEATURE_PHE),
|
X86_MATCH_FEATURE(X86_FEATURE_PHE, NULL),
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(x86cpu, padlock_sha_ids);
|
MODULE_DEVICE_TABLE(x86cpu, padlock_sha_ids);
|
||||||
|
|
|
@ -3626,13 +3626,13 @@ static void setup_pci_device(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct x86_cpu_id amd64_cpuids[] = {
|
static const struct x86_cpu_id amd64_cpuids[] = {
|
||||||
{ X86_VENDOR_AMD, 0xF, X86_MODEL_ANY, X86_FEATURE_ANY, 0 },
|
X86_MATCH_VENDOR_FAM(AMD, 0x0F, NULL),
|
||||||
{ X86_VENDOR_AMD, 0x10, X86_MODEL_ANY, X86_FEATURE_ANY, 0 },
|
X86_MATCH_VENDOR_FAM(AMD, 0x10, NULL),
|
||||||
{ X86_VENDOR_AMD, 0x15, X86_MODEL_ANY, X86_FEATURE_ANY, 0 },
|
X86_MATCH_VENDOR_FAM(AMD, 0x15, NULL),
|
||||||
{ X86_VENDOR_AMD, 0x16, X86_MODEL_ANY, X86_FEATURE_ANY, 0 },
|
X86_MATCH_VENDOR_FAM(AMD, 0x16, NULL),
|
||||||
{ X86_VENDOR_AMD, 0x17, X86_MODEL_ANY, X86_FEATURE_ANY, 0 },
|
X86_MATCH_VENDOR_FAM(AMD, 0x17, NULL),
|
||||||
{ X86_VENDOR_HYGON, 0x18, X86_MODEL_ANY, X86_FEATURE_ANY, 0 },
|
X86_MATCH_VENDOR_FAM(HYGON, 0x18, NULL),
|
||||||
{ X86_VENDOR_AMD, 0x19, X86_MODEL_ANY, X86_FEATURE_ANY, 0 },
|
X86_MATCH_VENDOR_FAM(AMD, 0x19, NULL),
|
||||||
{ }
|
{ }
|
||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(x86cpu, amd64_cpuids);
|
MODULE_DEVICE_TABLE(x86cpu, amd64_cpuids);
|
||||||
|
|
|
@ -123,10 +123,10 @@ static int i10nm_get_all_munits(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct x86_cpu_id i10nm_cpuids[] = {
|
static const struct x86_cpu_id i10nm_cpuids[] = {
|
||||||
{ X86_VENDOR_INTEL, 6, INTEL_FAM6_ATOM_TREMONT_D, 0, 0 },
|
X86_MATCH_INTEL_FAM6_MODEL(ATOM_TREMONT_D, NULL),
|
||||||
{ X86_VENDOR_INTEL, 6, INTEL_FAM6_ICELAKE_X, 0, 0 },
|
X86_MATCH_INTEL_FAM6_MODEL(ICELAKE_X, NULL),
|
||||||
{ X86_VENDOR_INTEL, 6, INTEL_FAM6_ICELAKE_D, 0, 0 },
|
X86_MATCH_INTEL_FAM6_MODEL(ICELAKE_D, NULL),
|
||||||
{ }
|
{}
|
||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(x86cpu, i10nm_cpuids);
|
MODULE_DEVICE_TABLE(x86cpu, i10nm_cpuids);
|
||||||
|
|
||||||
|
|
|
@ -1537,8 +1537,8 @@ static struct dunit_ops dnv_ops = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct x86_cpu_id pnd2_cpuids[] = {
|
static const struct x86_cpu_id pnd2_cpuids[] = {
|
||||||
{ X86_VENDOR_INTEL, 6, INTEL_FAM6_ATOM_GOLDMONT, 0, (kernel_ulong_t)&apl_ops },
|
X86_MATCH_INTEL_FAM6_MODEL(ATOM_GOLDMONT, &apl_ops),
|
||||||
{ X86_VENDOR_INTEL, 6, INTEL_FAM6_ATOM_GOLDMONT_D, 0, (kernel_ulong_t)&dnv_ops },
|
X86_MATCH_INTEL_FAM6_MODEL(ATOM_GOLDMONT_D, &dnv_ops),
|
||||||
{ }
|
{ }
|
||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(x86cpu, pnd2_cpuids);
|
MODULE_DEVICE_TABLE(x86cpu, pnd2_cpuids);
|
||||||
|
|
|
@ -3420,13 +3420,13 @@ static int sbridge_register_mci(struct sbridge_dev *sbridge_dev, enum type type)
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct x86_cpu_id sbridge_cpuids[] = {
|
static const struct x86_cpu_id sbridge_cpuids[] = {
|
||||||
INTEL_CPU_FAM6(SANDYBRIDGE_X, pci_dev_descr_sbridge_table),
|
X86_MATCH_INTEL_FAM6_MODEL(SANDYBRIDGE_X, &pci_dev_descr_sbridge_table),
|
||||||
INTEL_CPU_FAM6(IVYBRIDGE_X, pci_dev_descr_ibridge_table),
|
X86_MATCH_INTEL_FAM6_MODEL(IVYBRIDGE_X, &pci_dev_descr_ibridge_table),
|
||||||
INTEL_CPU_FAM6(HASWELL_X, pci_dev_descr_haswell_table),
|
X86_MATCH_INTEL_FAM6_MODEL(HASWELL_X, &pci_dev_descr_haswell_table),
|
||||||
INTEL_CPU_FAM6(BROADWELL_X, pci_dev_descr_broadwell_table),
|
X86_MATCH_INTEL_FAM6_MODEL(BROADWELL_X, &pci_dev_descr_broadwell_table),
|
||||||
INTEL_CPU_FAM6(BROADWELL_D, pci_dev_descr_broadwell_table),
|
X86_MATCH_INTEL_FAM6_MODEL(BROADWELL_D, &pci_dev_descr_broadwell_table),
|
||||||
INTEL_CPU_FAM6(XEON_PHI_KNL, pci_dev_descr_knl_table),
|
X86_MATCH_INTEL_FAM6_MODEL(XEON_PHI_KNL, &pci_dev_descr_knl_table),
|
||||||
INTEL_CPU_FAM6(XEON_PHI_KNM, pci_dev_descr_knl_table),
|
X86_MATCH_INTEL_FAM6_MODEL(XEON_PHI_KNM, &pci_dev_descr_knl_table),
|
||||||
{ }
|
{ }
|
||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(x86cpu, sbridge_cpuids);
|
MODULE_DEVICE_TABLE(x86cpu, sbridge_cpuids);
|
||||||
|
|
|
@ -158,7 +158,7 @@ static int get_all_munits(const struct munit *m)
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct x86_cpu_id skx_cpuids[] = {
|
static const struct x86_cpu_id skx_cpuids[] = {
|
||||||
{ X86_VENDOR_INTEL, 6, INTEL_FAM6_SKYLAKE_X, 0, 0 },
|
X86_MATCH_INTEL_FAM6_MODEL(SKYLAKE_X, NULL),
|
||||||
{ }
|
{ }
|
||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(x86cpu, skx_cpuids);
|
MODULE_DEVICE_TABLE(x86cpu, skx_cpuids);
|
||||||
|
|
|
@ -107,7 +107,7 @@ struct axp288_extcon_info {
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct x86_cpu_id cherry_trail_cpu_ids[] = {
|
static const struct x86_cpu_id cherry_trail_cpu_ids[] = {
|
||||||
{ X86_VENDOR_INTEL, 6, INTEL_FAM6_ATOM_AIRMONT, X86_FEATURE_ANY },
|
X86_MATCH_INTEL_FAM6_MODEL(ATOM_AIRMONT, NULL),
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -709,7 +709,7 @@ static int coretemp_cpu_offline(unsigned int cpu)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
static const struct x86_cpu_id __initconst coretemp_ids[] = {
|
static const struct x86_cpu_id __initconst coretemp_ids[] = {
|
||||||
{ X86_VENDOR_INTEL, X86_FAMILY_ANY, X86_MODEL_ANY, X86_FEATURE_DTHERM },
|
X86_MATCH_VENDOR_FEATURE(INTEL, X86_FEATURE_DTHERM, NULL),
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(x86cpu, coretemp_ids);
|
MODULE_DEVICE_TABLE(x86cpu, coretemp_ids);
|
||||||
|
|
|
@ -270,10 +270,10 @@ static int via_cputemp_down_prep(unsigned int cpu)
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct x86_cpu_id __initconst cputemp_ids[] = {
|
static const struct x86_cpu_id __initconst cputemp_ids[] = {
|
||||||
{ X86_VENDOR_CENTAUR, 6, 0xa, }, /* C7 A */
|
X86_MATCH_VENDOR_FAM_MODEL(CENTAUR, 6, X86_CENTAUR_FAM6_C7_A, NULL),
|
||||||
{ X86_VENDOR_CENTAUR, 6, 0xd, }, /* C7 D */
|
X86_MATCH_VENDOR_FAM_MODEL(CENTAUR, 6, X86_CENTAUR_FAM6_C7_D, NULL),
|
||||||
{ X86_VENDOR_CENTAUR, 6, 0xf, }, /* Nano */
|
X86_MATCH_VENDOR_FAM_MODEL(CENTAUR, 6, X86_CENTAUR_FAM6_NANO, NULL),
|
||||||
{ X86_VENDOR_CENTAUR, 7, X86_MODEL_ANY, },
|
X86_MATCH_VENDOR_FAM_MODEL(CENTAUR, 7, X86_MODEL_ANY, NULL),
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(x86cpu, cputemp_ids);
|
MODULE_DEVICE_TABLE(x86cpu, cputemp_ids);
|
||||||
|
|
|
@ -1068,51 +1068,48 @@ static const struct idle_cpu idle_cpu_dnv = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct x86_cpu_id intel_idle_ids[] __initconst = {
|
static const struct x86_cpu_id intel_idle_ids[] __initconst = {
|
||||||
INTEL_CPU_FAM6(NEHALEM_EP, idle_cpu_nhx),
|
X86_MATCH_INTEL_FAM6_MODEL(NEHALEM_EP, &idle_cpu_nhx),
|
||||||
INTEL_CPU_FAM6(NEHALEM, idle_cpu_nehalem),
|
X86_MATCH_INTEL_FAM6_MODEL(NEHALEM, &idle_cpu_nehalem),
|
||||||
INTEL_CPU_FAM6(NEHALEM_G, idle_cpu_nehalem),
|
X86_MATCH_INTEL_FAM6_MODEL(NEHALEM_G, &idle_cpu_nehalem),
|
||||||
INTEL_CPU_FAM6(WESTMERE, idle_cpu_nehalem),
|
X86_MATCH_INTEL_FAM6_MODEL(WESTMERE, &idle_cpu_nehalem),
|
||||||
INTEL_CPU_FAM6(WESTMERE_EP, idle_cpu_nhx),
|
X86_MATCH_INTEL_FAM6_MODEL(WESTMERE_EP, &idle_cpu_nhx),
|
||||||
INTEL_CPU_FAM6(NEHALEM_EX, idle_cpu_nhx),
|
X86_MATCH_INTEL_FAM6_MODEL(NEHALEM_EX, &idle_cpu_nhx),
|
||||||
INTEL_CPU_FAM6(ATOM_BONNELL, idle_cpu_atom),
|
X86_MATCH_INTEL_FAM6_MODEL(ATOM_BONNELL, &idle_cpu_atom),
|
||||||
INTEL_CPU_FAM6(ATOM_BONNELL_MID, idle_cpu_lincroft),
|
X86_MATCH_INTEL_FAM6_MODEL(ATOM_BONNELL_MID, &idle_cpu_lincroft),
|
||||||
INTEL_CPU_FAM6(WESTMERE_EX, idle_cpu_nhx),
|
X86_MATCH_INTEL_FAM6_MODEL(WESTMERE_EX, &idle_cpu_nhx),
|
||||||
INTEL_CPU_FAM6(SANDYBRIDGE, idle_cpu_snb),
|
X86_MATCH_INTEL_FAM6_MODEL(SANDYBRIDGE, &idle_cpu_snb),
|
||||||
INTEL_CPU_FAM6(SANDYBRIDGE_X, idle_cpu_snx),
|
X86_MATCH_INTEL_FAM6_MODEL(SANDYBRIDGE_X, &idle_cpu_snx),
|
||||||
INTEL_CPU_FAM6(ATOM_SALTWELL, idle_cpu_atom),
|
X86_MATCH_INTEL_FAM6_MODEL(ATOM_SALTWELL, &idle_cpu_atom),
|
||||||
INTEL_CPU_FAM6(ATOM_SILVERMONT, idle_cpu_byt),
|
X86_MATCH_INTEL_FAM6_MODEL(ATOM_SILVERMONT, &idle_cpu_byt),
|
||||||
INTEL_CPU_FAM6(ATOM_SILVERMONT_MID, idle_cpu_tangier),
|
X86_MATCH_INTEL_FAM6_MODEL(ATOM_SILVERMONT_MID, &idle_cpu_tangier),
|
||||||
INTEL_CPU_FAM6(ATOM_AIRMONT, idle_cpu_cht),
|
X86_MATCH_INTEL_FAM6_MODEL(ATOM_AIRMONT, &idle_cpu_cht),
|
||||||
INTEL_CPU_FAM6(IVYBRIDGE, idle_cpu_ivb),
|
X86_MATCH_INTEL_FAM6_MODEL(IVYBRIDGE, &idle_cpu_ivb),
|
||||||
INTEL_CPU_FAM6(IVYBRIDGE_X, idle_cpu_ivt),
|
X86_MATCH_INTEL_FAM6_MODEL(IVYBRIDGE_X, &idle_cpu_ivt),
|
||||||
INTEL_CPU_FAM6(HASWELL, idle_cpu_hsw),
|
X86_MATCH_INTEL_FAM6_MODEL(HASWELL, &idle_cpu_hsw),
|
||||||
INTEL_CPU_FAM6(HASWELL_X, idle_cpu_hsx),
|
X86_MATCH_INTEL_FAM6_MODEL(HASWELL_X, &idle_cpu_hsx),
|
||||||
INTEL_CPU_FAM6(HASWELL_L, idle_cpu_hsw),
|
X86_MATCH_INTEL_FAM6_MODEL(HASWELL_L, &idle_cpu_hsw),
|
||||||
INTEL_CPU_FAM6(HASWELL_G, idle_cpu_hsw),
|
X86_MATCH_INTEL_FAM6_MODEL(HASWELL_G, &idle_cpu_hsw),
|
||||||
INTEL_CPU_FAM6(ATOM_SILVERMONT_D, idle_cpu_avn),
|
X86_MATCH_INTEL_FAM6_MODEL(ATOM_SILVERMONT_D, &idle_cpu_avn),
|
||||||
INTEL_CPU_FAM6(BROADWELL, idle_cpu_bdw),
|
X86_MATCH_INTEL_FAM6_MODEL(BROADWELL, &idle_cpu_bdw),
|
||||||
INTEL_CPU_FAM6(BROADWELL_G, idle_cpu_bdw),
|
X86_MATCH_INTEL_FAM6_MODEL(BROADWELL_G, &idle_cpu_bdw),
|
||||||
INTEL_CPU_FAM6(BROADWELL_X, idle_cpu_bdx),
|
X86_MATCH_INTEL_FAM6_MODEL(BROADWELL_X, &idle_cpu_bdx),
|
||||||
INTEL_CPU_FAM6(BROADWELL_D, idle_cpu_bdx),
|
X86_MATCH_INTEL_FAM6_MODEL(BROADWELL_D, &idle_cpu_bdx),
|
||||||
INTEL_CPU_FAM6(SKYLAKE_L, idle_cpu_skl),
|
X86_MATCH_INTEL_FAM6_MODEL(SKYLAKE_L, &idle_cpu_skl),
|
||||||
INTEL_CPU_FAM6(SKYLAKE, idle_cpu_skl),
|
X86_MATCH_INTEL_FAM6_MODEL(SKYLAKE, &idle_cpu_skl),
|
||||||
INTEL_CPU_FAM6(KABYLAKE_L, idle_cpu_skl),
|
X86_MATCH_INTEL_FAM6_MODEL(KABYLAKE_L, &idle_cpu_skl),
|
||||||
INTEL_CPU_FAM6(KABYLAKE, idle_cpu_skl),
|
X86_MATCH_INTEL_FAM6_MODEL(KABYLAKE, &idle_cpu_skl),
|
||||||
INTEL_CPU_FAM6(SKYLAKE_X, idle_cpu_skx),
|
X86_MATCH_INTEL_FAM6_MODEL(SKYLAKE_X, &idle_cpu_skx),
|
||||||
INTEL_CPU_FAM6(XEON_PHI_KNL, idle_cpu_knl),
|
X86_MATCH_INTEL_FAM6_MODEL(XEON_PHI_KNL, &idle_cpu_knl),
|
||||||
INTEL_CPU_FAM6(XEON_PHI_KNM, idle_cpu_knl),
|
X86_MATCH_INTEL_FAM6_MODEL(XEON_PHI_KNM, &idle_cpu_knl),
|
||||||
INTEL_CPU_FAM6(ATOM_GOLDMONT, idle_cpu_bxt),
|
X86_MATCH_INTEL_FAM6_MODEL(ATOM_GOLDMONT, &idle_cpu_bxt),
|
||||||
INTEL_CPU_FAM6(ATOM_GOLDMONT_PLUS, idle_cpu_bxt),
|
X86_MATCH_INTEL_FAM6_MODEL(ATOM_GOLDMONT_PLUS, &idle_cpu_bxt),
|
||||||
INTEL_CPU_FAM6(ATOM_GOLDMONT_D, idle_cpu_dnv),
|
X86_MATCH_INTEL_FAM6_MODEL(ATOM_GOLDMONT_D, &idle_cpu_dnv),
|
||||||
INTEL_CPU_FAM6(ATOM_TREMONT_D, idle_cpu_dnv),
|
X86_MATCH_INTEL_FAM6_MODEL(ATOM_TREMONT_D, &idle_cpu_dnv),
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
|
|
||||||
#define INTEL_CPU_FAM6_MWAIT \
|
|
||||||
{ X86_VENDOR_INTEL, 6, X86_MODEL_ANY, X86_FEATURE_MWAIT, 0 }
|
|
||||||
|
|
||||||
static const struct x86_cpu_id intel_mwait_ids[] __initconst = {
|
static const struct x86_cpu_id intel_mwait_ids[] __initconst = {
|
||||||
INTEL_CPU_FAM6_MWAIT,
|
X86_MATCH_VENDOR_FAM_FEATURE(INTEL, 6, X86_FEATURE_MWAIT, NULL),
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -234,7 +234,7 @@ static const struct sdhci_acpi_chip sdhci_acpi_chip_int = {
|
||||||
static bool sdhci_acpi_byt(void)
|
static bool sdhci_acpi_byt(void)
|
||||||
{
|
{
|
||||||
static const struct x86_cpu_id byt[] = {
|
static const struct x86_cpu_id byt[] = {
|
||||||
{ X86_VENDOR_INTEL, 6, INTEL_FAM6_ATOM_SILVERMONT },
|
X86_MATCH_INTEL_FAM6_MODEL(ATOM_SILVERMONT, NULL),
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -244,7 +244,7 @@ static bool sdhci_acpi_byt(void)
|
||||||
static bool sdhci_acpi_cht(void)
|
static bool sdhci_acpi_cht(void)
|
||||||
{
|
{
|
||||||
static const struct x86_cpu_id cht[] = {
|
static const struct x86_cpu_id cht[] = {
|
||||||
{ X86_VENDOR_INTEL, 6, INTEL_FAM6_ATOM_AIRMONT },
|
X86_MATCH_INTEL_FAM6_MODEL(ATOM_AIRMONT, NULL),
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -55,15 +55,13 @@ static const struct pci_platform_pm_ops mid_pci_platform_pm = {
|
||||||
.need_resume = mid_pci_need_resume,
|
.need_resume = mid_pci_need_resume,
|
||||||
};
|
};
|
||||||
|
|
||||||
#define ICPU(model) { X86_VENDOR_INTEL, 6, model, X86_FEATURE_ANY, }
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This table should be in sync with the one in
|
* This table should be in sync with the one in
|
||||||
* arch/x86/platform/intel-mid/pwr.c.
|
* arch/x86/platform/intel-mid/pwr.c.
|
||||||
*/
|
*/
|
||||||
static const struct x86_cpu_id lpss_cpu_ids[] = {
|
static const struct x86_cpu_id lpss_cpu_ids[] = {
|
||||||
ICPU(INTEL_FAM6_ATOM_SALTWELL_MID),
|
X86_MATCH_INTEL_FAM6_MODEL(ATOM_SALTWELL_MID, NULL),
|
||||||
ICPU(INTEL_FAM6_ATOM_SILVERMONT_MID),
|
X86_MATCH_INTEL_FAM6_MODEL(ATOM_SILVERMONT_MID, NULL),
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -358,15 +358,13 @@ static struct notifier_block uncore_pm_nb = {
|
||||||
.notifier_call = uncore_pm_notify,
|
.notifier_call = uncore_pm_notify,
|
||||||
};
|
};
|
||||||
|
|
||||||
#define ICPU(model) { X86_VENDOR_INTEL, 6, model, X86_FEATURE_ANY, }
|
|
||||||
|
|
||||||
static const struct x86_cpu_id intel_uncore_cpu_ids[] = {
|
static const struct x86_cpu_id intel_uncore_cpu_ids[] = {
|
||||||
ICPU(INTEL_FAM6_BROADWELL_G),
|
X86_MATCH_INTEL_FAM6_MODEL(BROADWELL_G, NULL),
|
||||||
ICPU(INTEL_FAM6_BROADWELL_X),
|
X86_MATCH_INTEL_FAM6_MODEL(BROADWELL_X, NULL),
|
||||||
ICPU(INTEL_FAM6_BROADWELL_D),
|
X86_MATCH_INTEL_FAM6_MODEL(BROADWELL_D, NULL),
|
||||||
ICPU(INTEL_FAM6_SKYLAKE_X),
|
X86_MATCH_INTEL_FAM6_MODEL(SKYLAKE_X, NULL),
|
||||||
ICPU(INTEL_FAM6_ICELAKE_X),
|
X86_MATCH_INTEL_FAM6_MODEL(ICELAKE_X, NULL),
|
||||||
ICPU(INTEL_FAM6_ICELAKE_D),
|
X86_MATCH_INTEL_FAM6_MODEL(ICELAKE_D, NULL),
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -148,8 +148,8 @@ static struct irq_chip int0002_cht_irqchip = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct x86_cpu_id int0002_cpu_ids[] = {
|
static const struct x86_cpu_id int0002_cpu_ids[] = {
|
||||||
INTEL_CPU_FAM6(ATOM_SILVERMONT, int0002_byt_irqchip), /* Valleyview, Bay Trail */
|
X86_MATCH_INTEL_FAM6_MODEL(ATOM_SILVERMONT, &int0002_byt_irqchip),
|
||||||
INTEL_CPU_FAM6(ATOM_AIRMONT, int0002_cht_irqchip), /* Braswell, Cherry Trail */
|
X86_MATCH_INTEL_FAM6_MODEL(ATOM_AIRMONT, &int0002_cht_irqchip),
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -113,8 +113,8 @@ static const struct mid_pb_ddata mrfld_ddata = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct x86_cpu_id mid_pb_cpu_ids[] = {
|
static const struct x86_cpu_id mid_pb_cpu_ids[] = {
|
||||||
INTEL_CPU_FAM6(ATOM_SALTWELL_MID, mfld_ddata),
|
X86_MATCH_INTEL_FAM6_MODEL(ATOM_SALTWELL_MID, &mfld_ddata),
|
||||||
INTEL_CPU_FAM6(ATOM_SILVERMONT_MID, mrfld_ddata),
|
X86_MATCH_INTEL_FAM6_MODEL(ATOM_SILVERMONT_MID, &mrfld_ddata),
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -871,18 +871,18 @@ static inline void pmc_core_dbgfs_unregister(struct pmc_dev *pmcdev)
|
||||||
#endif /* CONFIG_DEBUG_FS */
|
#endif /* CONFIG_DEBUG_FS */
|
||||||
|
|
||||||
static const struct x86_cpu_id intel_pmc_core_ids[] = {
|
static const struct x86_cpu_id intel_pmc_core_ids[] = {
|
||||||
INTEL_CPU_FAM6(SKYLAKE_L, spt_reg_map),
|
X86_MATCH_INTEL_FAM6_MODEL(SKYLAKE_L, &spt_reg_map),
|
||||||
INTEL_CPU_FAM6(SKYLAKE, spt_reg_map),
|
X86_MATCH_INTEL_FAM6_MODEL(SKYLAKE, &spt_reg_map),
|
||||||
INTEL_CPU_FAM6(KABYLAKE_L, spt_reg_map),
|
X86_MATCH_INTEL_FAM6_MODEL(KABYLAKE_L, &spt_reg_map),
|
||||||
INTEL_CPU_FAM6(KABYLAKE, spt_reg_map),
|
X86_MATCH_INTEL_FAM6_MODEL(KABYLAKE, &spt_reg_map),
|
||||||
INTEL_CPU_FAM6(CANNONLAKE_L, cnp_reg_map),
|
X86_MATCH_INTEL_FAM6_MODEL(CANNONLAKE_L, &cnp_reg_map),
|
||||||
INTEL_CPU_FAM6(ICELAKE_L, icl_reg_map),
|
X86_MATCH_INTEL_FAM6_MODEL(ICELAKE_L, &icl_reg_map),
|
||||||
INTEL_CPU_FAM6(ICELAKE_NNPI, icl_reg_map),
|
X86_MATCH_INTEL_FAM6_MODEL(ICELAKE_NNPI, &icl_reg_map),
|
||||||
INTEL_CPU_FAM6(COMETLAKE, cnp_reg_map),
|
X86_MATCH_INTEL_FAM6_MODEL(COMETLAKE, &cnp_reg_map),
|
||||||
INTEL_CPU_FAM6(COMETLAKE_L, cnp_reg_map),
|
X86_MATCH_INTEL_FAM6_MODEL(COMETLAKE_L, &cnp_reg_map),
|
||||||
INTEL_CPU_FAM6(TIGERLAKE_L, tgl_reg_map),
|
X86_MATCH_INTEL_FAM6_MODEL(TIGERLAKE_L, &tgl_reg_map),
|
||||||
INTEL_CPU_FAM6(TIGERLAKE, tgl_reg_map),
|
X86_MATCH_INTEL_FAM6_MODEL(TIGERLAKE, &tgl_reg_map),
|
||||||
INTEL_CPU_FAM6(ATOM_TREMONT, tgl_reg_map),
|
X86_MATCH_INTEL_FAM6_MODEL(ATOM_TREMONT, &tgl_reg_map),
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -38,14 +38,14 @@ static struct platform_device pmc_core_device = {
|
||||||
* other list may grow, but this list should not.
|
* other list may grow, but this list should not.
|
||||||
*/
|
*/
|
||||||
static const struct x86_cpu_id intel_pmc_core_platform_ids[] = {
|
static const struct x86_cpu_id intel_pmc_core_platform_ids[] = {
|
||||||
INTEL_CPU_FAM6(SKYLAKE_L, pmc_core_device),
|
X86_MATCH_INTEL_FAM6_MODEL(SKYLAKE_L, &pmc_core_device),
|
||||||
INTEL_CPU_FAM6(SKYLAKE, pmc_core_device),
|
X86_MATCH_INTEL_FAM6_MODEL(SKYLAKE, &pmc_core_device),
|
||||||
INTEL_CPU_FAM6(KABYLAKE_L, pmc_core_device),
|
X86_MATCH_INTEL_FAM6_MODEL(KABYLAKE_L, &pmc_core_device),
|
||||||
INTEL_CPU_FAM6(KABYLAKE, pmc_core_device),
|
X86_MATCH_INTEL_FAM6_MODEL(KABYLAKE, &pmc_core_device),
|
||||||
INTEL_CPU_FAM6(CANNONLAKE_L, pmc_core_device),
|
X86_MATCH_INTEL_FAM6_MODEL(CANNONLAKE_L, &pmc_core_device),
|
||||||
INTEL_CPU_FAM6(ICELAKE_L, pmc_core_device),
|
X86_MATCH_INTEL_FAM6_MODEL(ICELAKE_L, &pmc_core_device),
|
||||||
INTEL_CPU_FAM6(COMETLAKE, pmc_core_device),
|
X86_MATCH_INTEL_FAM6_MODEL(COMETLAKE, &pmc_core_device),
|
||||||
INTEL_CPU_FAM6(COMETLAKE_L, pmc_core_device),
|
X86_MATCH_INTEL_FAM6_MODEL(COMETLAKE_L, &pmc_core_device),
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(x86cpu, intel_pmc_core_platform_ids);
|
MODULE_DEVICE_TABLE(x86cpu, intel_pmc_core_platform_ids);
|
||||||
|
|
|
@ -160,10 +160,8 @@ static struct notifier_block isst_pm_nb = {
|
||||||
.notifier_call = isst_pm_notify,
|
.notifier_call = isst_pm_notify,
|
||||||
};
|
};
|
||||||
|
|
||||||
#define ICPU(model) { X86_VENDOR_INTEL, 6, model, X86_FEATURE_ANY, }
|
|
||||||
|
|
||||||
static const struct x86_cpu_id isst_if_cpu_ids[] = {
|
static const struct x86_cpu_id isst_if_cpu_ids[] = {
|
||||||
ICPU(INTEL_FAM6_SKYLAKE_X),
|
X86_MATCH_INTEL_FAM6_MODEL(SKYLAKE_X, NULL),
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(x86cpu, isst_if_cpu_ids);
|
MODULE_DEVICE_TABLE(x86cpu, isst_if_cpu_ids);
|
||||||
|
|
|
@ -308,11 +308,10 @@ static struct telemetry_debugfs_conf telem_apl_debugfs_conf = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct x86_cpu_id telemetry_debugfs_cpu_ids[] = {
|
static const struct x86_cpu_id telemetry_debugfs_cpu_ids[] = {
|
||||||
INTEL_CPU_FAM6(ATOM_GOLDMONT, telem_apl_debugfs_conf),
|
X86_MATCH_INTEL_FAM6_MODEL(ATOM_GOLDMONT, &telem_apl_debugfs_conf),
|
||||||
INTEL_CPU_FAM6(ATOM_GOLDMONT_PLUS, telem_apl_debugfs_conf),
|
X86_MATCH_INTEL_FAM6_MODEL(ATOM_GOLDMONT_PLUS, &telem_apl_debugfs_conf),
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
|
|
||||||
MODULE_DEVICE_TABLE(x86cpu, telemetry_debugfs_cpu_ids);
|
MODULE_DEVICE_TABLE(x86cpu, telemetry_debugfs_cpu_ids);
|
||||||
|
|
||||||
static int telemetry_debugfs_check_evts(void)
|
static int telemetry_debugfs_check_evts(void)
|
||||||
|
|
|
@ -67,9 +67,6 @@
|
||||||
#define TELEM_CLEAR_VERBOSITY_BITS(x) ((x) &= ~(BIT(27) | BIT(28)))
|
#define TELEM_CLEAR_VERBOSITY_BITS(x) ((x) &= ~(BIT(27) | BIT(28)))
|
||||||
#define TELEM_SET_VERBOSITY_BITS(x, y) ((x) |= ((y) << 27))
|
#define TELEM_SET_VERBOSITY_BITS(x, y) ((x) |= ((y) << 27))
|
||||||
|
|
||||||
#define TELEM_CPU(model, data) \
|
|
||||||
{ X86_VENDOR_INTEL, 6, model, X86_FEATURE_ANY, (unsigned long)&data }
|
|
||||||
|
|
||||||
enum telemetry_action {
|
enum telemetry_action {
|
||||||
TELEM_UPDATE = 0,
|
TELEM_UPDATE = 0,
|
||||||
TELEM_ADD,
|
TELEM_ADD,
|
||||||
|
@ -183,8 +180,8 @@ static struct telemetry_plt_config telem_glk_config = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct x86_cpu_id telemetry_cpu_ids[] = {
|
static const struct x86_cpu_id telemetry_cpu_ids[] = {
|
||||||
TELEM_CPU(INTEL_FAM6_ATOM_GOLDMONT, telem_apl_config),
|
X86_MATCH_INTEL_FAM6_MODEL(ATOM_GOLDMONT, &telem_apl_config),
|
||||||
TELEM_CPU(INTEL_FAM6_ATOM_GOLDMONT_PLUS, telem_glk_config),
|
X86_MATCH_INTEL_FAM6_MODEL(ATOM_GOLDMONT_PLUS, &telem_glk_config),
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -113,11 +113,9 @@ static int itmt_legacy_cpu_online(unsigned int cpu)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define ICPU(model) { X86_VENDOR_INTEL, 6, model, X86_FEATURE_ANY, }
|
|
||||||
|
|
||||||
static const struct x86_cpu_id itmt_legacy_cpu_ids[] = {
|
static const struct x86_cpu_id itmt_legacy_cpu_ids[] = {
|
||||||
ICPU(INTEL_FAM6_BROADWELL_X),
|
X86_MATCH_INTEL_FAM6_MODEL(BROADWELL_X, NULL),
|
||||||
ICPU(INTEL_FAM6_SKYLAKE_X),
|
X86_MATCH_INTEL_FAM6_MODEL(SKYLAKE_X, NULL),
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -951,52 +951,51 @@ static const struct rapl_defaults rapl_defaults_cht = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct x86_cpu_id rapl_ids[] __initconst = {
|
static const struct x86_cpu_id rapl_ids[] __initconst = {
|
||||||
INTEL_CPU_FAM6(SANDYBRIDGE, rapl_defaults_core),
|
X86_MATCH_INTEL_FAM6_MODEL(SANDYBRIDGE, &rapl_defaults_core),
|
||||||
INTEL_CPU_FAM6(SANDYBRIDGE_X, rapl_defaults_core),
|
X86_MATCH_INTEL_FAM6_MODEL(SANDYBRIDGE_X, &rapl_defaults_core),
|
||||||
|
|
||||||
INTEL_CPU_FAM6(IVYBRIDGE, rapl_defaults_core),
|
X86_MATCH_INTEL_FAM6_MODEL(IVYBRIDGE, &rapl_defaults_core),
|
||||||
INTEL_CPU_FAM6(IVYBRIDGE_X, rapl_defaults_core),
|
X86_MATCH_INTEL_FAM6_MODEL(IVYBRIDGE_X, &rapl_defaults_core),
|
||||||
|
|
||||||
INTEL_CPU_FAM6(HASWELL, rapl_defaults_core),
|
X86_MATCH_INTEL_FAM6_MODEL(HASWELL, &rapl_defaults_core),
|
||||||
INTEL_CPU_FAM6(HASWELL_L, rapl_defaults_core),
|
X86_MATCH_INTEL_FAM6_MODEL(HASWELL_L, &rapl_defaults_core),
|
||||||
INTEL_CPU_FAM6(HASWELL_G, rapl_defaults_core),
|
X86_MATCH_INTEL_FAM6_MODEL(HASWELL_G, &rapl_defaults_core),
|
||||||
INTEL_CPU_FAM6(HASWELL_X, rapl_defaults_hsw_server),
|
X86_MATCH_INTEL_FAM6_MODEL(HASWELL_X, &rapl_defaults_hsw_server),
|
||||||
|
|
||||||
INTEL_CPU_FAM6(BROADWELL, rapl_defaults_core),
|
X86_MATCH_INTEL_FAM6_MODEL(BROADWELL, &rapl_defaults_core),
|
||||||
INTEL_CPU_FAM6(BROADWELL_G, rapl_defaults_core),
|
X86_MATCH_INTEL_FAM6_MODEL(BROADWELL_G, &rapl_defaults_core),
|
||||||
INTEL_CPU_FAM6(BROADWELL_D, rapl_defaults_core),
|
X86_MATCH_INTEL_FAM6_MODEL(BROADWELL_D, &rapl_defaults_core),
|
||||||
INTEL_CPU_FAM6(BROADWELL_X, rapl_defaults_hsw_server),
|
X86_MATCH_INTEL_FAM6_MODEL(BROADWELL_X, &rapl_defaults_hsw_server),
|
||||||
|
|
||||||
INTEL_CPU_FAM6(SKYLAKE, rapl_defaults_core),
|
X86_MATCH_INTEL_FAM6_MODEL(SKYLAKE, &rapl_defaults_core),
|
||||||
INTEL_CPU_FAM6(SKYLAKE_L, rapl_defaults_core),
|
X86_MATCH_INTEL_FAM6_MODEL(SKYLAKE_L, &rapl_defaults_core),
|
||||||
INTEL_CPU_FAM6(SKYLAKE_X, rapl_defaults_hsw_server),
|
X86_MATCH_INTEL_FAM6_MODEL(SKYLAKE_X, &rapl_defaults_hsw_server),
|
||||||
INTEL_CPU_FAM6(KABYLAKE_L, rapl_defaults_core),
|
X86_MATCH_INTEL_FAM6_MODEL(KABYLAKE_L, &rapl_defaults_core),
|
||||||
INTEL_CPU_FAM6(KABYLAKE, rapl_defaults_core),
|
X86_MATCH_INTEL_FAM6_MODEL(KABYLAKE, &rapl_defaults_core),
|
||||||
INTEL_CPU_FAM6(CANNONLAKE_L, rapl_defaults_core),
|
X86_MATCH_INTEL_FAM6_MODEL(CANNONLAKE_L, &rapl_defaults_core),
|
||||||
INTEL_CPU_FAM6(ICELAKE_L, rapl_defaults_core),
|
X86_MATCH_INTEL_FAM6_MODEL(ICELAKE_L, &rapl_defaults_core),
|
||||||
INTEL_CPU_FAM6(ICELAKE, rapl_defaults_core),
|
X86_MATCH_INTEL_FAM6_MODEL(ICELAKE, &rapl_defaults_core),
|
||||||
INTEL_CPU_FAM6(ICELAKE_NNPI, rapl_defaults_core),
|
X86_MATCH_INTEL_FAM6_MODEL(ICELAKE_NNPI, &rapl_defaults_core),
|
||||||
INTEL_CPU_FAM6(ICELAKE_X, rapl_defaults_hsw_server),
|
X86_MATCH_INTEL_FAM6_MODEL(ICELAKE_X, &rapl_defaults_hsw_server),
|
||||||
INTEL_CPU_FAM6(ICELAKE_D, rapl_defaults_hsw_server),
|
X86_MATCH_INTEL_FAM6_MODEL(ICELAKE_D, &rapl_defaults_hsw_server),
|
||||||
INTEL_CPU_FAM6(COMETLAKE_L, rapl_defaults_core),
|
X86_MATCH_INTEL_FAM6_MODEL(COMETLAKE_L, &rapl_defaults_core),
|
||||||
INTEL_CPU_FAM6(COMETLAKE, rapl_defaults_core),
|
X86_MATCH_INTEL_FAM6_MODEL(COMETLAKE, &rapl_defaults_core),
|
||||||
INTEL_CPU_FAM6(TIGERLAKE_L, rapl_defaults_core),
|
X86_MATCH_INTEL_FAM6_MODEL(TIGERLAKE_L, &rapl_defaults_core),
|
||||||
|
|
||||||
INTEL_CPU_FAM6(ATOM_SILVERMONT, rapl_defaults_byt),
|
X86_MATCH_INTEL_FAM6_MODEL(ATOM_SILVERMONT, &rapl_defaults_byt),
|
||||||
INTEL_CPU_FAM6(ATOM_AIRMONT, rapl_defaults_cht),
|
X86_MATCH_INTEL_FAM6_MODEL(ATOM_AIRMONT, &rapl_defaults_cht),
|
||||||
INTEL_CPU_FAM6(ATOM_SILVERMONT_MID, rapl_defaults_tng),
|
X86_MATCH_INTEL_FAM6_MODEL(ATOM_SILVERMONT_MID, &rapl_defaults_tng),
|
||||||
INTEL_CPU_FAM6(ATOM_AIRMONT_MID, rapl_defaults_ann),
|
X86_MATCH_INTEL_FAM6_MODEL(ATOM_AIRMONT_MID, &rapl_defaults_ann),
|
||||||
INTEL_CPU_FAM6(ATOM_GOLDMONT, rapl_defaults_core),
|
X86_MATCH_INTEL_FAM6_MODEL(ATOM_GOLDMONT, &rapl_defaults_core),
|
||||||
INTEL_CPU_FAM6(ATOM_GOLDMONT_PLUS, rapl_defaults_core),
|
X86_MATCH_INTEL_FAM6_MODEL(ATOM_GOLDMONT_PLUS, &rapl_defaults_core),
|
||||||
INTEL_CPU_FAM6(ATOM_GOLDMONT_D, rapl_defaults_core),
|
X86_MATCH_INTEL_FAM6_MODEL(ATOM_GOLDMONT_D, &rapl_defaults_core),
|
||||||
INTEL_CPU_FAM6(ATOM_TREMONT_D, rapl_defaults_core),
|
X86_MATCH_INTEL_FAM6_MODEL(ATOM_TREMONT_D, &rapl_defaults_core),
|
||||||
INTEL_CPU_FAM6(ATOM_TREMONT_L, rapl_defaults_core),
|
X86_MATCH_INTEL_FAM6_MODEL(ATOM_TREMONT_L, &rapl_defaults_core),
|
||||||
|
|
||||||
INTEL_CPU_FAM6(XEON_PHI_KNL, rapl_defaults_hsw_server),
|
X86_MATCH_INTEL_FAM6_MODEL(XEON_PHI_KNL, &rapl_defaults_hsw_server),
|
||||||
INTEL_CPU_FAM6(XEON_PHI_KNM, rapl_defaults_hsw_server),
|
X86_MATCH_INTEL_FAM6_MODEL(XEON_PHI_KNM, &rapl_defaults_hsw_server),
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
|
|
||||||
MODULE_DEVICE_TABLE(x86cpu, rapl_ids);
|
MODULE_DEVICE_TABLE(x86cpu, rapl_ids);
|
||||||
|
|
||||||
/* Read once for all raw primitive data for domains */
|
/* Read once for all raw primitive data for domains */
|
||||||
|
|
|
@ -651,7 +651,7 @@ static struct thermal_cooling_device_ops powerclamp_cooling_ops = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct x86_cpu_id __initconst intel_powerclamp_ids[] = {
|
static const struct x86_cpu_id __initconst intel_powerclamp_ids[] = {
|
||||||
{ X86_VENDOR_INTEL, X86_FAMILY_ANY, X86_MODEL_ANY, X86_FEATURE_MWAIT },
|
X86_MATCH_VENDOR_FEATURE(INTEL, X86_FEATURE_MWAIT, NULL),
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(x86cpu, intel_powerclamp_ids);
|
MODULE_DEVICE_TABLE(x86cpu, intel_powerclamp_ids);
|
||||||
|
|
|
@ -64,9 +64,6 @@
|
||||||
#include <asm/cpu_device_id.h>
|
#include <asm/cpu_device_id.h>
|
||||||
#include <asm/iosf_mbi.h>
|
#include <asm/iosf_mbi.h>
|
||||||
|
|
||||||
#define X86_FAMILY_QUARK 0x5
|
|
||||||
#define X86_MODEL_QUARK_X1000 0x9
|
|
||||||
|
|
||||||
/* DTS reset is programmed via QRK_MBI_UNIT_SOC */
|
/* DTS reset is programmed via QRK_MBI_UNIT_SOC */
|
||||||
#define QRK_DTS_REG_OFFSET_RESET 0x34
|
#define QRK_DTS_REG_OFFSET_RESET 0x34
|
||||||
#define QRK_DTS_RESET_BIT BIT(0)
|
#define QRK_DTS_RESET_BIT BIT(0)
|
||||||
|
@ -433,7 +430,7 @@ static struct soc_sensor_entry *alloc_soc_dts(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct x86_cpu_id qrk_thermal_ids[] __initconst = {
|
static const struct x86_cpu_id qrk_thermal_ids[] __initconst = {
|
||||||
{ X86_VENDOR_INTEL, X86_FAMILY_QUARK, X86_MODEL_QUARK_X1000 },
|
X86_MATCH_VENDOR_FAM_MODEL(INTEL, 5, INTEL_FAM5_QUARK_X1000, NULL),
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(x86cpu, qrk_thermal_ids);
|
MODULE_DEVICE_TABLE(x86cpu, qrk_thermal_ids);
|
||||||
|
|
|
@ -36,8 +36,7 @@ static irqreturn_t soc_irq_thread_fn(int irq, void *dev_data)
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct x86_cpu_id soc_thermal_ids[] = {
|
static const struct x86_cpu_id soc_thermal_ids[] = {
|
||||||
{ X86_VENDOR_INTEL, 6, INTEL_FAM6_ATOM_SILVERMONT, 0,
|
X86_MATCH_INTEL_FAM6_MODEL(ATOM_SILVERMONT, BYT_SOC_DTS_APIC_IRQ),
|
||||||
BYT_SOC_DTS_APIC_IRQ},
|
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(x86cpu, soc_thermal_ids);
|
MODULE_DEVICE_TABLE(x86cpu, soc_thermal_ids);
|
||||||
|
|
|
@ -478,7 +478,7 @@ static int pkg_thermal_cpu_online(unsigned int cpu)
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct x86_cpu_id __initconst pkg_temp_thermal_ids[] = {
|
static const struct x86_cpu_id __initconst pkg_temp_thermal_ids[] = {
|
||||||
{ X86_VENDOR_INTEL, X86_FAMILY_ANY, X86_MODEL_ANY, X86_FEATURE_PTS },
|
X86_MATCH_VENDOR_FEATURE(INTEL, X86_FEATURE_PTS, NULL),
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(x86cpu, pkg_temp_thermal_ids);
|
MODULE_DEVICE_TABLE(x86cpu, pkg_temp_thermal_ids);
|
||||||
|
|
|
@ -667,9 +667,7 @@ struct x86_cpu_id {
|
||||||
kernel_ulong_t driver_data;
|
kernel_ulong_t driver_data;
|
||||||
};
|
};
|
||||||
|
|
||||||
#define X86_FEATURE_MATCH(x) \
|
/* Wild cards for x86_cpu_id::vendor, family, model and feature */
|
||||||
{ X86_VENDOR_ANY, X86_FAMILY_ANY, X86_MODEL_ANY, x }
|
|
||||||
|
|
||||||
#define X86_VENDOR_ANY 0xffff
|
#define X86_VENDOR_ANY 0xffff
|
||||||
#define X86_FAMILY_ANY 0
|
#define X86_FAMILY_ANY 0
|
||||||
#define X86_MODEL_ANY 0
|
#define X86_MODEL_ANY 0
|
||||||
|
|
|
@ -15,13 +15,11 @@
|
||||||
#include <asm/intel-family.h>
|
#include <asm/intel-family.h>
|
||||||
#include <asm/iosf_mbi.h>
|
#include <asm/iosf_mbi.h>
|
||||||
|
|
||||||
#define ICPU(model) { X86_VENDOR_INTEL, 6, model, X86_FEATURE_ANY, }
|
|
||||||
|
|
||||||
#define SOC_INTEL_IS_CPU(soc, type) \
|
#define SOC_INTEL_IS_CPU(soc, type) \
|
||||||
static inline bool soc_intel_is_##soc(void) \
|
static inline bool soc_intel_is_##soc(void) \
|
||||||
{ \
|
{ \
|
||||||
static const struct x86_cpu_id soc##_cpu_ids[] = { \
|
static const struct x86_cpu_id soc##_cpu_ids[] = { \
|
||||||
ICPU(type), \
|
X86_MATCH_INTEL_FAM6_MODEL(type, NULL), \
|
||||||
{} \
|
{} \
|
||||||
}; \
|
}; \
|
||||||
const struct x86_cpu_id *id; \
|
const struct x86_cpu_id *id; \
|
||||||
|
@ -32,11 +30,11 @@ static inline bool soc_intel_is_##soc(void) \
|
||||||
return false; \
|
return false; \
|
||||||
}
|
}
|
||||||
|
|
||||||
SOC_INTEL_IS_CPU(byt, INTEL_FAM6_ATOM_SILVERMONT);
|
SOC_INTEL_IS_CPU(byt, ATOM_SILVERMONT);
|
||||||
SOC_INTEL_IS_CPU(cht, INTEL_FAM6_ATOM_AIRMONT);
|
SOC_INTEL_IS_CPU(cht, ATOM_AIRMONT);
|
||||||
SOC_INTEL_IS_CPU(apl, INTEL_FAM6_ATOM_GOLDMONT);
|
SOC_INTEL_IS_CPU(apl, ATOM_GOLDMONT);
|
||||||
SOC_INTEL_IS_CPU(glk, INTEL_FAM6_ATOM_GOLDMONT_PLUS);
|
SOC_INTEL_IS_CPU(glk, ATOM_GOLDMONT_PLUS);
|
||||||
SOC_INTEL_IS_CPU(cml, INTEL_FAM6_KABYLAKE_L);
|
SOC_INTEL_IS_CPU(cml, KABYLAKE_L);
|
||||||
|
|
||||||
static inline bool soc_intel_is_byt_cr(struct platform_device *pdev)
|
static inline bool soc_intel_is_byt_cr(struct platform_device *pdev)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue