diff options
author | Guenther Hutzl <hutzl@linux.vnet.ibm.com> | 2014-12-01 11:24:42 -0500 |
---|---|---|
committer | Christian Borntraeger <borntraeger@de.ibm.com> | 2015-12-15 11:08:22 -0500 |
commit | 32e6b236d26946eb076d1450bfb8f9978f15d6b9 (patch) | |
tree | 302cf6c0d088f3fe93fad850e159b7da97c486fb /drivers/s390 | |
parent | a3a92c31bf0b57ad0ca7f092a6f3a57168ba9ae2 (diff) |
KVM: s390: consider system MHA for guest storage
Verify that the guest maximum storage address is below the MHA (maximum
host address) value allowed on the host.
Acked-by: Michael Holzheu <holzheu@linux.vnet.ibm.com>
Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Reviewed-by: David Hildenbrand <dahi@linux.vnet.ibm.com>
Signed-off-by: Guenther Hutzl <hutzl@linux.vnet.ibm.com>
Signed-off-by: Dominik Dingel <dingel@linux.vnet.ibm.com>
[adopt to match recent limit,size changes]
Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
Diffstat (limited to 'drivers/s390')
-rw-r--r-- | drivers/s390/char/sclp_early.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/s390/char/sclp_early.c b/drivers/s390/char/sclp_early.c index e0a1f4eec370..6804354c42bd 100644 --- a/drivers/s390/char/sclp_early.c +++ b/drivers/s390/char/sclp_early.c | |||
@@ -40,7 +40,8 @@ struct read_info_sccb { | |||
40 | u8 fac85; /* 85 */ | 40 | u8 fac85; /* 85 */ |
41 | u8 _pad_86[91 - 86]; /* 86-90 */ | 41 | u8 _pad_86[91 - 86]; /* 86-90 */ |
42 | u8 flags; /* 91 */ | 42 | u8 flags; /* 91 */ |
43 | u8 _pad_92[100 - 92]; /* 92-99 */ | 43 | u8 _pad_92[99 - 92]; /* 92-98 */ |
44 | u8 hamaxpow; /* 99 */ | ||
44 | u32 rnsize2; /* 100-103 */ | 45 | u32 rnsize2; /* 100-103 */ |
45 | u64 rnmax2; /* 104-111 */ | 46 | u64 rnmax2; /* 104-111 */ |
46 | u8 _pad_112[116 - 112]; /* 112-115 */ | 47 | u8 _pad_112[116 - 112]; /* 112-115 */ |
@@ -120,6 +121,11 @@ static void __init sclp_facilities_detect(struct read_info_sccb *sccb) | |||
120 | sclp.rzm <<= 20; | 121 | sclp.rzm <<= 20; |
121 | sclp.ibc = sccb->ibc; | 122 | sclp.ibc = sccb->ibc; |
122 | 123 | ||
124 | if (sccb->hamaxpow && sccb->hamaxpow < 64) | ||
125 | sclp.hamax = (1UL << sccb->hamaxpow) - 1; | ||
126 | else | ||
127 | sclp.hamax = U64_MAX; | ||
128 | |||
123 | if (!sccb->hcpua) { | 129 | if (!sccb->hcpua) { |
124 | if (MACHINE_IS_VM) | 130 | if (MACHINE_IS_VM) |
125 | sclp.max_cores = 64; | 131 | sclp.max_cores = 64; |