mirror of
				git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
				synced 2025-09-18 22:14:16 +00:00 
			
		
		
		
	 fe055896c0
			
		
	
	
		fe055896c0
		
	
	
	
	
		
			
			Merge the early loader functionality into the driver proper. The diff is huge but logically, it is simply moving code from the _early.c files into the main driver. Signed-off-by: Borislav Petkov <bp@suse.de> Cc: Andy Lutomirski <luto@amacapital.net> Cc: Arjan van de Ven <arjan@linux.intel.com> Cc: Borislav Petkov <bp@alien8.de> Cc: Brian Gerst <brgerst@gmail.com> Cc: Dave Jones <davej@codemonkey.org.uk> Cc: Denys Vlasenko <dvlasenk@redhat.com> Cc: H. Peter Anvin <hpa@zytor.com> Cc: Len Brown <len.brown@intel.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Rafael J. Wysocki <rafael.j.wysocki@intel.com> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Tony Luck <tony.luck@intel.com> Link: http://lkml.kernel.org/r/1445334889-300-3-git-send-email-bp@alien8.de Signed-off-by: Ingo Molnar <mingo@kernel.org>
		
			
				
	
	
		
			79 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			79 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| #ifndef _ASM_X86_MICROCODE_INTEL_H
 | |
| #define _ASM_X86_MICROCODE_INTEL_H
 | |
| 
 | |
| #include <asm/microcode.h>
 | |
| 
 | |
| 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            reserved[3];
 | |
| };
 | |
| 
 | |
| struct microcode_intel {
 | |
| 	struct microcode_header_intel hdr;
 | |
| 	unsigned int            bits[0];
 | |
| };
 | |
| 
 | |
| /* microcode format is extended from prescott processors */
 | |
| struct extended_signature {
 | |
| 	unsigned int            sig;
 | |
| 	unsigned int            pf;
 | |
| 	unsigned int            cksum;
 | |
| };
 | |
| 
 | |
| struct extended_sigtable {
 | |
| 	unsigned int            count;
 | |
| 	unsigned int            cksum;
 | |
| 	unsigned int            reserved[3];
 | |
| 	struct extended_signature sigs[0];
 | |
| };
 | |
| 
 | |
| #define DEFAULT_UCODE_DATASIZE	(2000)
 | |
| #define MC_HEADER_SIZE		(sizeof(struct microcode_header_intel))
 | |
| #define DEFAULT_UCODE_TOTALSIZE (DEFAULT_UCODE_DATASIZE + MC_HEADER_SIZE)
 | |
| #define EXT_HEADER_SIZE		(sizeof(struct extended_sigtable))
 | |
| #define EXT_SIGNATURE_SIZE	(sizeof(struct extended_signature))
 | |
| #define DWSIZE			(sizeof(u32))
 | |
| 
 | |
| #define get_totalsize(mc) \
 | |
| 	(((struct microcode_intel *)mc)->hdr.datasize ? \
 | |
| 	 ((struct microcode_intel *)mc)->hdr.totalsize : \
 | |
| 	 DEFAULT_UCODE_TOTALSIZE)
 | |
| 
 | |
| #define get_datasize(mc) \
 | |
| 	(((struct microcode_intel *)mc)->hdr.datasize ? \
 | |
| 	 ((struct microcode_intel *)mc)->hdr.datasize : DEFAULT_UCODE_DATASIZE)
 | |
| 
 | |
| #define exttable_size(et) ((et)->count * EXT_SIGNATURE_SIZE + EXT_HEADER_SIZE)
 | |
| 
 | |
| extern int has_newer_microcode(void *mc, unsigned int csig, int cpf, int rev);
 | |
| extern int microcode_sanity_check(void *mc, int print_err);
 | |
| extern int find_matching_signature(void *mc, unsigned int csig, int cpf);
 | |
| 
 | |
| #ifdef CONFIG_MICROCODE_INTEL
 | |
| extern void __init load_ucode_intel_bsp(void);
 | |
| extern void load_ucode_intel_ap(void);
 | |
| extern void show_ucode_info_early(void);
 | |
| extern int __init save_microcode_in_initrd_intel(void);
 | |
| void reload_ucode_intel(void);
 | |
| #else
 | |
| static inline __init void load_ucode_intel_bsp(void) {}
 | |
| static inline void load_ucode_intel_ap(void) {}
 | |
| static inline void show_ucode_info_early(void) {}
 | |
| static inline int __init save_microcode_in_initrd_intel(void) { return -EINVAL; }
 | |
| static inline void reload_ucode_intel(void) {}
 | |
| #endif
 | |
| 
 | |
| #ifdef CONFIG_HOTPLUG_CPU
 | |
| extern int save_mc_for_early(u8 *mc);
 | |
| #else
 | |
| static inline int save_mc_for_early(u8 *mc) { return 0; }
 | |
| #endif
 | |
| #endif /* _ASM_X86_MICROCODE_INTEL_H */
 |