KVM: s390: consider epoch index on TOD clock syncs
authorDavid Hildenbrand <david@redhat.com>
Wed, 7 Feb 2018 11:46:45 +0000 (12:46 +0100)
committerChristian Borntraeger <borntraeger@de.ibm.com>
Tue, 20 Feb 2018 20:51:21 +0000 (20:51 +0000)
commit1575767ef3cf5326701d2ae3075b7732cbc855e4
tree5576bfba708a2604ddd930b0d90e75d88598c557
parentd16b52cb9cdb6f06dea8ab2f0a428e7d7f0b0a81
KVM: s390: consider epoch index on TOD clock syncs

For now, we don't take care of over/underflows. Especially underflows
are critical:

Assume the epoch is currently 0 and we get a sync request for delta=1,
meaning the TOD is moved forward by 1 and we have to fix it up by
subtracting 1 from the epoch. Right now, this will leave the epoch
index untouched, resulting in epoch=-1, epoch_idx=0, which is wrong.

We have to take care of over and underflows, also for the VSIE case. So
let's factor out calculation into a separate function.

Signed-off-by: David Hildenbrand <david@redhat.com>
Message-Id: <20180207114647.6220-5-david@redhat.com>
Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com>
Fixes: 8fa1696ea781 ("KVM: s390: Multiple Epoch Facility support")
Cc: stable@vger.kernel.org
Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
[use u8 for idx]
arch/s390/kvm/kvm-s390.c