This will be used to do cleanup work before the driver exits. Signed-off-by: Borislav Petkov <borislav.petkov@amd.com>
		
			
				
	
	
		
			66 lines
		
	
	
	
		
			1.5 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
	
		
			1.5 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
#ifndef _ASM_X86_MICROCODE_H
 | 
						|
#define _ASM_X86_MICROCODE_H
 | 
						|
 | 
						|
struct cpu_signature {
 | 
						|
	unsigned int sig;
 | 
						|
	unsigned int pf;
 | 
						|
	unsigned int rev;
 | 
						|
};
 | 
						|
 | 
						|
struct device;
 | 
						|
 | 
						|
enum ucode_state { UCODE_ERROR, UCODE_OK, UCODE_NFOUND };
 | 
						|
 | 
						|
struct microcode_ops {
 | 
						|
	enum ucode_state (*request_microcode_user) (int cpu,
 | 
						|
				const void __user *buf, size_t size);
 | 
						|
 | 
						|
	enum ucode_state (*request_microcode_fw) (int cpu,
 | 
						|
				struct device *device);
 | 
						|
 | 
						|
	void (*microcode_fini_cpu) (int cpu);
 | 
						|
 | 
						|
	/*
 | 
						|
	 * The generic 'microcode_core' part guarantees that
 | 
						|
	 * the callbacks below run on a target cpu when they
 | 
						|
	 * are being called.
 | 
						|
	 * See also the "Synchronization" section in microcode_core.c.
 | 
						|
	 */
 | 
						|
	int (*apply_microcode) (int cpu);
 | 
						|
	int (*collect_cpu_info) (int cpu, struct cpu_signature *csig);
 | 
						|
};
 | 
						|
 | 
						|
struct ucode_cpu_info {
 | 
						|
	struct cpu_signature	cpu_sig;
 | 
						|
	int			valid;
 | 
						|
	void			*mc;
 | 
						|
};
 | 
						|
extern struct ucode_cpu_info ucode_cpu_info[];
 | 
						|
 | 
						|
#ifdef CONFIG_MICROCODE_INTEL
 | 
						|
extern struct microcode_ops * __init init_intel_microcode(void);
 | 
						|
#else
 | 
						|
static inline struct microcode_ops * __init init_intel_microcode(void)
 | 
						|
{
 | 
						|
	return NULL;
 | 
						|
}
 | 
						|
#endif /* CONFIG_MICROCODE_INTEL */
 | 
						|
 | 
						|
#ifdef CONFIG_MICROCODE_AMD
 | 
						|
extern struct microcode_ops * __init init_amd_microcode(void);
 | 
						|
extern void __exit exit_amd_microcode(void);
 | 
						|
 | 
						|
static inline void get_ucode_data(void *to, const u8 *from, size_t n)
 | 
						|
{
 | 
						|
	memcpy(to, from, n);
 | 
						|
}
 | 
						|
 | 
						|
#else
 | 
						|
static inline struct microcode_ops * __init init_amd_microcode(void)
 | 
						|
{
 | 
						|
	return NULL;
 | 
						|
}
 | 
						|
static inline void __exit exit_amd_microcode(void) {}
 | 
						|
#endif
 | 
						|
 | 
						|
#endif /* _ASM_X86_MICROCODE_H */
 |