struct cpu_dev's c_models is only ever set inside CONFIG_X86_32 conditionals (or code that's being built for 32-bit only), so there's no use of reserving the (empty) space for the model names in a 64-bit kernel. Similarly, c_size_cache is only used in the #else of a CONFIG_X86_64 conditional, so reserving space for (and in one case even initializing) that field is pointless for 64-bit kernels too. While moving both fields to the end of the structure, I also noticed that: - the c_models array size was one too small, potentially causing table_lookup_model() to return garbage on Intel CPUs (intel.c's instance was lacking the sentinel with family being zero), so the patch bumps that by one, - c_models' vendor sub-field was unused (and anyway redundant with the base structure's c_x86_vendor field), so the patch deletes it. Also rename the legacy fields so that their legacy nature stands out and comment their declarations. Signed-off-by: Jan Beulich <jbeulich@suse.com> Link: http://lkml.kernel.org/r/5265036802000078000FC4DB@nat28.tlf.novell.com Signed-off-by: Ingo Molnar <mingo@kernel.org>
		
			
				
	
	
		
			26 lines
		
	
	
	
		
			461 B
			
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			26 lines
		
	
	
	
		
			461 B
			
		
	
	
	
		
			C
		
	
	
	
	
	
#include <linux/kernel.h>
 | 
						|
#include <linux/init.h>
 | 
						|
#include <asm/processor.h>
 | 
						|
#include "cpu.h"
 | 
						|
 | 
						|
/*
 | 
						|
 * UMC chips appear to be only either 386 or 486,
 | 
						|
 * so no special init takes place.
 | 
						|
 */
 | 
						|
 | 
						|
static const struct cpu_dev umc_cpu_dev = {
 | 
						|
	.c_vendor	= "UMC",
 | 
						|
	.c_ident	= { "UMC UMC UMC" },
 | 
						|
	.legacy_models	= {
 | 
						|
		{ .family = 4, .model_names =
 | 
						|
		  {
 | 
						|
			  [1] = "U5D",
 | 
						|
			  [2] = "U5S",
 | 
						|
		  }
 | 
						|
		},
 | 
						|
	},
 | 
						|
	.c_x86_vendor	= X86_VENDOR_UMC,
 | 
						|
};
 | 
						|
 | 
						|
cpu_dev_register(umc_cpu_dev);
 | 
						|
 |