All of lore.kernel.org
 help / color / mirror / Atom feed
From: David Hildenbrand <david@redhat.com>
To: Christian Borntraeger <borntraeger@de.ibm.com>,
	Cornelia Huck <cohuck@redhat.com>
Cc: "Paolo Bonzini" <pbonzini@redhat.com>,
	"Radim Krčmář" <rkrcmar@redhat.com>, KVM <kvm@vger.kernel.org>,
	linux-s390 <linux-s390@vger.kernel.org>,
	"Collin L. Walling" <walling@linux.vnet.ibm.com>
Subject: Re: [PATCH 06/11] KVM: s390: Multiple Epoch Facility support
Date: Tue, 29 Aug 2017 14:54:48 +0200	[thread overview]
Message-ID: <cb6b6940-6733-cdf2-6ce9-716162c3faa5@redhat.com> (raw)
In-Reply-To: <a0a71df6-5a52-2237-e7fd-a705da4af83a@de.ibm.com>

On 29.08.2017 14:46, Christian Borntraeger wrote:
> 
> 
> On 08/29/2017 02:24 PM, David Hildenbrand wrote:
>> On 28.08.2017 10:07, Christian Borntraeger wrote:
>>> From: "Collin L. Walling" <walling@linux.vnet.ibm.com>
>>>
>>> Allow for the enablement of MEF and the support for the extended
>>> epoch in SIE and VSIE for the extended guest TOD-Clock.
>>>
>>> A new interface is used for getting/setting a guest's extended
>>> TOD-Clock that uses a single ioctl invocation, KVM_S390_VM_TOD_EXT.
>>> The old method of getting and setting the guest TOD-Clock is
>>> retained and is used when the old ioctls are called.
>>
>> After talking to Christian, I understand that we have to set it in "one
>> shot" as we can otherwise run into problems when getting/setting the TOD
>> as we are looking at a moving target. This should go into the cover letter.
> 
> You mean in the patch description or in the git tag description?

Patch description. But just my opinion.

> 
>>
>> I need some more info regarding the architecture change.
>>
>> For now, epoch was an unsigned value that is interpreted as an signed value.
> 
> It is always considered a signed value, (so the guest can be before or after the host)
> we just used u64 to make the wraparound defined (doing all the math in the unsigned realm
> as signed overflow is undefined)
> 
>>
>> a) Is that still true with multiple epoch?
>> b) What is the format of the epoch index? Can it also be "negative"?
> 
> The concatenation of both is considered a 72bit signed value.

Ah okay. So subtracting 1 from idx=0, epoch=0 will result in
idx=0xff epoch=0xffffff

> 
>>
>> Why I am asking: I can see comparison made with the epoch:
>>
>>> +	if (test_kvm_facility(vcpu->kvm, 139)) {
>>> +		scb_s->epdx += vcpu->kvm->arch.epdx;
>>> +		if (scb_s->epoch < vcpu->kvm->arch.epoch)
> 
> 	This checks for an overflow after the addition and
> 
>>> +			scb_s->epdx += 1;
> 
> 	corrects this. Since this is all unsigned math this is
> 	defined to wrap around and should work unless I missed 
> 	something

I just had in mind:

-1 < 0

but 0xffffffff is clearly > 0x0

I might be mistaking, but we could get both an overflow or an underflow
here.

But my brain has to consume new information first, so ignore the noise
for now :)


> 
>>> +	}
>>
>> or
>>
>>> +	if (kvm->arch.epoch > gtod->tod)
>>> +		kvm->arch.epdx -= 1;
>>
>>
>> If I remember correctly, such comparisons won't work correctly when
>> having this signed/unsigned duality. But I might be wrong.
> 
> As far as I can see we have unsigned data types everywhere.
> 

-- 

Thanks,

David

  reply	other threads:[~2017-08-29 12:54 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-08-28  8:07 [PATCH 00/11] KVM: s390: Fixes and features for 4.14 Christian Borntraeger
2017-08-28  8:07 ` [PATCH 05/11] KVM: s390: Support Configuration z/Architecture Mode Christian Borntraeger
2017-08-28  9:07   ` Cornelia Huck
2017-08-28  9:11     ` Christian Borntraeger
2017-08-28  9:14       ` Christian Borntraeger
2017-08-28 11:33       ` Cornelia Huck
2017-08-28 11:35   ` Cornelia Huck
2017-08-28 14:06   ` David Hildenbrand
2017-08-28 14:24     ` Christian Borntraeger
2017-08-28 14:38       ` David Hildenbrand
2017-08-28 14:42         ` Christian Borntraeger
2017-08-28 19:27   ` David Hildenbrand
2017-08-28 19:35     ` Christian Borntraeger
2017-08-28 19:38       ` Christian Borntraeger
2017-08-28 19:42         ` David Hildenbrand
2017-08-29  7:18           ` Christian Borntraeger
2017-08-29 12:08             ` David Hildenbrand
2017-08-29 12:21               ` Christian Borntraeger
2017-08-29 12:24                 ` David Hildenbrand
2017-08-29 14:31                 ` [PATCH] KVM: s390: we are always in czam mode David Hildenbrand
2017-08-29 14:40                   ` Cornelia Huck
2017-08-29 14:48                   ` Christian Borntraeger
2017-08-28 19:41       ` [PATCH 05/11] KVM: s390: Support Configuration z/Architecture Mode David Hildenbrand
2017-08-28  8:07 ` [PATCH 06/11] KVM: s390: Multiple Epoch Facility support Christian Borntraeger
2017-08-28 11:21   ` Cornelia Huck
2017-08-28 11:36     ` Christian Borntraeger
2017-08-28 11:45       ` Cornelia Huck
2017-08-29 12:24   ` David Hildenbrand
2017-08-29 12:46     ` Christian Borntraeger
2017-08-29 12:54       ` David Hildenbrand [this message]
2017-08-29 12:59       ` Christian Borntraeger
2017-08-28  8:07 ` [PATCH 10/11] KVM: s390: sthyi: remove invalid guest write access Christian Borntraeger
2017-08-28 11:39   ` Cornelia Huck
2017-08-28  8:07 ` [PATCH 11/11] KVM: s390: expose no-DAT to guest and migration support Christian Borntraeger
2017-08-28 12:12   ` Cornelia Huck
2017-08-28 12:17 ` [PATCH 00/11] KVM: s390: Fixes and features for 4.14 Cornelia Huck

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=cb6b6940-6733-cdf2-6ce9-716162c3faa5@redhat.com \
    --to=david@redhat.com \
    --cc=borntraeger@de.ibm.com \
    --cc=cohuck@redhat.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-s390@vger.kernel.org \
    --cc=pbonzini@redhat.com \
    --cc=rkrcmar@redhat.com \
    --cc=walling@linux.vnet.ibm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.