diff options
| author | Heiko Carstens <heiko.carstens@de.ibm.com> | 2012-10-18 07:13:41 -0400 |
|---|---|---|
| committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2012-10-18 11:50:11 -0400 |
| commit | d18f99c28bab882f42949363658da5cf1d2f624f (patch) | |
| tree | 00eced6af35a5d0f3bde159d4689b32fdcb739f7 /arch/s390/kernel | |
| parent | c985cb37f1b39c2c8035af741a2a0b79f1fbaca7 (diff) | |
s390/cache: fix data/instruction cache output
The sysfs and procfs output of the instruction and data caches were
wrong: the output of the data cache provided that instruction cache
values and vice versa.
Fix this by using the correct type indication when issueing the
ecag instruction.
Reported-by: Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'arch/s390/kernel')
| -rw-r--r-- | arch/s390/kernel/cache.c | 9 |
1 files changed, 6 insertions, 3 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 { | |||
| 59 | 59 | ||
| 60 | enum { | 60 | enum { |
| 61 | CACHE_TI_UNIFIED = 0, | 61 | CACHE_TI_UNIFIED = 0, |
| 62 | CACHE_TI_INSTRUCTION = 0, | 62 | CACHE_TI_DATA = 0, |
| 63 | CACHE_TI_DATA, | 63 | CACHE_TI_INSTRUCTION, |
| 64 | }; | 64 | }; |
| 65 | 65 | ||
| 66 | struct cache_info { | 66 | struct cache_info { |
| @@ -121,7 +121,10 @@ static int __init cache_add(int level, int private, int type) | |||
| 121 | cache = kzalloc(sizeof(*cache), GFP_KERNEL); | 121 | cache = kzalloc(sizeof(*cache), GFP_KERNEL); |
| 122 | if (!cache) | 122 | if (!cache) |
| 123 | return -ENOMEM; | 123 | return -ENOMEM; |
| 124 | ti = type == CACHE_TYPE_DATA ? CACHE_TI_DATA : CACHE_TI_UNIFIED; | 124 | if (type == CACHE_TYPE_INSTRUCTION) |
| 125 | ti = CACHE_TI_INSTRUCTION; | ||
| 126 | else | ||
| 127 | ti = CACHE_TI_UNIFIED; | ||
| 125 | cache->size = ecag(EXTRACT_SIZE, level, ti); | 128 | cache->size = ecag(EXTRACT_SIZE, level, ti); |
| 126 | cache->line_size = ecag(EXTRACT_LINE_SIZE, level, ti); | 129 | cache->line_size = ecag(EXTRACT_LINE_SIZE, level, ti); |
| 127 | cache->associativity = ecag(EXTRACT_ASSOCIATIVITY, level, ti); | 130 | cache->associativity = ecag(EXTRACT_ASSOCIATIVITY, level, ti); |
