diff options
Diffstat (limited to 'arch/x86')
| -rw-r--r-- | arch/x86/Makefile | 2 | ||||
| -rw-r--r-- | arch/x86/crypto/aesni-intel_glue.c | 9 | ||||
| -rw-r--r-- | arch/x86/kernel/cpu/intel_cacheinfo.c | 2 | ||||
| -rw-r--r-- | arch/x86/kernel/cpu/mcheck/mce.c | 6 | ||||
| -rw-r--r-- | arch/x86/kernel/cpu/mcheck/mce_amd.c | 10 | ||||
| -rw-r--r-- | arch/x86/kernel/cpu/perf_event.c | 6 | ||||
| -rw-r--r-- | arch/x86/kernel/reboot.c | 8 | ||||
| -rw-r--r-- | arch/x86/kernel/setup.c | 17 | ||||
| -rw-r--r-- | arch/x86/realmode/rm/wakeup_asm.S | 15 | 
9 files changed, 38 insertions, 37 deletions
diff --git a/arch/x86/Makefile b/arch/x86/Makefile index 58790bd85c1..05afcca66de 100644 --- a/arch/x86/Makefile +++ b/arch/x86/Makefile @@ -142,7 +142,7 @@ KBUILD_CFLAGS += $(call cc-option,-mno-avx,)  KBUILD_CFLAGS += $(mflags-y)  KBUILD_AFLAGS += $(mflags-y) -archscripts: +archscripts: scripts_basic  	$(Q)$(MAKE) $(build)=arch/x86/tools relocs  ### diff --git a/arch/x86/crypto/aesni-intel_glue.c b/arch/x86/crypto/aesni-intel_glue.c index 7c04d0da709..1b9c22bea8a 100644 --- a/arch/x86/crypto/aesni-intel_glue.c +++ b/arch/x86/crypto/aesni-intel_glue.c @@ -515,6 +515,11 @@ static int xts_aesni_setkey(struct crypto_tfm *tfm, const u8 *key,  } +static void aesni_xts_tweak(void *ctx, u8 *out, const u8 *in) +{ +	aesni_enc(ctx, out, in); +} +  static int xts_encrypt(struct blkcipher_desc *desc, struct scatterlist *dst,  		       struct scatterlist *src, unsigned int nbytes)  { @@ -525,7 +530,7 @@ static int xts_encrypt(struct blkcipher_desc *desc, struct scatterlist *dst,  		.tbuflen = sizeof(buf),  		.tweak_ctx = aes_ctx(ctx->raw_tweak_ctx), -		.tweak_fn = XTS_TWEAK_CAST(aesni_enc), +		.tweak_fn = aesni_xts_tweak,  		.crypt_ctx = aes_ctx(ctx->raw_crypt_ctx),  		.crypt_fn = lrw_xts_encrypt_callback,  	}; @@ -550,7 +555,7 @@ static int xts_decrypt(struct blkcipher_desc *desc, struct scatterlist *dst,  		.tbuflen = sizeof(buf),  		.tweak_ctx = aes_ctx(ctx->raw_tweak_ctx), -		.tweak_fn = XTS_TWEAK_CAST(aesni_enc), +		.tweak_fn = aesni_xts_tweak,  		.crypt_ctx = aes_ctx(ctx->raw_crypt_ctx),  		.crypt_fn = lrw_xts_decrypt_callback,  	}; diff --git a/arch/x86/kernel/cpu/intel_cacheinfo.c b/arch/x86/kernel/cpu/intel_cacheinfo.c index 9a7c90d80bc..93c5451bdd5 100644 --- a/arch/x86/kernel/cpu/intel_cacheinfo.c +++ b/arch/x86/kernel/cpu/intel_cacheinfo.c @@ -991,7 +991,7 @@ static struct attribute ** __cpuinit amd_l3_attrs(void)  	if (attrs)  		return attrs; -	n = sizeof (default_attrs) / sizeof (struct attribute *); +	n = ARRAY_SIZE(default_attrs);  	if (amd_nb_has_feature(AMD_NB_L3_INDEX_DISABLE))  		n += 2; diff --git a/arch/x86/kernel/cpu/mcheck/mce.c b/arch/x86/kernel/cpu/mcheck/mce.c index 29e87d3b284..46cbf868969 100644 --- a/arch/x86/kernel/cpu/mcheck/mce.c +++ b/arch/x86/kernel/cpu/mcheck/mce.c @@ -2209,11 +2209,6 @@ static struct dev_ext_attribute dev_attr_cmci_disabled = {  	&mce_cmci_disabled  }; -static struct dev_ext_attribute dev_attr_bios_cmci_threshold = { -	__ATTR(bios_cmci_threshold, 0444, device_show_int, NULL), -	&mce_bios_cmci_threshold -}; -  static struct device_attribute *mce_device_attrs[] = {  	&dev_attr_tolerant.attr,  	&dev_attr_check_interval.attr, @@ -2222,7 +2217,6 @@ static struct device_attribute *mce_device_attrs[] = {  	&dev_attr_dont_log_ce.attr,  	&dev_attr_ignore_ce.attr,  	&dev_attr_cmci_disabled.attr, -	&dev_attr_bios_cmci_threshold.attr,  	NULL  }; diff --git a/arch/x86/kernel/cpu/mcheck/mce_amd.c b/arch/x86/kernel/cpu/mcheck/mce_amd.c index c4e916d7737..698b6ec12e0 100644 --- a/arch/x86/kernel/cpu/mcheck/mce_amd.c +++ b/arch/x86/kernel/cpu/mcheck/mce_amd.c @@ -576,12 +576,10 @@ static __cpuinit int threshold_create_bank(unsigned int cpu, unsigned int bank)  	int err = 0;  	if (shared_bank[bank]) { -  		nb = node_to_amd_nb(amd_get_nb_id(cpu)); -		WARN_ON(!nb);  		/* threshold descriptor already initialized on this node? */ -		if (nb->bank4) { +		if (nb && nb->bank4) {  			/* yes, use it */  			b = nb->bank4;  			err = kobject_add(b->kobj, &dev->kobj, name); @@ -615,8 +613,10 @@ static __cpuinit int threshold_create_bank(unsigned int cpu, unsigned int bank)  		atomic_set(&b->cpus, 1);  		/* nb is already initialized, see above */ -		WARN_ON(nb->bank4); -		nb->bank4 = b; +		if (nb) { +			WARN_ON(nb->bank4); +			nb->bank4 = b; +		}  	}  	err = allocate_threshold_blocks(cpu, bank, 0, diff --git a/arch/x86/kernel/cpu/perf_event.c b/arch/x86/kernel/cpu/perf_event.c index 915b876edd1..3373f84d139 100644 --- a/arch/x86/kernel/cpu/perf_event.c +++ b/arch/x86/kernel/cpu/perf_event.c @@ -338,6 +338,9 @@ int x86_setup_perfctr(struct perf_event *event)  		/* BTS is currently only allowed for user-mode. */  		if (!attr->exclude_kernel)  			return -EOPNOTSUPP; + +		if (!attr->exclude_guest) +			return -EOPNOTSUPP;  	}  	hwc->config |= config; @@ -380,6 +383,9 @@ int x86_pmu_hw_config(struct perf_event *event)  	if (event->attr.precise_ip) {  		int precise = 0; +		if (!event->attr.exclude_guest) +			return -EOPNOTSUPP; +  		/* Support for constant skid */  		if (x86_pmu.pebs_active && !x86_pmu.pebs_broken) {  			precise++; diff --git a/arch/x86/kernel/reboot.c b/arch/x86/kernel/reboot.c index 52190a938b4..4e8ba39eaf0 100644 --- a/arch/x86/kernel/reboot.c +++ b/arch/x86/kernel/reboot.c @@ -358,14 +358,6 @@ static struct dmi_system_id __initdata reboot_dmi_table[] = {  			DMI_MATCH(DMI_PRODUCT_NAME, "VGN-Z540N"),  		},  	}, -	{	/* Handle problems with rebooting on CompuLab SBC-FITPC2 */ -		.callback = set_bios_reboot, -		.ident = "CompuLab SBC-FITPC2", -		.matches = { -			DMI_MATCH(DMI_SYS_VENDOR, "CompuLab"), -			DMI_MATCH(DMI_PRODUCT_NAME, "SBC-FITPC2"), -		}, -	},  	{	/* Handle problems with rebooting on ASUS P4S800 */  		.callback = set_bios_reboot,  		.ident = "ASUS P4S800", diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c index a2bb18e0283..468e98dfd44 100644 --- a/arch/x86/kernel/setup.c +++ b/arch/x86/kernel/setup.c @@ -920,8 +920,21 @@ void __init setup_arch(char **cmdline_p)  #ifdef CONFIG_X86_64  	if (max_pfn > max_low_pfn) { -		max_pfn_mapped = init_memory_mapping(1UL<<32, -						     max_pfn<<PAGE_SHIFT); +		int i; +		for (i = 0; i < e820.nr_map; i++) { +			struct e820entry *ei = &e820.map[i]; + +			if (ei->addr + ei->size <= 1UL << 32) +				continue; + +			if (ei->type == E820_RESERVED) +				continue; + +			max_pfn_mapped = init_memory_mapping( +				ei->addr < 1UL << 32 ? 1UL << 32 : ei->addr, +				ei->addr + ei->size); +		} +  		/* can we preseve max_low_pfn ?*/  		max_low_pfn = max_pfn;  	} diff --git a/arch/x86/realmode/rm/wakeup_asm.S b/arch/x86/realmode/rm/wakeup_asm.S index e56479e5805..9e7e14797a7 100644 --- a/arch/x86/realmode/rm/wakeup_asm.S +++ b/arch/x86/realmode/rm/wakeup_asm.S @@ -74,18 +74,9 @@ ENTRY(wakeup_start)  	lidtl	wakeup_idt -	/* Clear the EFLAGS but remember if we have EFLAGS.ID */ -	movl $X86_EFLAGS_ID, %ecx -	pushl %ecx -	popfl -	pushfl -	popl %edi +	/* Clear the EFLAGS */  	pushl $0  	popfl -	pushfl -	popl %edx -	xorl %edx, %edi -	andl %ecx, %edi		/* %edi is zero iff CPUID & %cr4 are missing */  	/* Check header signature... */  	movl	signature, %eax @@ -120,12 +111,12 @@ ENTRY(wakeup_start)  	movl	%eax, %cr3  	btl	$WAKEUP_BEHAVIOR_RESTORE_CR4, %edi -	jz	1f +	jnc	1f  	movl	pmode_cr4, %eax  	movl	%eax, %cr4  1:  	btl	$WAKEUP_BEHAVIOR_RESTORE_EFER, %edi -	jz	1f +	jnc	1f  	movl	pmode_efer, %eax  	movl	pmode_efer + 4, %edx  	movl	$MSR_EFER, %ecx  |