diff options
author | Christian Borntraeger <borntraeger@de.ibm.com> | 2011-06-06 14:14:39 +0200 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2011-06-06 14:14:56 +0200 |
commit | 9950f8be3f379e36be73be958ec5cf6c15eac0b2 (patch) | |
tree | 79547ebb720830a2da3e038ef7eaaece1ee82e20 /arch/s390/kvm | |
parent | [S390] kvm-s390: Fix host crash on misbehaving guests (diff) | |
download | linux-9950f8be3f379e36be73be958ec5cf6c15eac0b2.tar.xz linux-9950f8be3f379e36be73be958ec5cf6c15eac0b2.zip |
[S390] kvm-s390: fix stfle facilities numbers >=64
Currently KVM masks out the known good facilities only for the first
double word, but passed the 2nd double word without filtering. This
breaks some code on newer systems:
[ 0.593966] ------------[ cut here ]------------
[ 0.594086] WARNING: at arch/s390/oprofile/hwsampler.c:696
[ 0.594213] Modules linked in:
[ 0.594321] Modules linked in:
[ 0.594439] CPU: 0 Not tainted 3.0.0-rc1 #46
[ 0.594564] Process swapper (pid: 1, task: 00000001effa8038, ksp: 00000001effafab8)
[ 0.594735] Krnl PSW : 0704100180000000 00000000004ab89a (hwsampler_setup+0x75a/0x7b8)
[ 0.594910] R:0 T:1 IO:1 EX:1 Key:0 M:1 W:0 P:0 AS:0 CC:1 PM:0 EA:3
[ 0.595120] Krnl GPRS: ffffffff00000000 00000000ffffffea ffffffffffffffea 00000000004a98f8
[ 0.595351] 00000000004aa002 0000000000000001 000000000080e720 000000000088b9f8
[ 0.595522] 000000000080d3e8 0000000000000000 0000000000000000 000000000080e464
[ 0.595725] 0000000000000000 00000000005db198 00000000004ab3a2 00000001effafd98
[ 0.595901] Krnl Code: 00000000004ab88c: c0e5000673ca brasl %r14,57a020
[ 0.596071] 00000000004ab892: a7f4fc77 brc 15,4ab180
[ 0.596276] 00000000004ab896: a7f40001 brc 15,4ab898
[ 0.596454] >00000000004ab89a: a7c8ffa1 lhi %r12,-95
[ 0.596657] 00000000004ab89e: a7f4fc71 brc 15,4ab180
[ 0.596854] 00000000004ab8a2: a7f40001 brc 15,4ab8a4
[ 0.597029] 00000000004ab8a6: a7f4ff22 brc 15,4ab6ea
[ 0.597230] 00000000004ab8aa: c0200011009a larl %r2,6cb9de
[ 0.597441] Call Trace:
[ 0.597511] ([<00000000004ab3a2>] hwsampler_setup+0x262/0x7b8)
[ 0.597676] [<0000000000875812>] oprofile_arch_init+0x32/0xd0
[ 0.597834] [<0000000000875788>] oprofile_init+0x28/0x74
[ 0.597991] [<00000000001001be>] do_one_initcall+0x3a/0x170
[ 0.598151] [<000000000084fa22>] kernel_init+0x142/0x1ec
[ 0.598314] [<000000000057db16>] kernel_thread_starter+0x6/0xc
[ 0.598468] [<000000000057db10>] kernel_thread_starter+0x0/0xc
[ 0.598606] Last Breaking-Event-Address:
[ 0.598707] [<00000000004ab896>] hwsampler_setup+0x756/0x7b8
[ 0.598863] ---[ end trace ce3179037f4e3e5b ]---
So lets also mask the 2nd double word. Facilites 66,76,76,77 should be fine.
Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'arch/s390/kvm')
-rw-r--r-- | arch/s390/kvm/kvm-s390.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/arch/s390/kvm/kvm-s390.c b/arch/s390/kvm/kvm-s390.c index 30ca85cce314..67345ae7ce8d 100644 --- a/arch/s390/kvm/kvm-s390.c +++ b/arch/s390/kvm/kvm-s390.c @@ -731,6 +731,7 @@ static int __init kvm_s390_init(void) } memcpy(facilities, S390_lowcore.stfle_fac_list, 16); facilities[0] &= 0xff00fff3f47c0000ULL; + facilities[1] &= 0x201c000000000000ULL; return 0; } |