qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Pierre Morel <pmorel@linux.vnet.ibm.com>
To: David Hildenbrand <david@redhat.com>,
	Tony Krowiak <akrowiak@linux.vnet.ibm.com>,
	Cornelia Huck <cohuck@redhat.com>
Cc: qemu-devel@nongnu.org, qemu-s390x@nongnu.org,
	schwidefsky@de.ibm.com, heiko.carstens@de.ibm.com,
	borntraeger@de.ibm.com, bjsdjshi@linux.vnet.ibm.com,
	alifm@linux.vnet.ibm.com, mjrosato@linux.vnet.ibm.com,
	jjherne@linux.vnet.ibm.com, pasic@linux.vnet.ibm.com,
	eskultet@redhat.com, berrange@redhat.com,
	alex.williamson@redhat.com, eric.auger@redhat.com,
	pbonzini@redhat.com, peter.maydell@linaro.org, agraf@suse.de,
	rth@twiddle.net
Subject: Re: [Qemu-devel] [PATCH v2 5/5] s390x/cpumodel: Set up CPU model for AP device support
Date: Wed, 7 Mar 2018 11:09:46 +0100	[thread overview]
Message-ID: <36825fd8-fb91-069a-01d7-520a97c743d9@linux.vnet.ibm.com> (raw)
In-Reply-To: <05cd3b46-1fa6-6cf6-b414-5dfa2af13105@redhat.com>

On 06/03/2018 18:15, David Hildenbrand wrote:
>>>> 1) ap=on is a guest ABI feature saying to the guest you can use AP
>>>> instructions
>>> Indeed, that's what belongs into the CPU model.
>>>
>>>> 2) How we provide AP instructions to the guest can be done in three
>>>> different ways:
>>>>     - SIE Interpretation
>> AP instructions executed on the guest will be interpreted and passed
>> directly
>> through to a real AP device installed on the host according to the APQN
>> specified in the instruction, so the AP instructions must be available
>> on the
>> host.
>>>>     - interception with VFIO
>> AP instructions executed on the guest will be intercepted, and
>> interpreted by
>> QEMU then forwarded to a real AP device installed on the host according
>> to how
>> the AP devices are configured in userspace - i.e., whether there is
>> remapping,
>> multiplexing or sharing of adapters/domains etc. This also requires that AP
>> instructions be available on the host.
> See my other mail: I think this is a conflict with vSIE.
>
>>>>     - interception with emulation
>> AP instructions executed on the guest will be intercepted, interpreted
>> by QEMU
>> and emulated. This will not require AP instructions be available on the
>> host.
> See my other mail: I think this is a conflict with vSIE.
>
>> In all cases above, the need to set ECA_APIE is dependent upon the device
>> type configured for the guest.
>>> Due to bad AP design we can't handle this like zPCI - completely in
>>> QEMU. That's what should control it.
>>>
>>>> 3) We implement this with a device in QEMU and a certain level kernel
>>>> support.
>>>>
>>>> It seems possible to set or not ECA.28 , based on the type of kernel device:
>>>> - SIE interpretation -> MATRIX KVM device -> ECA.28
>>>> - Interception with VFIO and virtualization -> no ECA.28
>>>> - interception with emulation -> no ECA.28
>>>>
>>>> I understand the concern with the vCPU but I think we can handle it with
>>>> an indirect variable
>>>> like:
>>>>
>>>> SIE interpretation Device + KVM_S390_VM_CPU_FEAT_AP -> set the variable
>>>> ap_to_be_sie_interpreted=1
>>>> Then in vCPU initialization set ECA.28 based on this variable.
>>> That's exactly why we have the cpu feature interface. E.g. CMMA -> if
>>> not enabled, not interpreted by HW (however also not intercepted to user
>>> space - no sense in doing that right now).
>> There are two factors at play here, the device type (i.e., -device
>> vfio_ap) and
>> the KVM_S390_VM_CPU_FEAT_AP feature. Setting ECA_APIE makes no sense if the
>> vfio_ap device is not configured. For the passthrough implementation, this
>> means that the AP bus will successfully load on the guest, but there will
>> be no AP devices detected. If the expectation is that ap=on will allow
>> access
>> to AP devices on the guest, that would be a mistaken assumption.
>>
>> If down the road a new guest AP device is introduced that allows
>> multiplexing,
>> device remapping etc., then it will be necessary to intercept AP
>> instructions
>> executed on the guest. In this case, if ap=on results in setting ECA_APIE,
>> then the instructions will be interpreted and passed through to a device
>> that does not exist because it won't be defined in the guest's CRYCB.
> Again, see my other mail, this discussion is superfluous if we can't get
> vSIE to work with emulated devices. And it smells like this is the case.
> But I don't have access to documentation.
>
>> Based on these two scenarios, I think what we are really saying with ap=on
>> is that the guest will require use of the AP instructions installed on the
>> host. Whether those instructions are executed as a result of interpretation
>> by the hardware or because they are executed by the device driver is a
>> separate matter. So, I am inclined to agree with Pierre for that reason.
>> ECA_APIE should be set only if ap=on (i.e., AP instructions are available
>> on the host) and the user of those instructions (i.e., the driver) indicate
>> an intent to use them.
> ap=on -> set ECA_APIE is what I proposed.

