mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-01-20 14:40:51 -05:00
Pull misc x86 cleanups from Ingo Molnar: "The following commit deserves special mention:22dc02f81cRevert "sched/fair: Move unused stub functions to header" This is in x86/cleanups, because the revert is a re-application of a number of cleanups that got removed inadvertedly" [ This also effectively undoes the amd_check_microcode() microcode declaration change I had done in my microcode loader merge in commit42a7f6e3ff("Merge tag 'x86_microcode_for_v6.6_rc1' [...]"). I picked the declaration change by Arnd from this branch instead, which put it in <asm/processor.h> instead of <asm/microcode.h> like I had done in my merge resolution - Linus ] * tag 'x86-cleanups-2023-08-28' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: x86/platform/uv: Refactor code using deprecated strncpy() interface to use strscpy() x86/hpet: Refactor code using deprecated strncpy() interface to use strscpy() x86/platform/uv: Refactor code using deprecated strcpy()/strncpy() interfaces to use strscpy() x86/qspinlock-paravirt: Fix missing-prototype warning x86/paravirt: Silence unused native_pv_lock_init() function warning x86/alternative: Add a __alt_reloc_selftest() prototype x86/purgatory: Include header for warn() declaration x86/asm: Avoid unneeded __div64_32 function definition Revert "sched/fair: Move unused stub functions to header" x86/apic: Hide unused safe_smp_processor_id() on 32-bit UP x86/cpu: Fix amd_check_microcode() declaration
79 lines
1.7 KiB
C
79 lines
1.7 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
#ifndef _ASM_X86_MICROCODE_H
|
|
#define _ASM_X86_MICROCODE_H
|
|
|
|
struct cpu_signature {
|
|
unsigned int sig;
|
|
unsigned int pf;
|
|
unsigned int rev;
|
|
};
|
|
|
|
struct ucode_cpu_info {
|
|
struct cpu_signature cpu_sig;
|
|
void *mc;
|
|
};
|
|
|
|
#ifdef CONFIG_MICROCODE
|
|
void load_ucode_bsp(void);
|
|
void load_ucode_ap(void);
|
|
void microcode_bsp_resume(void);
|
|
#else
|
|
static inline void load_ucode_bsp(void) { }
|
|
static inline void load_ucode_ap(void) { }
|
|
static inline void microcode_bsp_resume(void) { }
|
|
#endif
|
|
|
|
#ifdef CONFIG_CPU_SUP_INTEL
|
|
/* Intel specific microcode defines. Public for IFS */
|
|
struct microcode_header_intel {
|
|
unsigned int hdrver;
|
|
unsigned int rev;
|
|
unsigned int date;
|
|
unsigned int sig;
|
|
unsigned int cksum;
|
|
unsigned int ldrver;
|
|
unsigned int pf;
|
|
unsigned int datasize;
|
|
unsigned int totalsize;
|
|
unsigned int metasize;
|
|
unsigned int reserved[2];
|
|
};
|
|
|
|
struct microcode_intel {
|
|
struct microcode_header_intel hdr;
|
|
unsigned int bits[];
|
|
};
|
|
|
|
#define DEFAULT_UCODE_DATASIZE (2000)
|
|
#define MC_HEADER_SIZE (sizeof(struct microcode_header_intel))
|
|
#define MC_HEADER_TYPE_MICROCODE 1
|
|
#define MC_HEADER_TYPE_IFS 2
|
|
|
|
static inline int intel_microcode_get_datasize(struct microcode_header_intel *hdr)
|
|
{
|
|
return hdr->datasize ? : DEFAULT_UCODE_DATASIZE;
|
|
}
|
|
|
|
static inline u32 intel_get_microcode_revision(void)
|
|
{
|
|
u32 rev, dummy;
|
|
|
|
native_wrmsrl(MSR_IA32_UCODE_REV, 0);
|
|
|
|
/* As documented in the SDM: Do a CPUID 1 here */
|
|
native_cpuid_eax(1);
|
|
|
|
/* get the current revision from MSR 0x8B */
|
|
native_rdmsr(MSR_IA32_UCODE_REV, dummy, rev);
|
|
|
|
return rev;
|
|
}
|
|
|
|
void show_ucode_info_early(void);
|
|
|
|
#else /* CONFIG_CPU_SUP_INTEL */
|
|
static inline void show_ucode_info_early(void) { }
|
|
#endif /* !CONFIG_CPU_SUP_INTEL */
|
|
|
|
#endif /* _ASM_X86_MICROCODE_H */
|