diff options
Diffstat (limited to 'arch/s390/kernel')
| -rw-r--r-- | arch/s390/kernel/cache.c | 9 | ||||
| -rw-r--r-- | arch/s390/kernel/head_kdump.S | 10 | ||||
| -rw-r--r-- | arch/s390/kernel/perf_cpum_cf.c | 6 | ||||
| -rw-r--r-- | arch/s390/kernel/vmlinux.lds.S | 2 | 
4 files changed, 14 insertions, 13 deletions
diff --git a/arch/s390/kernel/cache.c b/arch/s390/kernel/cache.c index 8df8d8a19c9..64b24650e4f 100644 --- a/arch/s390/kernel/cache.c +++ b/arch/s390/kernel/cache.c @@ -59,8 +59,8 @@ enum {  enum {  	CACHE_TI_UNIFIED = 0, -	CACHE_TI_INSTRUCTION = 0, -	CACHE_TI_DATA, +	CACHE_TI_DATA = 0, +	CACHE_TI_INSTRUCTION,  };  struct cache_info { @@ -121,7 +121,10 @@ static int __init cache_add(int level, int private, int type)  	cache = kzalloc(sizeof(*cache), GFP_KERNEL);  	if (!cache)  		return -ENOMEM; -	ti = type == CACHE_TYPE_DATA ? CACHE_TI_DATA : CACHE_TI_UNIFIED; +	if (type == CACHE_TYPE_INSTRUCTION) +		ti = CACHE_TI_INSTRUCTION; +	else +		ti = CACHE_TI_UNIFIED;  	cache->size = ecag(EXTRACT_SIZE, level, ti);  	cache->line_size = ecag(EXTRACT_LINE_SIZE, level, ti);  	cache->associativity = ecag(EXTRACT_ASSOCIATIVITY, level, ti); diff --git a/arch/s390/kernel/head_kdump.S b/arch/s390/kernel/head_kdump.S index acaaaf4b705..085a95eb315 100644 --- a/arch/s390/kernel/head_kdump.S +++ b/arch/s390/kernel/head_kdump.S @@ -85,16 +85,10 @@  .align 2  startup_kdump_relocated:  	basr	%r13,0 -0: -	mvc	0(8,%r0),.Lrestart_psw-0b(%r13)	# Setup restart PSW -	sam31					# Switch to 31 bit addr mode -	sr	%r1,%r1				# Erase register r1 -	sr	%r2,%r2				# Erase register r2 -	sigp	%r1,%r2,SIGP_SET_ARCHITECTURE	# Switch to 31 bit arch mode -	lpsw	0				# Start new kernel... +0:	lpswe	.Lrestart_psw-0b(%r13)		# Start new kernel...  .align	8  .Lrestart_psw: -	.long	0x00080000,0x80000000 + startup +	.quad	0x0000000080000000,0x0000000000000000 + startup  #else  .align 2  .Lep_startup_kdump: diff --git a/arch/s390/kernel/perf_cpum_cf.c b/arch/s390/kernel/perf_cpum_cf.c index 9871b1971ed..c4e7269d4a0 100644 --- a/arch/s390/kernel/perf_cpum_cf.c +++ b/arch/s390/kernel/perf_cpum_cf.c @@ -94,7 +94,7 @@ static int get_counter_set(u64 event)  		set = CPUMF_CTR_SET_USER;  	else if (event < 128)  		set = CPUMF_CTR_SET_CRYPTO; -	else if (event < 160) +	else if (event < 256)  		set = CPUMF_CTR_SET_EXT;  	return set; @@ -138,6 +138,10 @@ static int validate_ctr_version(const struct hw_perf_event *hwc)  	case CPUMF_CTR_SET_EXT:  		if (cpuhw->info.csvn < 1)  			err = -EOPNOTSUPP; +		if ((cpuhw->info.csvn == 1 && hwc->config > 159) || +		    (cpuhw->info.csvn == 2 && hwc->config > 175) || +		    (cpuhw->info.csvn  > 2 && hwc->config > 255)) +			err = -EOPNOTSUPP;  		break;  	} diff --git a/arch/s390/kernel/vmlinux.lds.S b/arch/s390/kernel/vmlinux.lds.S index de8fa9bbd35..79cb51adc74 100644 --- a/arch/s390/kernel/vmlinux.lds.S +++ b/arch/s390/kernel/vmlinux.lds.S @@ -8,7 +8,7 @@  #ifndef CONFIG_64BIT  OUTPUT_FORMAT("elf32-s390", "elf32-s390", "elf32-s390") -OUTPUT_ARCH(s390) +OUTPUT_ARCH(s390:31-bit)  ENTRY(startup)  jiffies = jiffies_64 + 4;  #else  |