diff options
author | Christian Borntraeger <borntraeger@de.ibm.com> | 2008-06-27 09:05:38 -0400 |
---|---|---|
committer | Avi Kivity <avi@qumranet.com> | 2008-07-20 05:42:37 -0400 |
commit | 4da29e909ea8087de09e27476f91f51a070cabe8 (patch) | |
tree | e87b67317cc517ea47a897456fd483c8194c9301 /arch/s390 | |
parent | dfdded7c41e5b68c79a9f8a942d41f56bc265ba4 (diff) |
KVM: s390: Set guest storage limit and offset to sane values
Some machines do not accept 16EB as guest storage limit. Lets change the
default for the guest storage limit to a sane value. We also should set
the guest_origin to what userspace thinks it is. This allows guests
starting at an address != 0.
Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
Signed-off-by: Carsten Otte <cotte@de.ibm.com>
Signed-off-by: Avi Kivity <avi@qumranet.com>
Diffstat (limited to 'arch/s390')
-rw-r--r-- | arch/s390/kvm/kvm-s390.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/arch/s390/kvm/kvm-s390.c b/arch/s390/kvm/kvm-s390.c index b802ce6f675..cdab57c5bc7 100644 --- a/arch/s390/kvm/kvm-s390.c +++ b/arch/s390/kvm/kvm-s390.c | |||
@@ -247,11 +247,16 @@ static void kvm_s390_vcpu_initial_reset(struct kvm_vcpu *vcpu) | |||
247 | vcpu->arch.sie_block->gbea = 1; | 247 | vcpu->arch.sie_block->gbea = 1; |
248 | } | 248 | } |
249 | 249 | ||
250 | /* The current code can have up to 256 pages for virtio */ | ||
251 | #define VIRTIODESCSPACE (256ul * 4096ul) | ||
252 | |||
250 | int kvm_arch_vcpu_setup(struct kvm_vcpu *vcpu) | 253 | int kvm_arch_vcpu_setup(struct kvm_vcpu *vcpu) |
251 | { | 254 | { |
252 | atomic_set(&vcpu->arch.sie_block->cpuflags, CPUSTAT_ZARCH); | 255 | atomic_set(&vcpu->arch.sie_block->cpuflags, CPUSTAT_ZARCH); |
253 | vcpu->arch.sie_block->gmslm = 0xffffffffffUL; | 256 | vcpu->arch.sie_block->gmslm = vcpu->kvm->arch.guest_memsize + |
254 | vcpu->arch.sie_block->gmsor = 0x000000000000; | 257 | vcpu->kvm->arch.guest_origin + |
258 | VIRTIODESCSPACE - 1ul; | ||
259 | vcpu->arch.sie_block->gmsor = vcpu->kvm->arch.guest_origin; | ||
255 | vcpu->arch.sie_block->ecb = 2; | 260 | vcpu->arch.sie_block->ecb = 2; |
256 | vcpu->arch.sie_block->eca = 0xC1002001U; | 261 | vcpu->arch.sie_block->eca = 0xC1002001U; |
257 | setup_timer(&vcpu->arch.ckc_timer, kvm_s390_idle_wakeup, | 262 | setup_timer(&vcpu->arch.ckc_timer, kvm_s390_idle_wakeup, |