KVM: s390: Fix clock comparator field for STORE STATUS
Only the most 7 significant bytes of the clock comparator must be saved to the status area, and the byte at offset 304 has to be zero. Signed-off-by: Thomas Huth <thuth@linux.vnet.ibm.com> Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com> Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
This commit is contained in:
Родитель
e879892c72
Коммит
178bd78977
|
@ -877,6 +877,7 @@ int kvm_s390_store_status_unloaded(struct kvm_vcpu *vcpu, unsigned long addr)
|
||||||
{
|
{
|
||||||
unsigned char archmode = 1;
|
unsigned char archmode = 1;
|
||||||
int prefix;
|
int prefix;
|
||||||
|
u64 clkcomp;
|
||||||
|
|
||||||
if (addr == KVM_S390_STORE_STATUS_NOADDR) {
|
if (addr == KVM_S390_STORE_STATUS_NOADDR) {
|
||||||
if (copy_to_guest_absolute(vcpu, 163ul, &archmode, 1))
|
if (copy_to_guest_absolute(vcpu, 163ul, &archmode, 1))
|
||||||
|
@ -920,8 +921,9 @@ int kvm_s390_store_status_unloaded(struct kvm_vcpu *vcpu, unsigned long addr)
|
||||||
&vcpu->arch.sie_block->cputm, 8, prefix))
|
&vcpu->arch.sie_block->cputm, 8, prefix))
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
|
|
||||||
|
clkcomp = vcpu->arch.sie_block->ckc >> 8;
|
||||||
if (__guestcopy(vcpu, addr + offsetof(struct save_area, clk_cmp),
|
if (__guestcopy(vcpu, addr + offsetof(struct save_area, clk_cmp),
|
||||||
&vcpu->arch.sie_block->ckc, 8, prefix))
|
&clkcomp, 8, prefix))
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
|
|
||||||
if (__guestcopy(vcpu, addr + offsetof(struct save_area, acc_regs),
|
if (__guestcopy(vcpu, addr + offsetof(struct save_area, acc_regs),
|
||||||
|
|
Загрузка…
Ссылка в новой задаче