True if we only support SIE interpretation, what you propose.
but
It is not what I meant.
What I mean is the reverse implication

ECA_APIE => ap=on

But you can have ap = on and ECA_APIE = off
This is interception or emulation.

and the second thing is that we need two QEMU cpu features
AP : guest API to say we provide AP instructions to the guest (what ever 
we do to provide it)
ECA_APIE : kernel will setup the SIE with interpretation

other said:
if( !ap)
     return -ENODEVICE
if(ECA_API)
     set_interpretation()
else
     set_interception()




-- 
Pierre Morel
Linux/KVM/QEMU in Böblingen - Germany

  reply	other threads:[~2018-03-07 10:10 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-02-27 15:44 [Qemu-devel] [PATCH v2 0/5] s390x: vfio-ap: guest dedicated crypto adapters Tony Krowiak
2018-02-27 15:44 ` [Qemu-devel] [PATCH v2 1/5] s390: doc: detailed specifications for AP virtualization Tony Krowiak
2018-02-27 15:44 ` [Qemu-devel] [PATCH v2 2/5] s390x/ap: base Adjunct Processor (AP) object Tony Krowiak
2018-02-27 15:44 ` [Qemu-devel] [PATCH v2 3/5] s390x/vfio: ap: VFIO: linux header updates Tony Krowiak
2018-02-27 15:44 ` [Qemu-devel] [PATCH v2 4/5] s390x/vfio: ap: Introduce VFIO AP device Tony Krowiak
2018-02-27 17:04   ` Cornelia Huck
2018-02-27 19:59     ` Tony Krowiak
2018-02-27 15:44 ` [Qemu-devel] [PATCH v2 5/5] s390x/cpumodel: Set up CPU model for AP device support Tony Krowiak
2018-02-27 16:27   ` Cornelia Huck
2018-02-27 16:49     ` Halil Pasic
2018-02-27 17:56       ` David Hildenbrand
2018-02-27 18:19       ` Tony Krowiak
2018-02-27 18:14     ` Tony Krowiak
2018-02-27 17:52   ` David Hildenbrand
2018-02-27 18:14     ` Halil Pasic
2018-02-28 10:30       ` David Hildenbrand
2018-02-27 18:55     ` Tony Krowiak
2018-02-28 10:26       ` David Hildenbrand
2018-02-28 11:40         ` Cornelia Huck
2018-03-01 14:12           ` Pierre Morel
2018-03-01 14:36             ` David Hildenbrand
2018-03-01 15:49               ` Halil Pasic
2018-03-02 19:36               ` Tony Krowiak
2018-03-05 21:22               ` Tony Krowiak
2018-03-06 17:15                 ` David Hildenbrand
2018-03-07 10:09                   ` Pierre Morel [this message]
2018-03-07 14:41                     ` Cornelia Huck
2018-03-07 16:40                       ` Pierre Morel
2018-03-08 14:05                       ` Tony Krowiak
2018-03-02 16:07             ` Tony Krowiak
2018-02-27 15:54 ` [Qemu-devel] [PATCH v2 0/5] s390x: vfio-ap: guest dedicated crypto adapters no-reply
2018-03-06 10:01 ` David Hildenbrand
2018-03-06 16:53   ` Pierre Morel
2018-03-06 17:10     ` David Hildenbrand
2018-03-07 10:22       ` Pierre Morel
2018-03-07 14:27         ` Christian Borntraeger

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=36825fd8-fb91-069a-01d7-520a97c743d9@linux.vnet.ibm.com \
    --to=pmorel@linux.vnet.ibm.com \
    --cc=agraf@suse.de \
    --cc=akrowiak@linux.vnet.ibm.com \
    --cc=alex.williamson@redhat.com \
    --cc=alifm@linux.vnet.ibm.com \
    --cc=berrange@redhat.com \
    --cc=bjsdjshi@linux.vnet.ibm.com \
    --cc=borntraeger@de.ibm.com \
    --cc=cohuck@redhat.com \
    --cc=david@redhat.com \
    --cc=eric.auger@redhat.com \
    --cc=eskultet@redhat.com \
    --cc=heiko.carstens@de.ibm.com \
    --cc=jjherne@linux.vnet.ibm.com \
    --cc=mjrosato@linux.vnet.ibm.com \
    --cc=pasic@linux.vnet.ibm.com \
    --cc=pbonzini@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-s390x@nongnu.org \
    --cc=rth@twiddle.net \
    --cc=schwidefsky@de.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).